|0.12.1||Dec 9, 2022|
|0.12.0||Aug 18, 2022|
|0.11.7||Aug 18, 2022|
|0.9.2||Jul 21, 2015|
#126 in Unix APIs
4,072 downloads per month
Used in 28 crates (27 directly)
Nice(r) access to
evdev is the Linux kernel's generic input interface, also implemented by other
kernels such as FreeBSD.
libevdev is a userspace
library written in c for interacting with this system in a high level way rather
ioctl system calls directly.
This crate is a re-implementation of
libevdev in rust. There is some trickery
involved, so please read the crate documentation.
There is also an alternative crate: evdev-rs
This crate provides functionality for reading streams of events from input devices.
libevdev, this crate also provides functionality for interacting with
Uinput is a kernel module which allows virtual input devices to be created from userspace.
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
*_no_sync this correction is not done, and
will appear if the kernel ring buffer is overrun before messages are read. I try to
closely, where possible.
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.
Plenty of nice examples of how to use this crate can be found in the examples directory of this repository. If you feel like an example of how to use a certain part of the evdev crate is missing, then feel free to open a pull request.
A good introduction is the evtest.rs example (which roughly corresponds to the userspace evtest tool.
Detailed release notes are available in this repository at CHANGELOG.md.