要发送字母“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。为什么?
输入的键码/usr/share/X11/xkb/keycodes/evdev是evtest+ 8 中的键码(参见MIN_KEYCODE)evdev.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。