4 个版本

0.11.6 2021 年 10 月 23 日
0.11.5 2021 年 10 月 23 日

#877Unix API

Apache-2.0 OR MIT

125KB
2.5K SLoC

evdev

Travis Crates.io

文档

evdev 设备的友好访问。

evdev 是什么?

evdev 是 Linux 内核的通用输入接口,也由其他内核如 FreeBSD 实现。

此包提供了对这些输入设备的访问。这里涉及一些技巧,请阅读包文档。

此库支持什么?

此库通过 Rust 的 Iterator 特性暴露原始 evdev 事件。当通过 fetch_events 处理事件时,库将通过注入假状态更新来处理 SYN_DROPPED 事件,试图确保调用者看到与实际设备状态一致的状态转换消息。当通过 *_no_sync 处理时,不会进行此纠正,并且如果内核环形缓冲区在读取消息之前被溢出,将出现 SYN_DROPPED 消息。在可能的情况下,我试图与 libevdev 保持一致。

尚不支持向设备写入(例如,打开 LED)。

没有为类似游戏手柄的设备提供抽象,该抽象允许将按钮编号映射到逻辑按钮,也没有计划提供。这种事情应该在更高级别的包中完成,可能支持多个平台。

示例

请参阅 <examples/evtest.rs> 以获取使用此库的示例(这大致对应于用户空间的 evtest 工具)。

依赖项

~3–11MB
~121K SLoC