在GNU/Linux中修改T9键盘映射
2021-05-24 更新:删除了以前用的键位映射的方法,因为旧方法是改变系统设置,单手键盘与电脑键盘上的键位一同改变。
新方法是只改变指定硬件的键位,也就是只改变T9单手键盘的键位,不会影响到电脑键盘。
在Xubuntu系统中,按 Ctrl+Alt+T 打开终端:
- 安装 evtest:
sudo apt install evtest
- 继续命令:
sudo evtest
,会看到所有设备的列表,“HID 0433:0004”就是T9单手键盘,这时输入它的编号。(HID的前面,每次都不同) 继续操作,在列出所有按键信息后,显示
Testing ...
,这时按T9单手键盘上需要改动的键位,就会列出按键的信息。按 F1、F3、F4、F6,按键信息为:
Event: time 1621842064.020258, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003a Event: time 1621842064.020258, type 1 (EV_KEY), code 59 (KEY_F1), value 0 Event: time 1621842064.020258, -------------- SYN_REPORT ------------ Event: time 1621842073.220187, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003c Event: time 1621842073.220187, type 1 (EV_KEY), code 61 (KEY_F3), value 0 Event: time 1621842073.220187, -------------- SYN_REPORT ------------ Event: time 1621842075.236176, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003d Event: time 1621842075.236176, type 1 (EV_KEY), code 62 (KEY_F4), value 0 Event: time 1621842075.236176, -------------- SYN_REPORT ------------ Event: time 1621842077.148162, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003f Event: time 1621842077.148162, type 1 (EV_KEY), code 64 (KEY_F6), value 0
但这时按T9单手键盘的 音量减VOL- 与 音量加VOL+ 按键时没有反映,因为这些键位在另一个HID中。
按 Ctrl+C 终止以上操作,再次使用命令sudo evtest
,输入“HID 0433:0004 Consumer Control”的编号。(HID的前面,每次都不同)
按 音量减VOL- 与 音量加VOL+,按键信息为:
Event: time 1621842580.201548, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea Event: time 1621842580.201548, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0 Event: time 1621842580.201548, -------------- SYN_REPORT ------------ Event: time 1621842583.329525, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: time 1621842583.329525, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
按 Ctrl+C 终止以上操作。
以上就是我们需要的键位信息,(EV_MSC), code 4 (MSC_SCAN), value 7003a
中的7003a
是需要使用的键位码号。
样式为:KEYBOARD_KEY_7003a,其他按键替换键位码号即可。
在列出的T9单手键盘的设备列表中可以看到设备的evdev:input
信息:
Input device ID: bus 0x3 vendor 0x433 product 0x4 version 0x111
Input device name: "HID 0433:0004"
使用的样式为:b0003v0433p0004e0111-e0*
,b0003、v0433、p0004、e0111:
0003
是USB键盘通用的数值,0433
与0004
就是Input device name
中的数值,0111
是Input device ID中的version值,x不需要填写
。
- 在终端中输入:
vi 99-mykeyboard.hwdb
,按回车键后,复制下方代码,然后在终端中按 MMB/鼠标中键 或 Shift+INS 进行粘贴:
evdev:input:b0003v0433p0004e0111-e0*
KEYBOARD_KEY_7003a=enter
KEYBOARD_KEY_7003c=minus
KEYBOARD_KEY_7003d=kpplus
KEYBOARD_KEY_7003f=backspace
KEYBOARD_KEY_c00ea=btn_right
KEYBOARD_KEY_c00e9=btn_middle
按 Esc,按 :(Shift+;)、输入 wq 再按 Enter,完成操作。
KEYBOARD_KEY_7003a=enter
的意思是将 F1 改为Enter/回车键,enter
等键位的名字可以在终端中列出的信息中搜到,需要使用小写。
- 继续命令:
sudo cp 99-mykeyboard.hwdb /etc/udev/hwdb.d
与sudo systemd-hwdb update && sudo udevadm control --reload && sudo udevadm trigger
现在T9单手键盘的键鼠位映射已经完成,并实时生效,不需要重启系统,修改也不会影响到电脑键盘~太酷了!
参考/Reference:https://github.com/DIGImend/digimend-kernel-drivers/issues/474