1 个不稳定版本
0.1.0 | 2024 年 5 月 26 日 |
---|
#351 在 硬件支持
17KB
278 行
hid-feature
hid-feature 是一个命令行工具,用于显示和更改 HID 设备上的特性报告。
这是对来自 hid-tools 的 hid-feature 的 Rust 重新实现
此工具需要读取和写入 /dev/hidraw
节点的权限,通常这意味着需要以 root 身份运行。
用法
使用 list-devices
查找设备的 hidraw 节点
$ hid-feature list-devices
Available HID devices:
/dev/hidraw5 - Logitech USB Receiver
/dev/hidraw0 - Yubico YubiKey OTP+FIDO+CCID
/dev/hidraw1 - Yubico YubiKey OTP+FIDO+CCID
/dev/hidraw2 - Microsoft Microsoft Optical Mouse with Tilt Wheel
然后查看设备的 HID 特性和它们的当前值
$ hid-feature list /dev/hidraw2
Report ┃ Usage ┃ Bits ┃ Bit Range ┃ Value Range ┃ Count ┃ Value ┃ Bytes
━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━
23 │ Vendor Defined Page 0xFF00 / Vendor Usage 0xff06 │ 2 │ 8..=9 │ 0..=1 │ 1 │ 1 │ 01
23 │ Vendor Defined Page 0xFF00 / Vendor Usage 0xff04 │ 1 │ 12..=12 │ 0..=1 │ 1 │ 0 │ 01
24 │ Vendor Defined Page 0xFF00 / Vendor Usage 0xff08 │ 1 │ 8..=8 │ 0..=1 │ 1 │ -1 │ 01
18 │ Generic Desktop / Resolution Multiplier │ 2 │ 8..=9 │ 0..=1 │ 1 │ 1 │ 01
在这个例子中,我们可以看到特性报告 18 在位 8 和 9 上有一个 2 位值,它是分辨率乘数(用于高分辨率滚轮滚动)。它设置为逻辑值 1。
让我们将其设置为 0 以获得此设备上的笨拙滚动!
要设置特性报告中的给定字节,设置十六进制值或使用 xx
保持设置不变。
$ hid-feature set /dev/hidraw2 --report-id=18 xx 00
在这个例子中,ID 为 18 的报告的第二字节设置为值 0x01
,所有其他值保持不变。
请注意,如果一个字节由多个不同的用法组成,则调用者负责将字节组合为正确的值。例如,在特性报告 23 中,我们可以看到位 8+9 和位 12 上有两个供应商定义的用法。
# Set bits 8/9 and bit 12 to 1
$ hid-feature set /dev/hidraw2 --report-id=23 xx 11
# Set only bits 8/9 but not bit 12
$ hid-feature set /dev/hidraw2 --report-id=23 xx 01
# Set only bit 12 but not bits 8/9
$ hid-feature set /dev/hidraw2 --report-id=23 xx 10
为了简化这一点,该字段占用的字节值以十六进制值的形式打印在 list
输出的 Bytes
标题下(01
)
例如
24 │ Vendor Defined Page 0xFF00 / Vendor Usage 0xff08 │ 16 │ 8..=23 │ 0..=65535 │ 1 │ 43828 │ ab 34
依赖关系
~2-10MB
~99K SLoC