/ dev /输入键盘格式

Eri*_*icR 6 keyboard input-devices

我一直在玩我的键盘设备捕获输入:

/dev/input/by-path/platform-i8042-serio-0-event-kbd 
Run Code Online (Sandbox Code Playgroud)

对我来说,我想知道是否有任何关于它返回的规范,使用

od -tx1 /dev/input/by-path/platform-i8042-serio-0-event-kbd 
Run Code Online (Sandbox Code Playgroud)

听 我很好奇主要是由于某些键的行为; meta,arrow keys,numpad forward slash.

0520300 ac 9d 86 4c 6b 0f 04 00 04 00  04  00 (db) 00 00 00
0520320 ac 9d 86 4c 8c 0f 04 00 01 00 (7d) 00  00 00 00 00
0520340 ac 9d 86 4c 95 0f 04 00 00 00  00  00  00 00 00 00
Run Code Online (Sandbox Code Playgroud)

到目前为止我看过的其他每个键都有括号中的两个字节作为匹配值,这有什么特别的原因吗?

tuo*_*nen 13

/dev/input/by-path/platform-i8042-serio-0-event-kbd只是/dev/input/eventX事件设备文件的符号链接.可以从事件设备文件中读取数据

struct input_event {
    struct timeval time;
    __u16 type;
    __u16 code;
    __s32 value;
};
Run Code Online (Sandbox Code Playgroud)

定义于/usr/include/linux/input.h.

可能的值以type前缀为前缀EV_.可能的code依赖值type.他们前缀KEY_BTN_REL_或等等.可能的值value取决于typecode.例如,按键事件value等于1和键释放事件0.

您可以使用以下方法检查事件数

evtest /dev/input/eventX
Run Code Online (Sandbox Code Playgroud)

X键盘(或任何其他事件设备)的事件设备编号在哪里.一个按键或释放正常发出三个事件(EV_MSC,EV_KEYEV_SYN).