我正在尝试跟随本指南使用 Logitech G600。我(使用 Windows 计算机)将鼠标上的每个组合键映射到普通键盘上的某个组合。我在 /etc/udev/hwdb.d/ 中设置了一些规则,将扫描码映射到一些扩展键码(发现这里)。所有这些都工作正常,除了 X 无法识别大于 255 的键码。因此,该行
KEYBOARD_KEY_7001d=zenkakuhankaku
导致鼠标按钮吐出键码 400(通过 showkey)并且 xev 根本无法识别该键。
我还尝试运行xmodmap -pke | grep "= XF86"
以显示应该可用的小于 255 的键码,但无法弄清楚如何将扫描码映射到这些键码(即将KEYBOARD_KEY_7001d=XF86Explorer
键映射到“z”)。
有没有办法将扫描码直接映射到数字键码(在 hwdb 文件中 - 我不想将发出字母“a”的所有内容映射到 XF86Calculator)?
是否有其他方法可以将扫描代码映射到未使用的 XF86 代码之一?
答案1
好的,这就是我最终所做的。我从 /usr/include/linux/input.h 中提取了实际的键名称。有一个部分定义了键码名称,如下所示:
#define KEY_RIGHTMETA 126
#define KEY_COMPOSE 127
#define KEY_STOP 128 /* AC Stop */
#define KEY_AGAIN 129
#define KEY_PROPS 130 /* AC Properties */
我使用 KEY_xxx 中的小写 xxx(例如“compose”、“stop”等)作为键名。我选择了看起来不会真正在其他地方使用的东西(例如 KEY_LEFTCTRL)。
然后,就像链接的文章建议的那样,我曾经xbindkeys -km
获取适当的键码编号并使用 xbindkeys 来映射它们。