Caps Lock 是一個我們很少用的鍵,偏偏它擺在鍵盤的黃金位置,實在是大大的浪費,在 Mac 上可以使用 Caps Lock 來作為中英切換鍵,我認為是很好的設計,以下教學將介紹如何用指令列來設定 Fcitx 使用 Caps Lock 來切換輸入法。

事實上 Fcitx 可以使用任何鍵作為輸入法切換鍵,然而因為 Caps Lock 有著切換大小寫的功能,如果不將此功能關閉,輸入法會發生異常——中文切到英文後變成大寫,因此我們要利用 xmodmap 工具來將 Caps_Lock 鍵指向到不會使用到的 Multi_key,再將 Fcitx 切換鍵對應到 Multi_key。

我們先查詢一下 Caps_Lock 對應到的 keycode 是多少。

$ xmodmap -pke | grep Caps_Lock
keycode  66 = Caps_Lock NoSymbol Caps_Lock

可以看到鍵盤上的 Caps_Lock 對應到的是 66 這個 keycode,那我們接下來就是要將 66 改成對應到 Multi_key。

$ xmodmap -pke > ~/.Xmodmap		#將設定存為檔案
$ vim ~/.Xmodmap
# 將 keycode 66 處改為
keycode  66 = Multi_key NoSymbol Multi_key
# 在最底下加入
clear lock
$ xmodmap ~/.Xmodmap					#載入設定檔

根據 ArchLinux wiki,~/.Xmodmap 會自動被 GDM、XDM、LightDM 載入,如果是使用其他的請自行設定。

最後我們再開啟 fcitx config,將輸入法切換鍵設定為我們設定好的 Multi_key。建議保險多設定一組切換鍵,避免設定失敗卡在中文回不去。

參考資料

ArchLinux wiki: Xmodmap

Changing your caps lock into Ctrl in X

操作環境: Lubuntu 19.04