macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法

macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法

在 macOS 下,默認的英文輸入法 ABC 是不能刪除的。它不能像 Windows 下那樣,只要有一個搜狗輸入法,然後在它內部切換中英文就夠了。macOS 就不得不涉及如何在兩個輸入法之間做切換了。系統默認的切換快捷鍵是 Command + Space(空格)。但使用這個快捷鍵並不太好,因為很多編程用的 IDE 會用到這個快捷鍵,比如像 Visual Studio Code 裡的智能提示(IntelliSense)。所以,我一般使用 CapsLock 來作為輸入法切換鍵——因為它使用的頻率低、離手近按鍵快。

macOS Mojave 下使用系統自帶支持

可喜的是,在最新版的 macOS Mojave 下,已經默認支持了。


macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法


勾選後,只要按一下 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 即可。


macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法


最後,我們還要去修改下系統裡的切換輸入法的快捷鍵(默認是 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 的一些限制——配置複雜,且也不太穩定。

搜狗輸入法配置

除了系統層面快捷鍵的修改,搜狗輸入法還要做一些調整。

  1. 按鍵配置裡,中英文狀態切換改為“禁用快捷鍵”。因為我們不需要用搜狗輸入法的英文輸入模式了。
  2. 按鍵配置裡,把當前輸入態提示改為“無提示”。避免在按 CapsLock 切換時,還在桌面右上角提示大寫狀態。


macOS 下使用 CapsLock 鍵切換 ABC 與搜狗輸入法


拒絕生活的慣性,挖掘那些被我們習以為常的工具


分享到:


相關文章: