Linux 三个 Shift 键的键盘配置 (xkb)

Linux keyboard config (xkb) for three Shift keys

我正在寻找一种方法来为给定的键扫描代码定义一个额外的 Shift 键。所以我最终会得到不变的左右 shift,加上一个额外的 shift 键,它可以在任何现有键上定义(假设我知道它的扫码)。

在 xkb/keycodes 中,我看到 shift 键码定义为:

<LFSH>
<RTSH>

但如果我要在这里添加第三个条目,我不知道我会告诉 xkb 它也被视为 Shift 键。

(这与问题无关,但如果您想知道,用例是针对某些具有拆分 spacebar 的键盘,我想在其中设置一个空格键的一半是额外的Shift).

想知道为此我需要什么样的 xkb 配置吗?

如果您将键码重命名为 keysym Shift_L,然后将 Shift_L 添加回去,也许您可​​以使用 xmodmap 来完成此操作 进入修饰符贴图。例如键码 110:

xmodmap -e 'keycode 110 = Shift_L Shift_L Shift_L Shift_L'
xmodmap -e 'add shift = Shift_L Shift_R'

通过查看 xmodmap -pke 或使用 xev 或类似的方法找到键码。

我现在找到了一种方法,可以直接在 xkb 配置中实现上述功能,而无需使用 xmodmap。

第一步: 在 xkb/symbols/pc 文件中,请注意以下内容已定义:

key <LFSH> {    [ Shift_L       ]   };
key <RTSH> {    [ Shift_R       ]   };

那么,为 MDSH 添加新的密钥定义需要什么(即 "mid shift"):

key <MDSH> {    [ Shift_L       ]   };

第二步:将这些键分配给键码。在xkb/keycodes/evdev中,已经定义了左右移位:

<LFSH> = 50;
<RTSH> = 62;

所以剩下的就是为 MDSH 添加额外的定义:

<MDSH> = XXX;

其中 XXX 是您要分配的键码。