我在尝试设置 udev hwdb 以将 KEY_PRESENTATION 重新映射到与 xmodmap 兼容的内容时陷入困境

我在尝试设置 udev hwdb 以将 KEY_PRESENTATION 重新映射到与 xmodmap 兼容的内容时陷入困境

所以我有一台 Acer Nitro 笔记本电脑,我在运行 cinnamon DE 时安装了 debian bookworm。这款笔记本电脑的数字键盘旁有一个特殊的“Nitro Sense”键。当你在 Windows 中按下这个键时,acer 的臃肿会在整个机器上传播,但在 Linux 上它会发送键码 425(KEY_PRESENTATION)。

我想要这个键打开一个终端,所以我尝试进行 xmodmap 配置,但似乎只有 0-255 之间的键码可以在那里工作。我知道这一点是因为/usr/share/X11/xkb/keycodes/evdev这里定义了:

// Key codes below cannot be used in X
<I433> = 433;           // #define KEY_PRESENTATION        425

所以现在我尝试使用 udev 将 KEY_PRESENTATION 重新映射到 4 个 KEY_PROG 键之一,但运气不太好。

我正在创建一个新文件,/etc/udev/hwdb.d/99-acer-nitro-nitrosense-key-remap.hwdb其中包含以下内容:

evdev:input:b0011v0001p0001eAB41*
 KEYBOARD_KEY_f5=prog3

我根据设备的总线类型、产品、供应商和版本的输出构建了输入:

$ ls /sys/class/input/event0/device/id
bustype  product  vendor  version

$ cat /sys/class/input/event0/device/id/* 
0011 
0001 
0001 
ab41

然后,我运行这些命令,更新 initramfs,然后重新启动计算机:

systemd-hwdb update 
(i have also tried running: udevadm hwdb --update)

udevadm trigger /dev/input/event0

但重新启动机器后,当我运行时,udevadm info /sys/class/input/event0我看到这一行KEYBOARD_KEY_f5=演示文稿代替KEYBOARD_KEY_f5=prog3

我在用KEYBOARD_KEY_f5因为当我运行 evtest 时,当我按下按键时,我会得到以下输出:

Event: time 1675476830.534080, -------------- SYN_REPORT ------------
Event: time 1675476831.052993, type 4 (EV_MSC), code 4 (MSC_SCAN), value f5
Event: time 1675476831.052993, type 1 (EV_KEY), code 425 (KEY_PRESENTATION), value 1
Event: time 1675476831.052993, -------------- SYN_REPORT ------------
Event: time 1675476831.166335, type 4 (EV_MSC), code 4 (MSC_SCAN), value f5
Event: time 1675476831.166335, type 1 (EV_KEY), code 425 (KEY_PRESENTATION), value 0
Event: time 1675476831.166335, -------------- SYN_REPORT ------------

我不知道下一步该尝试什么。任何帮助将不胜感激。

答案1

您的键盘可能算作 AT 键盘,而不是 USB 键盘(请运行sudo evemu-describe以确保)。只需编写一条适用于任何 AT 键盘的规则:

evdev:atkbd:*
 KEYBOARD_KEY_f5=prog3

相关内容