Add `sendEvent` signal to `UserThread` class for debugging.
Add `EventScheduler` class for functional testing.
Use `deleteLater` method to destroy `QWidget` instead.
Add unit tests for keyboard and mouse input.