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 是您要分配的键码。
我正在寻找一种方法来为给定的键扫描代码定义一个额外的 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 是您要分配的键码。