XKB:为一种行为分配多个键码()

XKB:为一种行为分配多个键码()

我有一个新的蓝牙键盘,由于某种原因,转义键返回的键码是 172 而不是 1(根据“showkey”;相同的代码在 xkb 中添加了 8,因此是 180 而不是 9)。依照指示这个答案我能够重新映射 ESC 以使用键码 180 而不是 9,所以这很好,但是我似乎不能执行两次,即写

    <ESC> = 9;
    <ESC> = 180;

在这种情况下,只有后一种设置有效。这是次优的,因为它会破坏内置键盘上的按键。所以我可以让其中之一正常工作,但不能两者都正常工作。

对此,正确的做法是什么?

答案1

据我了解,您必须经历两个级别的映射。在里面键码映射<>您可以为键盘生成的数字扫描代码指定“任意”名称(内部最多 4 个字符),然后在符号映射你说这个键名是如何起作用的。所以你需要有

<ESC> = 9;
<ESC2> = 180;

然后是一个xkb_symbols条目

 key <ESC2>  {  [ Escape        ]   };

但是,对于有 2 个键盘的情况,您实际上应该简单地为每个键盘设置不同的布局,而不是制作兼容的键盘。用于xinput -list获取键盘的 ID,以及每次运行的 IDsetxkbmap -device id ...和指定特定键盘的型号、布局、变体和选项的其他参数。

答案2

根据不可靠的 XKB 配置指南,你可以用别名。该功能用于xkb/aliases,所以你应该能够做类似的事情

alias <ESC> = 9;
alias <ESC> = 180;

相关内容