将 Caps Lock 重新映射到 Ctrl-b

mah*_*off 8 keyboard shortcut-keys tmux xkb

如何在终端中使用 xkb 或其他一些工具将 Caps Lock 永久绑定到ctrl+ b

(这是Caps Lock为 tmux制作默认前缀键。如果太困难,它也可以映射到特定键,例如功能键,然后可以将其设为 tmux 前缀。)

qui*_*tic 7

XKB 将适用于 Xwindows 或 Wayland GUI。它不会影响虚拟控制台,但 GUI 终端模拟器会很好。对于 XKB 背景,我将向您指出一些(概述、系统与用户) ..其他(自定义选项) ..答案(自定义规则)

下面将允许您caps:myf13使用您通常使用的任何工具(setxkbmaplocalectl设置、GNOME 面板等)向现有 XKB 布局添加新选项。


定义选项

现有的 XKB 大写锁定选项列在/usr/share/X11/xkb/rules/evdev.lst. 查看.../rules/evdev文件中对应的选项,可以看到这些选项都是从文件中加载的.../symbols/capslock。它们都是修饰键,这可能不是最好的例子,但caps:backspace可能是一个很好的比较。查看文件,我们找到了定义此选项的节:

hidden partial modifier_keys
xkb_symbols "backspace" {
    key <CAPS> { [ BackSpace ] };
};
Run Code Online (Sandbox Code Playgroud)

grep通过其他符号文件,我们可以看到 F13 符号只是F13. 新选项节可能如下所示:

hidden partial modifier_keys
xkb_symbols "myf13" {
    key <CAPS> { [ F13 ] };
};
Run Code Online (Sandbox Code Playgroud)

如您所见,我们只更改了选项的名称和分配给键的符号。


连接起来

唯一剩下要做的就是连接新的节。在基本的 Xwindows 系统上,使用setxkbmap和等命令行工具xkbcomp自定义用户位置就可以了;对于 GNOME、KDE ​​或 Wayland 系统,您需要在系统 XKB 数据库中进行更改。

作为系统更改的示例(您将需要sudo访问权限才能创建或编辑这些文件):

  • 将自定义节放在一个新的符号文件中,例如/usr/share/X11/xkb/symbols/mycaps.

  • 将此添加到/usr/share/X11/xkb/rules/evdev以下行的正下方caps:backspace

      caps:myf13   =   +mycaps(myf13)
    
    Run Code Online (Sandbox Code Playgroud)
  • ... 添加到/usr/share/X11/xkb/rules/evdev.lst

      caps:myf13      Caps Lock is F13
    
    Run Code Online (Sandbox Code Playgroud)
  • ... 添加到/usr/share/X11/xkb/rules/evdev.xml

          <option>
            <configItem>
              <name>caps:myf13</name>
              <description>Caps Lock is F13</description>
            </configItem>
          </option>
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后,备份您的.../rules/evdev*文件,或创建补丁文件。每当xkb-data更新包时,您的更改都将被覆盖。如果您将修改节保存到.../symbols/capslock文件中,则还需要对其进行备份。

进行这些更改后,您应该能够像设置任何其他 XKB 选项一样设置此选项。您可能需要重新启动任何 GNOME/KDE 会话,以便控制面板获取更改,但类似的工具setxkbmap应该会立即找到它:setxkbmap -option caps:myf13