8 个版本
0.2.5 | 2022 年 7 月 24 日 |
---|---|
0.2.4 | 2021 年 12 月 5 日 |
0.2.3 | 2021 年 6 月 15 日 |
0.2.2 | 2021 年 4 月 4 日 |
0.0.1 | 2017 年 9 月 2 日 |
1198 在 硬件支持 中排名
每月 3,145 次下载
用于 15 个 Crates(直接使用 2 个)
325KB
9K SLoC
包含 (神秘的 autoconf 代码,5KB) libevdev/configure.ac
evdev-rs
libevdev 的 Rust 封装
# Cargo.toml
[dependencies]
evdev-rs = "0.6.1"
要启用序列化支持,请启用功能 "serde"
# Cargo.toml
[dependencies]
evdev-rs = { version = "0.6.1", features = ["serde"] }
使用较新的 libevdev 版本(>= 1.10)启用功能 libevdev-1-10
以允许禁用属性。它还扩展了 Enable
特性到 InputProp
,使您可以使用 enable()
、disable()
和 has()
对 InputProp
进行操作。
为什么需要一个 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
生成。