4 个版本
0.11.6 | 2021 年 10 月 23 日 |
---|---|
0.11.5 | 2021 年 10 月 23 日 |
#877 在 Unix API 中
125KB
2.5K SLoC
evdev
对 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