通过更改udev的规则实现敲击a键获得s的输出
安装evtest
首先安装evtest检测键盘的扫描码
1 | # apt install evtest |
选择device的数字后,敲击a键可以得到一下信息:
1 | Event: time 1521361797.053598, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1e |
结果进行了简化,第一个SYN_REPORT代表a键按下,第二个SYN_REPORT代表a键松开,其中可以得到a的扫描码为1e
修改udev
使用编辑器编辑udev规则
1 | # sudo vim /lib/udev/hwdb.d/60-keyboard.hwdb |
在文件最后添加以下几行
1 | evdev:input:b0011v0001p0001* |
第一行为一系列规则代表匹配的设备,其中evdev:input:代表输入设备,后面为一些ID,在evtest中输入device的数字之后会有一行输出为
1 | Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab41 |
其中’b0011’,’v000v’,’p0001’分别与bus,vendor,product对应,’*’代表了之后的通配符号
第二行为对设备的映射,行首需要空格否则无效,KEYBOARD_KEY_后跟扫描码,=号右为键值
更新udev
使用以下命令更新,需要将event3换为自己输入的数字
1 | sudo udevadm hwdb --update && sudo udevadm trigger /dev/input/event3 |