Skip to main content

Crate denise_evdev

Crate denise_evdev 

Source
Expand description

Linux evdev input for Denise.

Reads mice, touchscreens and keyboards straight from /dev/input/event*, with no display server in the way.

§Testing

translate and keymap are platform-independent and unit tested everywhere. That is not tidiness: multitouch slot tracking, frame batching and modifier state are the parts that break, and each one is far easier to pin down as a table of raw event codes than by dragging a finger across a panel and guessing. Only device discovery and reading are gated to Linux.

§Permissions

Reading /dev/input/event* needs membership in the input group, or root. Being able to read every keystroke on the machine is exactly as sensitive as it sounds, which is why the group exists.

§Blocking

[InputBackend::poll] never blocks: it drains whatever is ready and returns. A frame loop that wants to sleep should wait on InputBackend::raw_fds together with the DRM device’s descriptor, so the process idles in the kernel until either input arrives or the display retires a flip — rather than spinning to ask.

Re-exports§

pub use keymap::key_code;
pub use translate::AbsAxis;
pub use translate::MAX_SLOTS;
pub use translate::RawEvent;
pub use translate::Translator;
pub use console::Console;
pub use console::ConsoleError;

Modules§

codes
The subset of linux/input-event-codes.h this backend needs.
console
Muting the kernel’s virtual terminal.
keymap
evdev key codes to KeyCode positions.
layout
Key positions to characters: layouts, dead keys and composition.
translate
Turning raw evdev events into InputEvents.

Structs§

Capabilities
What a device can report.
InputBackend
Every usable input device, read together.
InputDevice
One open input device, with its own translation state.

Enums§

EvdevError
Something went wrong reading input devices.