No description
Find a file
Sean Young ed4245c380
Support autorepeats and getting keymap entries (#46)
* Support getting and setting auto repeat settings

Signed-off-by: Sean Young <sean@mess.org>

* Retrieving and updating keymap entries

Signed-off-by: Sean Young <sean@mess.org>

* Add missing keycodes and missing aliases

The aliases are #defines in input-event-codes.h.

Signed-off-by: Sean Young <sean@mess.org>
2021-07-20 10:40:49 -06:00
examples Add support for virtual uinput devices (#37) 2021-03-19 09:19:51 -06:00
src Support autorepeats and getting keymap entries (#46) 2021-07-20 10:40:49 -06:00
.gitignore Update dependencies and fix cross-compatibility issues (#24) 2021-02-20 19:09:39 -07:00
.travis.yml Add GH_TOKEN 2015-07-21 08:07:36 -04:00
Cargo.toml Release 0.11.0 2021-04-01 11:08:19 -06:00
README.md Separate out sane blocking and async (nonblocking) implementations (#33) 2021-03-01 10:09:11 -07:00

evdev

Travis Crates.io

Documentation

Nice(r) access to evdev devices.

What is evdev?

evdev is the Linux kernel's generic input interface, also implemented by other kernels such as FreeBSD.

This crate exposes access to these sorts of input devices. There is some trickery involved, so please read the crate documentation.

What does this library support?

This library exposes raw evdev events, but uses the Rust Iterator trait to do so. When processing events via fetch_events, the library will handle SYN_DROPPED events by injecting fake state updates in an attempt to ensure callers see state transition messages consistent with actual device state. When processing via *_no_sync this correction is not done, and SYN_DROPPED messages will appear if the kernel ring buffer is overrun before messages are read. I try to match libevdev closely, where possible.

Writing to devices is not yet supported (eg, turning LEDs on).

There is no abstraction for gamepad-like devices that allows mapping button numbers to logical buttons, nor is one planned. Such a thing should take place in a higher-level crate, likely supporting multiple platforms.

Example

See <examples/evtest.rs> for an example of using this library (which roughly corresponds to the userspace evtest tool.