Move indicators out of display driver, generalized overlays #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The original key modifier overlays were implemented via ioctl calls that modified global state in the display driver, with hardcoded indicator icons. Notably, this caused crashes when modifier keys were pressed while entering or exiting X11. To fix this, and support a wider range of screen overlays, I changed the ioctl system to use Linux's DRM display ioctl subsystem, and expanded the overlay interface. Now, the keyboard driver is responsible for setting its own modifier overlays.
With the new screen overlay system, it is now possible to implement the symbol key overlay, to display which symbols are produced by a given Sym+key combination. A utility to parse the X11 keymap, render the symbols, and display them using the new screen overlay system is triggered by holding the Sym key.