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

qtw*_*trt 6 remapping ubuntu

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

Ctrl+Capslock => Capslock
Alt+Capslock => Escape (since my Escape key is broken)
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用 Xmodmap。

我只有以下几点:

keycode 66 = NoSymbol Caps_Lock
Run Code Online (Sandbox Code Playgroud)

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

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

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

Den*_*nis 2

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

修改键行为的基本语法是

xmodmap -e "keycode  KEYCODE = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
xmodmap -e "keysym KEYSYMBOL = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
Run Code Online (Sandbox Code Playgroud)

在哪里

  • KEYSYMBOL2在按下 的同时按下该键时会触发Shift
  • KEYSYMBOL3在按下 的同时按下该键时会触发ModeSwitch
  • KEYSYMBOL4Shift当按下+的同时按下该键时会触发ModeSwitch
  • KEYSYMBOL1当按下没有上述情况的按键时会被触发。
  • ModeSwitch默认情况下AltGr(仅适用于某些键盘布局)。

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

不过,我们可以CapsLock把关键变成ModeSwitch

xmodmap -e "keysym Caps_Lock = Mode_switch Mode_switch"
Run Code Online (Sandbox Code Playgroud)

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

xmodmap -e "keysym Control_L = Control_L Control_L Caps_Lock"
xmodmap -e "keysym Control_R = Control_R Control_R Caps_Lock"
Run Code Online (Sandbox Code Playgroud)

注意CapsLock这里是修饰键,所以你必须先按这个键。

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

其他所有键都可以正常工作。例子:

尖端:

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

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

    setxkbmap
    
    Run Code Online (Sandbox Code Playgroud)