我写了一个文件/etc/udev/hwdb.d/70-keyboard.hwdb
来重新映射我的一些键盘键。我想重新映射一个附加键,但我不知道应该使用什么标识符。
通常,我运行evtest
并按下键盘键以获得如下输出:
Event: time 1639158329.532434, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7000f
Event: time 1639158329.532434, type 1 (EV_KEY), code 38 (KEY_L), value 1
然后我使用上面第一行中的十六进制“值”(包含“EV_MSC”)在我的70-keyboard.hwdb
文件中组成如下一行:
KEYBOARD_KEY_7000f=rightctrl
我现在要重新映射的键是我的KEY_KBDILLUMDOWN
键,当我运行evtest
识别它的十六进制值时,我只得到一行输出,而不是包含“EV_MSC”的行:
Event: time 1639158417.741165, type 1 (EV_KEY), code 229 (KEY_KBDILLUMDOWN), value 1
如何在 udev 中重新映射此键?
也许这个按键事件是由 ACPI 驱动程序注入的(而不是真正的按键事件),在这种情况下,您可以通过 acpid 处理它。尝试 acpi_listen(在 acpid 运行时)。事件处理程序位于正在调用处理程序的 /etc/acpi/events/ 中(默认位于 /etc/acpi/ 中)。
如果是这种情况,您可以编写一个简单的 evdev 包装脚本来生成按键事件作为 acpi 事件的处理程序。有关示例,请参见此处。