背景:我买了 Microsoft Natural Ergonomic Keyboard 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
。例如,对于应该是密钥的密钥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
重新启动了笔记本电脑。
问题:未将相应功能分配给相应的键。
答案1
那一个
xev
是关键符号keysym
,这里是想法:/键盘/ →
scancode
→ /输入驱动程序/ →keycode
→ /X 服务器 XKB/ →keysym
man xev
说:軍- 打印内容X事件因此,您要查找的是键盘的早期硬件数据,即
scancode
。可以使用以下方法找到它evtest
man 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
答案2
我使用以下信息在 Ubuntu 20.04 中得到了一个可用的外接键盘https://www.foell.org/justin/remapping-keyboard-keys-in-ubuntu-with-udev-evdev/
- 用于
sudo evtest
查找有关键盘的信息,例如:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
Input device name: "Keychron K6 Keyboard"
- 用于
sudo evemu-describe
查找键盘的属性,包括前导零。在输出中,您可以找到类似以下内容:
# Properties:
N: Keychron K6 Keyboard
I: 0005 05ac 024f 011b
- 像你之前那样创建 .hwdb 文件,但是包括所有前导 000, 和将任何十六进制符号改为大写喜欢:
# Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
# evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
evdev:input:b0005v05ACp024F*
- 您不必重新启动系统,只需执行以下操作:
$ sudo systemd-hwdb update
$ sudo udevadm trigger
- 你可以使用以下方法检查你的键盘是否已正确映射
$ udevadm info /dev/input/event20
(将 event20 替换为你的键盘事件)