如果单独按下和释放,如何将 Ctrl 重新映射到 Escape

psv*_*svm 7 keyboard xmodmap xmonad key-binding

我想重新映射 Control,以便:

  1. 如果在没有其他键的情况下按下和释放它,它将充当 Esc
  2. 如果它与另一个键一起按下并保持在一起,它的作用就像Ctrl(在这种情况下行为没有变化)。

我知道如何重新映射某些键或设备?,所以我怀疑它可能是用 xmodmap 完成的。但该答案并没有解释如何映射修饰键。我查看了 xmodmap 联机帮助页的示例和语法部分,但他们没有解释。Remapping Caps Lock to Control and 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'
Run Code Online (Sandbox Code Playgroud)

有了这个,当我Left Ctrl单独按下键时,我会得到 Escape ,但是要获得Ctrl+A我必须按 Left Ctrl两次键:Ctrl, Ctrl+ A(而不仅仅是Ctrl+ A) - 不知道为什么我需要按两次。