在 Ubuntu 上重新映射 Ctrl+Capslock 和 Alt+Capslock

在 Ubuntu 上重新映射 Ctrl+Capslock 和 Alt+Capslock

我正在尝试禁用 Capslock 并进行以下重新映射:

Ctrl+Capslock => Capslock
Alt+Capslock => Escape (since my Escape key is broken)

现在我正在尝试使用 Xmodmap。

我只有以下内容:

keycode 66 = NoSymbol Caps_Lock

这会禁用 Capslock 并将 Shift+Capslock 映射到 Capslock,但我想要的是 Ctrl+Capslock 而不是 Shift+Capslock。

我不知道如何将 Alt+Capslock 映射到 Escape 键。

我想澄清一下,我不需要答案来使用 Xmodmap,任何方法都可以。

答案1

Xmodmap 无法满足您的要求,但是它可以接近您的要求。

修改键行为的基本语法是

xmodmap -e "keycode  KEYCODE = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
xmodmap -e "keysym KEYSYMBOL = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"

在哪里

  • KEYSYMBOL2按下 的同时按下 键时触发Shift
  • KEYSYMBOL3按下 的同时按下 键时触发ModeSwitch
  • KEYSYMBOL4Shift在按下+ 的同时按下 键时触发ModeSwitch
  • KEYSYMBOL1当按下不包含上述任何一项的键时会被触发。
  • ModeSwitchAltGr默认的(仅适用于某些键盘布局)。

我们不能将CtrlAlt设置为ModeSwitch键,因为没有键可以充当两个不同的修饰键。

然而,我们变成CapsLock钥匙ModeSwitch

xmodmap -e "keysym Caps_Lock = Mode_switch Mode_switch"

要将CapsLock+重新映射CtrlCapsLock键,请执行以下命令。

xmodmap -e "keysym Control_L = Control_L Control_L Caps_Lock"
xmodmap -e "keysym Control_R = Control_R Control_R Caps_Lock"

注意CapsLock这里的是修饰键,因此您必须先按下此键。

我们不能以相同的方式将CapsLock+AltCapsLock+重新映射Super到,因为和在单独按下时和用作修饰键时具有不同的功能。EscapeAltSuper

所有其他键均可正常工作。示例:

  • 对于CapsLock+ `(标准美国布局),使用

    xmodmap -e "keysym grave = grave asciitilde Escape"
    
  • 对于CapsLock+ Space,使用

    xmodmap -e "keysym space = KP_Space KP_Space Escape"
    

尖端:

  • .gnomerc为了使重新映射永久生效,请在主文件夹中创建/编辑文件并在其中保存相应的命令。

  • 要撤消所有重新映射,只需执行

    setxkbmap
    

相关内容