Where the inputs of the system come together.
driver --(node)--> inputd (one per device) --> libinput --> reader (dmview, ...)
| Module | What it is |
|---|---|
libinput |
The library: devices, the translation of keys into characters (a keymap), one queue of all the events for every reader. |
inputd |
The service, one instance per input device, started by a libsystemd rule for the input class dmdevfs reports. It is the thread of its device: it calls libinput_run() with the path of the node, and libinput does the rest. |
A driver reports raw events (which key went down or up, the state of a touch panel) and nothing of what they mean. libinput interprets them and mixes the devices into one stream; a reader only asks for events and gets each with its source (touch, keyboard, buttons, mouse).
See docs/libinput.md for the API and the rules of the queues, docs/keymap.md for the layouts of keyboards (one per kind of keyboard, named by its driver) and the languages.
- Touch is passed through as the state the driver gives (
LIBINPUT_EVENT_STATE): how it is turned into events is still to be decided. - Auto-repeat of a held key.
- Gestures are not recognised here: touch is passed through as the raw state, dmview turns it into scrolling and taps. Mouse acceleration.