Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
三个Shift键的Linux键盘配置(xkb)_Linux_Keyboard_Shift - Fatal编程技术网

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

三个Shift键的Linux键盘配置(xkb),linux,keyboard,shift,Linux,Keyboard,Shift,我正在寻找一种方法,为给定的键扫描代码定义一个额外的Shift键。因此,我最终将使用不变的左、右移位,加上一个额外的移位键,该键可以在任何现有键上定义(假设我知道它的扫描代码) 在xkb/keycodes中,我看到了为以下各项定义的shift keycodes: <LFSH> <RTSH> 但是如果我要在这里添加第三个条目,我不知道我会告诉xkb它也被认为是一个Shift键 (这与问题无关,但如果您想知道,该用例适用于一些带有拆分空格键的键盘,我想将空格键的一半设置

我正在寻找一种方法,为给定的键扫描代码定义一个额外的Shift键。因此,我最终将使用不变的左、右移位,加上一个额外的移位键,该键可以在任何现有键上定义(假设我知道它的扫描代码)

在xkb/keycodes中,我看到了为以下各项定义的shift keycodes:

<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交互,所以这是另一个有趣的信息片段。