udev更改按键映射

北城余情 提交于 2020-02-05 10:01:32

通过更改udev的规则实现敲击a键获得s的输出

安装evtest


  首先安装evtest检测键盘的扫描码

123456789
# apt install evtest# sudo evtestNo device specified, trying to scan all of /dev/input/event*Available devices:/dev/input/event0:	Power Button/dev/input/event1:	Lid Switch/dev/input/event2:	Power Button/dev/input/event3:	AT Translated Set 2 keyboardSelect the device event number [0-3]:

选择device的数字后,敲击a键可以得到一下信息:

123456
Event: time 1521361797.053598, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1eEvent: time 1521361797.053598, type 1 (EV_KEY), code 30 (KEY_A), value 1Event: time 1521361797.053598, SYN_REPORTaEvent: time 1521361797.148844, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1eEvent: time 1521361797.148844, type 1 (EV_KEY), code 30 (KEY_A), value 0Event 大专栏  udev更改按键映射: time 1521361797.148844, SYN_REPORT

  结果进行了简化,第一个SYN_REPORT代表a键按下,第二个SYN_REPORT代表a键松开,其中可以得到a的扫描码为1e

修改udev


  使用编辑器编辑udev规则

1
# sudo vim /lib/udev/hwdb.d/60-keyboard.hwdb

在文件最后添加以下几行

12
evdev:input:b0011v0001p0001* KEYBOARD_KEY_1e=a

  第一行为一系列规则代表匹配的设备,其中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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!