Mac重度用户应该都知道自带输入法很早的时候就可以支持capslock
切换输入法了。而且它的实现方式也很贴心,并不会完全覆盖capslock
原本的作用。长按依然可以切换大小写。
作为一个键盘重度用户,大小写切换确实是完全用不上的。因为经常使用capslock
切换大小写的人,肯定是时不时的会忘记当下的键盘是大写还是小写。用shift
反而是更优的方案。这就导致了如果不用capslock
切换输入法,这个home row上位置极佳的按键就几乎没用了。
之前想着重新映射capslock
让他作为输入法切换。但看了看xmodmap
的映射修改方式就觉得麻烦。映射的脚本可读性太差,基本不可能记住。所以一直懒得弄。而昨天网上发现了用setxkbmap
的方法,才发现原来xserver已经默认提供了映射修改方案了。
首先这些方案可以在/usr/share/X11/xkb/rules/base.xml
和localectl list-x11-keymap-options
里面看到。不同的是在那个xml文件里面还可以看到修改方案的描述。
-
/usr/share/X11/xkb/rules/base.xml
:
<name>caps:swapescape</name>
<description>Swap ESC and Caps Lock</description>
<name>caps:escape</name>
<description>Make Caps Lock an additional Esc</description>
<name>caps:backspace</name>
<description>Make Caps Lock an additional Backspace</description>
<name>caps:super</name>
<description>Make Caps Lock an additional Super</description>
<name>caps:hyper</name>
<description>Make Caps Lock an additional Hyper</description>
<name>caps:menu</name>
<description>Make Caps Lock an additional Menu key</description>
<name>caps:numlock</name>
<description>Make Caps Lock an additional Num Lock</description>
-
localectl list-x11-keymap-options
:
caps:backspace
caps:capslock
caps:ctrl_modifier
caps:escape
caps:hyper
caps:internal
caps:internal_nocancel
caps:menu
caps:none
caps:numlock
caps:shift
caps:shift_nocancel
caps:shiftlock
接下去,只需要用setxkbmap -option 方案名
就可以采用这个方案。我使用的是caps:numlock
。毕竟数字键盘笔记本几乎没有,即使有除了银行职员和会计也不太用的上。现在很多机械键盘也都不出带数字键盘得了。
最后,只需要在fcitx
的global setting
里面修改快捷键即可。
但这样做重启后或推出登录后就无效了。如果需要它persist,把这条命令丢到.xinitrc
里面去,放在启动桌面环境语句的前面即可。
当然了,除了这种方法,还有别的更加灵活的方案。比如直接利用fcitx
的ipc接口,将fcitx-remote
命令在你所使用的窗口管理器或者桌面环境的设置里绑定到某个快捷键上即可。这样还可以绑各式各样的组合键。当然了,还是上面那种简单,而且是适用于xorg全局的。