我有一个Thinkpad新x1碳。联想用Home / End组合取代了Caps Lock。 我的问题是:如何将Home或End功能设为Ctrl。 (我使用emacs,所以我在旧笔记本电脑上交换了Caps Lock和Ctrl)
抱歉我的英语不好。 : - (
==========更新=========
我尝试过xmodmap来做但却失败了。
使用xev查找密钥代码:
keycode 110(keysym 0xff50,Home)
keycode 115(keysym 0xff57,End)
使用xmodmap更改密钥
xmodmap -e" keycode 110 = Control_L"
xmodmap -e" keycode 115 = Control_L"
xmodmap -pke查看映射
keycode 110 = Control_L NoSymbol Control_L
keycode 115 = Control_L NoSymbol Control_L
似乎没问题,但我根本不能将它们用作ctrl。
答案 0 :(得分:1)
我使用 xkbcomp 来做到这一点。
首先将您当前的布局转储到一个文件中(您可能会在某个地方找到查找,但转储该文件应该没问题):
xkbcomp $DISPLAY /tmp/baselayout.txt
(请注意,在此之前,如果我是你,我会确保重新启动X / Linux,以防你已经搞乱xmodmap,否则我认为你可能会将你的布局转储到"奇怪的"州)
然后打开 baselayout.txt (当然你可以给它另一个名字)并找到与LCTL对应的行:
key <LCTL> { [ Control_L ] };
然后从此处更改与END键对应的行:
key <END> { [ End ] };
对此:
key <END> { [ Control_L ] };
然后寻找行:
modifier_map Control { <LCTL> };
并添加一行:
modifier_map Control { <END> };
现在加载修改后的布局文件:
xkbcomp /tmp/baselayout.txt $DISPLAY
然后,您可以使用&#34; xmodmap -pm&#34; 来检查修改器。例如在我的设置上,但是你的&#34; END变成了CTRL&#34;修改(btw家庭/结束你的笔记本电脑有趣的位置):
$ xmodmap -pm
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_L (0x42), Control_R (0x69), Control_L (0x73)
...
注意0x73(十进制115)/ Control_L 是一个控件。 xev 代码在我的系统中为 END 提供了代码。
请注意,不得弄乱$ DISPLAY变量的位置,而一定不能忘记它。否则会发生不好的事情(比如无声失败)。
另请注意,我收到了您提到的警告:但是正如我上面所描述的那样,使用 xkbcomp (以及 xmodmap 来打印修改器,而不是配置任何东西) END作为控制键。