0

要发送字母“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。为什么?

4

1 回答 1

4

键码 in/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。根据常见的美国 ASCII 键帽标签为键代码分配了名称。关键代码在 中定义/usr/include/linux/input-event-codes.h。举个例子#define KEY_A 30

于 2018-11-30T05:21:02.473 回答