通过udev / hwdb.d自定义键映射不起作用
背景 :我得到了微软自然人体工学键盘4000,并且Ubuntu下的几个键根本不能工作,例如F1-F10键。 我的机器上运行了Ubuntu 14.04.2 LTS。
我的解决方案 :我创建了文件/etc/udev/hwdb.d/61-keyboard-local.hwdb
并设置了自定义规则:
keyboard:usb:v045ep00db* KEYBOARD_KEY_0x1008ff27=pageup KEYBOARD_KEY_0x1008ff26=pagedown KEYBOARD_KEY_0xff6a=F1 KEYBOARD_KEY_0x1008ff6b=F5
我通过xev
得到了hex代码。 例如,对于应该是F1键的键, xev
返回
KeyRelease event, serial 37, synthetic NO, window 0x4400001, root 0xa2, subw 0x0, time 1746028, (12,-12), root:(61,40), state 0x10, keycode 146 (keysym 0xff6a, Help), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
更改文件后,我运行了udevadm hwdb --update
和udevadm trigger
,另外,重新启动了我的笔记本电脑。
问题 :相应的function未分配给相应的键。
-
来自
xev
是关键符号keysym
,这里的想法是:/ keyboard /→
scancode
→/ input driver /→keycode
→/ X server XKB /→keysym
man xev
说: xev – 打印X事件的内容 -
所以,你要找的是键盘的早期硬件数据,即
scancode
。 它可以使用evtest
找到man evtest
evtest – 输入设备事件监视器和查询工具-
安装它
sudo apt-get install evtest
-
跑
sudo evtest
产量
Event: time 1435906588.943349, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3b Event: time 1435906588.943349, type 1 (EV_KEY), code 59 (KEY_F1), value 1
扫描码是
3b
-