三个Shift键的Linux键盘配置(xkb)
我正在寻找一种方法,为给定的键扫描代码定义一个额外的Shift键。因此,我最终将使用不变的左、右移位,加上一个额外的移位键,该键可以在任何现有键上定义(假设我知道它的扫描代码) 在xkb/keycodes中,我看到了为以下各项定义的shift keycodes:三个Shift键的Linux键盘配置(xkb),linux,keyboard,shift,Linux,Keyboard,Shift,我正在寻找一种方法,为给定的键扫描代码定义一个额外的Shift键。因此,我最终将使用不变的左、右移位,加上一个额外的移位键,该键可以在任何现有键上定义(假设我知道它的扫描代码) 在xkb/keycodes中,我看到了为以下各项定义的shift keycodes: <LFSH> <RTSH> 但是如果我要在这里添加第三个条目,我不知道我会告诉xkb它也被认为是一个Shift键 (这与问题无关,但如果您想知道,该用例适用于一些带有拆分空格键的键盘,我想将空格键的一半设置
<LFSH>
<RTSH>
但是如果我要在这里添加第三个条目,我不知道我会告诉xkb它也被认为是一个Shift键
(这与问题无关,但如果您想知道,该用例适用于一些带有拆分空格键的键盘,我想将空格键的一半设置为额外移位)
对我需要什么样的xkb配置感兴趣吗?如果您将keycode重命名为keysym Shift\u L,并将Shift\u 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 ] };
<LFSH> = 50;
<RTSH> = 62;
键{[Shift_L]};
键{[Shift_R]};
那么,为MDSH添加新的键定义(即“中班”)需要什么
键{[Shift_L]};
第二步:将这些钥匙分配给钥匙代码。在xkb/keycodes/evdev中,已经定义了左移位和右移位:
key <LFSH> { [ Shift_L ] };
key <RTSH> { [ Shift_R ] };
<LFSH> = 50;
<RTSH> = 62;
=50;
= 62;
因此,还需要为MDSH添加一个额外的定义:
<MDSH> = XXX;
=XXX;
其中XXX是您要分配的密钥码。是的,这有效。如果可以在xkb中完成,那就太好了,但这仍然是一个可以接受的解决方案。我会注意到,只有第一行是必要的,让它为我工作;第二行似乎没有其他效果。@Steve很高兴知道。我不完全清楚xmodmap如何与xkb交互,所以这是另一个有趣的信息片段。