如何在Linux上将Home / Endfunction设置为Ctrl

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

对不起我英文不好。 🙁

在这里输入图像描述

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

我尝试了xmodmap来做到这一点,但失败了。

  1. 使用xevfind键码:

    键码110(键盘0xff50,首页)

    键码115(keysym 0xff57,结束)

  2. 使用xmodmap来更改密钥

    xmodmap -e“keycode 110 = Control_L”

    xmodmap -e“keycode 115 = Control_L”

  3. xmodmap -pke查看映射

    键码110 = Control_L NoSymbol Control_L

    键码115 = Control_L NoSymbol Control_L

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

我会使用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 

然后你可以使用“xmodmap -pm”来检查你的修饰符。 例如,在我的设置,但与您的“END成为CTRL”修改(顺便说一句,你的笔记本电脑有家/结束的位置):

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