#evdev #bindings #libevdev #wrapper #high #level #evdev-rs

sys evdev-sys

对 libevdev 的原生绑定,在 evdev crate 中提供了高级 Rust 绑定

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硬件支持 中排名

Download history 797/week @ 2024-03-14 652/week @ 2024-03-21 566/week @ 2024-03-28 782/week @ 2024-04-04 912/week @ 2024-04-11 891/week @ 2024-04-18 765/week @ 2024-04-25 737/week @ 2024-05-02 695/week @ 2024-05-09 912/week @ 2024-05-16 723/week @ 2024-05-23 731/week @ 2024-05-30 677/week @ 2024-06-06 687/week @ 2024-06-13 992/week @ 2024-06-20 627/week @ 2024-06-27

每月 3,145 次下载
用于 15 个 Crates(直接使用 2 个)

MIT/Apache

325KB
9K SLoC

C 8K SLoC // 0.0% comments Rust 353 SLoC // 0.0% comments Python 275 SLoC // 0.1% comments Automake 196 SLoC // 0.0% comments M4 192 SLoC // 0.2% comments Shell 108 SLoC // 0.2% comments JavaScript 65 SLoC // 0.3% comments

包含 (神秘的 autoconf 代码,5KB) libevdev/configure.ac

evdev-rs

Build Status Latest Version Documentation

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 生成。

依赖项