如果 Ctrl 键被按下并自动释放,如何将其重新映射到 Escape 键

如果 Ctrl 键被按下并自动释放,如何将其重新映射到 Escape 键

我想重新映射控制,以便:

  1. 如果按下并释放该键且没有其他键,则它的作用是 Esc
  2. 如果将其与另一个键一起按下并按住,则其作用如同Ctrl(在这种情况下行为没有变化)。

我知道如何重新映射某些键或设备?,所以我怀疑可以用 xmodmap 来完成。但那个答案没有解释如何映射修饰键。我查看了 xmodmap 手册页的示例和语法部分,但它们没有解释这一点。将 Caps Lock 重新映射到 Control 和 Escape(非常规方式)提到无法对 执行此操作Caps Lock,因为它是一个 Lock 键,但我希望可以使用 Control(mod 键)执行此操作。使用与 xmodmap 不同的解决方案也将被接受。(我在 Ubuntu 12.04 中运行 Xmonad,所以也许有办法在 xmonad.hs 中设置它?)

编辑:我能得到的最接近的答案是:

xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Escape'
xmodmap -e 'add Control = Escape'

这样,当我Left Ctrl单独按下键时,我就可以得到 Esc 键,但是为了得到Ctrl+ ,A我必须按 Left Ctrl两次键:CtrlCtrl+ A(而不仅仅是Ctrl+ A)——不确定为什么我需要按两次。

答案1

答案2

这可以通过 来完成xmodmap,但请注意,如果您已经使用 设置了一些内容setxkbmap,后者程序将覆盖并清除xmodmap设置。

但是,要执行您想要的操作xmodmap,您可以输入

xmodmap -e "keysym Control_L control = Escape Control_L" 

现在,如果您查看xmodmap -pm,会发现 Esc 已添加到控制修饰符中。这意味着当按下左控制键时,结果将是 Esc,但当用另一个键按下控制键时(如Ctrl+ C),它仍将给出与以前相同的结果。

通过在终端中输入进行测试man xmodmap,然后在查看手册页时按 ctrl,它将回显“esc”,但是当您按Ctrl+时Z,它将暂停页面。

如果您希望重置您的实验xmodmap,注销并再次登录,并且如果您想将上述xmodmap命令设置为启动项,请参阅我的回答:

相关内容