将Caps Lock重新映射到Ctrl-b

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

(这是为了使Caps Lock成为tmux的默认前缀键。如果太难了,它也可以映射到特定的键,例如一个function键,然后可以将其作为tmux前缀。)

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

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


定义选项

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

 hidden partial modifier_keys xkb_symbols "backspace" { key  { [ BackSpace ] }; }; 

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

 hidden partial modifier_keys xkb_symbols "myf13" { key  { [ F13 ] }; }; 

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


把它挂起来

唯一要做的就是连接新节。 在基本的Xwindows系统上,使用命令行工具(如setxkbmapxkbcomp , 自定义用户位置可以正常运行; 对于GNOME,KDE或Wayland系统,您需要在系统XKB数据库中进行更改。

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

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

  • 将其添加到/usr/share/X11/xkb/rules/evdev正好位于caps:backspace下方caps:backspace

      caps:myf13 = +mycaps(myf13) 
  • …添加到/usr/share/X11/xkb/rules/evdev.lst

      caps:myf13 Caps Lock is F13 
  • …添加到/usr/share/X11/xkb/rules/evdev.xml

       
  • 最后,备份您的.../rules/evdev*文件,或创建补丁文件。 每当更新xkb-data软件包时,您的更改都将被覆盖。 如果您将修改节保存到.../symbols/capslock文件中,则还需要备份它。

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