The DeviceEventController code of the registryd is in severe need of a Re-factoring.
The device event controller has the following functionality.
1. Converting and forwarding X events on to AT's
2. Registering Keystroke listeners and delivering keystrokes from applications to AT's
- This requires taking KeyGrabs using X, and keeping track of the KeyGrabs.
3. Polling for mouse movement events and forwarding them on to AT's
4. Providing a D-Bus interface to clients for all its functionality.
All of these complicated features are implemented inside one 3000 line file, deviceventcontroller.c. It is almost impossible to see what is going on, and in the future, when we may wish to make changes to the keystroke delivery, we will run in-to great difficulty.