如何在Linux上将Home / End功能设置为Ctrl

时间:2014-06-09 09:16:26

标签: linux emacs

我有一个Thinkpad新x1碳。联想用Home / End组合取代了Caps Lock。 我的问题是:如何将Home或End功能设为Ctrl。 (我使用emacs,所以我在旧笔记本电脑上交换了Caps Lock和Ctrl)

抱歉我的英语不好。 : - (

enter image description here

==========更新=========

我尝试过xmodmap来做但却失败了。

  1. 使用xev查找密钥代码:

      

    keycode 110(keysym 0xff50,Home)

         

    keycode 115(keysym 0xff57,End)

  2. 使用xmodmap更改密钥

      

    xmodmap -e" keycode 110 = Control_L"

         

    xmodmap -e" keycode 115 = Control_L"

  3. xmodmap -pke查看映射

      

    keycode 110 = Control_L NoSymbol Control_L

         

    keycode 115 = Control_L NoSymbol Control_L

    似乎没问题,但我根本不能将它们用作ctrl。

1 个答案:

答案 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作为控制键。