macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法
在 macOS 下,默認的英文輸入法 ABC 是不能刪除的。它不能像 Windows 下那樣,只要有一個搜狗輸入法,然後在它內部切換中英文就夠了。macOS 就不得不涉及如何在兩個輸入法之間做切換了。系統默認的切換快捷鍵是 Command + Space(空格)。但使用這個快捷鍵並不太好,因為很多編程用的 IDE 會用到這個快捷鍵,比如像 Visual Studio Code 裡的智能提示(IntelliSense)。所以,我一般使用 CapsLock 來作為輸入法切換鍵——因為它使用的頻率低、離手近按鍵快。
macOS Mojave 下使用系統自帶支持
可喜的是,在最新版的 macOS Mojave 下,已經默認支持了。
勾選後,只要按一下 CapsLock 就能在 ABC 和搜狗之間切換。而且長按就能激活大寫——當然一般要輸入大寫,我感覺更方便地還是用左右 Shift 來輸入,除非是要輸入一長串大寫字母(如全局變量)。
那麼在 macOS High Sierra 和之前的版本里,該如何達到上述效果呢?有的同學可能有疑問,既然最新版已經實現了,為什麼要講舊版本呢?因為並不是所有人都願意或立馬升級到最新版。最新版在剛出來時,可能會有一些軟件兼容性問題。比如這兩天我就遇到了一個 VirtualBox 無法啟動 macOS 虛擬機的問題。所以,對那些還留在舊版本的同學,我們還是有辦法實現上述目標的,而且還是免費的,不用花錢、不用破解。關鍵就是 Karabiner Elements 這個軟件。
macOS High Sierra 以下使用 Karabiner Elements 實現
Karabiner Elements 是一款免費、開源的鍵盤定製化工具。可以通過 Homebrew 或前往官網(https://pqrs.org/osx/karabiner/)下載安裝包進行安裝。它可以自定義規則來修改按鍵定義,十分方便。這裡我們的目標是改寫 CapsLock 鍵——當單獨按下 CapsLock 實體鍵,發送一個不佔用任何按鍵的 F17;而當按下 fn + CapsLock 時,才是切換為大寫狀態。規則很簡單,就是一個 JSON 配置:
{ "title": "Using caps_lock to switch input source, see https://blog.kiliwalk.com/macos-capslock-switch-input-source/", "author": "kiliwalk([email protected])", "homepage": "https://blog.kiliwalk.com", "manual": "https://blog.kiliwalk.com/macos-capslock-switch-input-source/", "import_url": "karabiner://karabiner/assets/complex_modifications/import?url=https://blog.kiliwalk.com/images/caps_lock_switch_input_source.json", "rules": [ { "description": "Pressing caps_lock sends f17, pressing fn + caps_lock sends caps_lock", "manipulators": [ { "from": { "key_code": "caps_lock" }, "to": [ { "key_code": "f17" } ], "type": "basic" }, { "from": { "key_code": "caps_lock", "modifiers": { "mandatory": [ "fn" ] } }, "to": [ { "key_code": "caps_lock" } ], "type": "basic" } ] } ] }
首先要導入以上規則。有兩種方法,一種是將以上內容保存為一個 JSON 文件(比如 caps_lock.json),然後複製到 ~/.config/karabiner/assets/complex_modifications 目錄下。還有就是直接使用 Safari 或 Chrome 瀏覽器,打開這個網址:karabiner://karabiner/assets/complex_modifications/import?url=https://blog.kiliwalk.com/images/caps_lock_switch_input_source_v3.json,它會詢問你是否啟動 Karabiner Elements,確定後,就可以了。
接下來我們要應用這個規則。進入 Karabiner Elements Preferences -> Complex Modifications -> Rules,點擊左下角的 Add rule,找到 Using caps_lock to switch input source... 這條規則,點擊 Enable All 即可。
最後,我們還要去修改下系統裡的切換輸入法的快捷鍵(默認是 Command + Space)。前往 System Preferences -> Keyboard -> Shortcuts -> Input Sources,選中 Select the previous input source(選擇上一個輸入法),點擊右側的按鍵區域,然後按下 CapsLock 實體鍵,此時上屏的是 F17。同時取消勾選 Select the next source in input menu(選擇“輸入法”菜單中的下一個輸入法)。
這樣,當我們按下 CapsLock 後,就能在搜狗和 ABC 之間進行切換了。如果需要大寫,按下 fn + CapsLock 就可以。這裡之所以不是用長按 CapsLock 進入大寫,是 Karabiner Elements 的一些限制——配置複雜,且也不太穩定。
搜狗輸入法配置
除了系統層面快捷鍵的修改,搜狗輸入法還要做一些調整。
- 按鍵配置裡,中英文狀態切換改為“禁用快捷鍵”。因為我們不需要用搜狗輸入法的英文輸入模式了。
- 按鍵配置裡,把當前輸入態提示改為“無提示”。避免在按 CapsLock 切換時,還在桌面右上角提示大寫狀態。
關鍵字: CapsLock 搜狗 VirtualBox