HID 扫描代码如何映射到 evdev 代码?

Igo*_*nko 2 hid evdev

要发送字母“a”,HID 设备会发送以下扫描代码:00 00 04 00 00 00 00 00

与字符“a”对应的值是<AC01>(在 中找到/usr/share/X11/xkb/symbols/us)。根据/usr/share/X11/xkb/keycodes/evdev<AC01>通过按钮代码映射到38(这是我们必须从设备获取的)。

evtest /dev/input/event#显示代码30。为什么?

Igo*_*nko 7

输入的键码/usr/share/X11/xkb/keycodes/evdevevtest+ 8 中的键码(参见MIN_KEYCODEevdev.c

这是查找与给定键码相对应的扫描码的方法:

https://source.android.com/devices/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07

注意:除了键码之外,还使用扫描码,原因如下:

Linux 内部事件子系统定义了一组独立于硬件的标准按键代码,能够表示来自任何类型键盘(无论是 AT、XT 还是 USB)的任何扫描代码。根据常见的 US ASCII 键帽标签为键代码指定了名称。关键代码定义在/usr/include/linux/input-event-codes.h. 举个例子#define KEY_A 30