9个版本 (breaking)
0.6.1 | 2022年10月22日 |
---|---|
0.6.0 | 2022年7月24日 |
0.5.0 | 2021年4月5日 |
0.4.0 | 2020年4月26日 |
0.0.1 | 2017年9月2日 |
#240 in 硬件支持
每月3,141次下载
用于 13 crate
495KB
13K SLoC
evdev-rs
libevdev的Rust封装
# Cargo.toml
[dependencies]
evdev-rs = "0.6.1"
要启用序列化支持,请启用功能 "serde"
# Cargo.toml
[dependencies]
evdev-rs = { version = "0.6.1", features = ["serde"] }
With a newer libevdev version (>= 1.10) enable the feature `libevdev-1-10` to
allow disabling a property. It also extends the `Enable` trait to `InputProp`,
enabling the use of `enable()`, `disable()` and `has()` for `InputProp` as well.
为什么需要一个libevdev封装?
evdev协议很简单,但有些行为很奇特。libevdev可以透明地处理其中的一些奇特性。
evdev crate是libevdev在Rust中的实现,提供了大部分相同的功能。
evdev-rs
crate紧密遵循libevdev,因此享有libevdev的所有复杂处理。libevdev透明地处理的一些事情,可能在evdev
crate中也可能不在
- 处理虚拟多点触控设备
- 槽位和每个槽位状态的同步
- 在SYN_DROPPED后透明地生成缺失的跟踪ID
- 在请求无效数据时进行各种边界检查,并返回定义的错误代码(例如,设备上不存在的设备事件代码)
- 在相同上下文中进行fd交换
- 基于上下文启用/禁用事件,这样您就可以禁用/启用ABS_FOO,然后不必关心客户端代码中的奇特性。
开发
src/enums.rs
可以通过运行./tools/make-enums.sh
来生成。
依赖关系
~120–590KB
~13K SLoC