[Mac] macOS 中英文輸入切換 & 設定成跟 Windows 一樣用 Shift 切換教學

Last Updated on 2023-12-06 by OneJar

不同 OS 平台間本來就很多操作習慣不一樣。像好幾年來我都是在 macOS 環境進行開發,在 macOS 上切換中英文輸入,快捷鍵我習慣用 Caps Lock 鍵 (或稱「中/英」鍵) ;有時切換到 Windows 上打字想切換大小寫時,也容易習慣性按成 Caps Lock 鍵。

之前因為在 Windows 只做少量簡單文書工作,不會頻繁在 macOS 和 Windows 間切換,影響不大,一時按錯就重按就好,幾分鐘後就會適應該 OS 的習慣。

但最近由於一些軟體工具的限制,有些開發只能在 Windows 進行,我變得比較頻繁在 macOS 和 Windows 間切換做不同開發,太常按錯中英切換快捷鍵這件事開始讓我感到困擾,影響到效率。

於是開始研究怎麼讓 macOS 的中英切換快捷鍵能和 Windows 一致,也就是用 Shift 鍵切換,盡量讓我可以在兩邊平台維持同樣的打字習慣。

先說結論:要想 macOS 能用 Shift 單一顆鍵就切換中英文,純內建無法,需要裝別的軟體輔助,不過動作並不難。

macOS 和 Widnows 切換中英的原理不一樣

先簡單介紹一下 macOS 和 Widnows 的輸入法管理方式其實不一樣。

Windows 是「同一個輸入法底下,還有分中英文模式」,例如下圖分別是中文和英文模式,通常透過按 Shift 鍵切換,但輸入法其實都是微軟注音,這也就是大部分人在 Windows 上所謂的中英切換。


而 macOS 上沒有分什麼中文模式、英文模式,切換中英實際上就是切換「ABC」和「注音」這兩種不同的輸入法。

以下整理 macOS 上切換輸入法常見的做法。

切換方法 1: macOS 內建的組合快捷鍵

  • control + 空白鍵:切回上一次用的輸入法,在 ABC 和注音兩種輸入法間無限循環,效果就類似中英切換。
  • option + command + 空白鍵:按順序切換下一個輸入法。

舉例來說,我的 mac 有安裝三種輸入法:ABC、注音、嘸蝦米。

  • 連續按 control + 空白鍵,效果是:ABC -> 注音 -> ABC -> 注音
  • 連續按 option + command + 空白鍵,效果是:ABC -> 注音 -> 嘸蝦米 -> ABC

如果不喜歡內建的組合鍵,也可以自行修改:

切換方法 2: 內建「中/英」鍵或 Caps Lock 鍵一鍵切換

類似 Windows 的 Shift,只是 macOS 是用 Caps Lock,優點是不用按多個組合鍵,只要一個鍵更方便。

要當前輸入法是 ABC 或注音才有效。

這是 macOS 內建功能,需要開啟設定。

macOS 12.x Monterey 以前的設定方式:「系統偏好設定」 -> 點「鍵盤」 -> 選「輸入方式」tab -> 勾選「使用『中/英』鍵來切換『美國』及目前輸入方式」

新的 macOS 13.x Ventura 介面風格改很大,設定的路徑如下圖:

切換方法 3: 透過選單列上的語言圖示來切換

最單純的方法。

如果你的選單沒有出現圖示,可以透過以下設定開啟:「系統偏好設定」 -> 點「鍵盤」 -> 選「輸入方式」tab -> 勾選「在選單列中顯示輸入法選單」

切換方法 4: 安裝 Karabiner-Elements 軟體設定 Shift 一鍵切換

由於 Shift 鍵在 macOS 有特別地位,是用來跟其他鍵搭配作熱鍵組合,無法單獨設定為熱鍵,因此需要靠第三方軟體達到目的。

Karabiner-Elements 是一個強大的 macOS 上鍵盤客製化軟體,網路上搜尋 macOS 按鍵客製化,應該有 8 成文章都會提到Karabiner-Elements。

Karabiner-Elements 支援最新的 macOS 13.x Ventura。

注意!這個方法需要你的 macOS 組合快捷鍵沒有改,仍是內建的「control + 空白鍵」,修改快捷鍵的地方可以參考上面方法 1

下面教學怎麼安裝設定:

step 1: 安裝

依照個人習慣,可以選擇以下方式安裝:

  1. Karabiner-Elements 官網 下載 dmg 檔安裝
  2. 用 homebrew 安裝
$ brew install cask karabiner-elements

安裝完後會看到多了兩個圖示:

  • Karabiner-Elements: 主要工具,客製化鍵盤設定。
  • Karabiner-EventViewer: 有趣的附帶工具,可以觀察按壓按鍵的電腦反應。

step 2: 啟動 Karabiner-Elements & 允許權限

第一次啟動時,應該會跳出下列各種視窗要求權限:

Karabiner-Elements 也會跳出一個畫面,指示去打開權限:

這裡需要去兩個地方允許權限:

  1. 系統偏好設定 -> 安全性與隱私權 -> 一般 tab

底下會看到 Karabiner 的權限要求,點右邊的允許按鈕:

  1. 系統偏好設定 -> 安全性與隱私權 -> 隱私權 tab

左邊清單找到「輸入監控」,右邊將 Karabiner 相關的三個項目進行勾選:

step 3: 設定 Shift 一鍵切換的規則

這裡我們會增加一個 Karabiner 自訂規則,方法是到對應的資料夾底下新增一個 json 文字檔。

以下示範的是 terminal 方式操作,會使用到指令 vi 作為編輯器。

如果你不習慣用 terminal 操作,可以用任何你習慣的文字編輯器編輯,參考這個教學影片:How to create your own CUSTOM complex modifications in Karabiner-elements – YouTube

或是參考本文最底下的附錄,示範不用 terminal,用內建 Finder 和 TextEdit 操作新增 JSON 檔的方法

透過 terminal 輸入指令移動到指定資料夾,新增一個 json 檔案,檔名任意取,例如這裡取「remapRShift.json」:

$ cd ~/.config/karabiner/assets/complex_modifications
$ vi remapRShift.json

指令簡易說明:

  • cd: change directory ,也就是移動到指定資料夾位置。
  • vi: 一種指令式的文字編輯器,進入到 vi 編輯畫面後,輸入 i 表示進入編輯模式;編輯完按 esc 結束編輯模式;儲存檔案輸入 : + wq + enter

直接複製以下內容,貼到這個 json 檔裡:

{
  "title": "R_Shift to Ctrl+Space",
  "rules": [
    {
      "description": "Change R_Shift to control + space to switch EN/ZH",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "right_shift",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "to": [
            {
              "key_code": "right_shift",
              "lazy": true
            }
          ],
          "to_if_alone": [
            {
              "key_code": "spacebar",
              "modifiers": [
                "left_control"
              ]
            }
          ]
        }
      ]
    }
  ]
}

新增完 json 檔後,回到 Karabiner-Elements 介面,左邊選單選「Complex Modifications」,點「Add rule」按鈕:

會看到多了一個「R_Shift to Ctrl+Space」規則,就是我們剛剛設定的,點「Enable」按鈕:

到這裡就大功告成,在 macOS 上單點 Shift 鍵就能切換輸入法。

背後原理,其實是 Karabiner-Elements 幫你把 Shift 鍵 mapping 到 control + 空白這個組合鍵,達到觸發中英切換效果。

補充一提,這個 rule 是改編自官網現成有個「Right Shift to Cmd+Space if alone (to redefine language switch to right shift)」rule,這個 mapping rule 的切換流暢度我覺得很好,只差在我需要的是 control + space 而非 command + space,所以稍做改版。

(不建議) 舊做法:匯入既有的 Shift 一鍵切換 rule 設定

2023.04.15 updated: 這是舊的作法,匯入一個官網上既有的 「Change shift key (rev 2)」rule 範本,但用一陣子後,個人覺得有以下缺點:

  1. 切換速度不夠快,會頓一下
  2. 很容易誤觸發長按 caps lock 的效果,變成維持大寫而非切換輸入法,打字節奏非常不順

建議使用新作法

左邊選單選「Complex Modifications」,點「Add rule」按鈕:

一開始只有預設的範例,沒有其他規則。點下面的「import more rules」按鈕:

會自動幫你打開瀏覽器前往一個網頁 Karabiner-Elements complex_modifications rules,裡面有各式各樣客製化按鍵的設定規則可以下載。搜尋找到「Change shift key (rev 2)」這一個規則,點右邊的 import 進行下載:

網頁會將你導回 Karabiner-Elements 程式:

回到 Karabiner-Elements 程式,確認匯入剛剛的規則:

回到剛剛的畫面,會看到多了剛剛匯入的「Change shift key (rev 2)」。對前兩個規則點 Enable 按鈕:

到這裡就大功告成,在 macOS 上單點 Shift 鍵就能切換輸入法,效果和 Caps Lock 鍵一樣。

背後原理,其實是 Karabiner-Elements 幫你把 Shift 鍵 mapping 到 Caps Lock 鍵,去觸發原本 Caps Lock 鍵的中英切換效果。

由於中間多了一層轉換,仔細觀察其實可以發現,按 Shift 鍵的切換速度會頓一下,不像直接按 Caps Lock 鍵那樣瞬間切換,密集連續按的時候會更明顯。

結論

透過 Karabiner-Elements 設定讓中英文切換的熱鍵在 macOS 和 Windows 能一致,新的 rule 設定我使用了一個多月,打字節奏很順,remap 切換速度流暢,沒什麼副作用,推薦給有同樣需求的人。

附錄(2023.12.06 added):示範用內建 Finder 和 TextEdit 新增 JSON 檔的方法 (不用 terminal,純 GUI)

由於我非常習慣使用 terminal,有些操作對我來說已經跟直覺一樣自然,不會特別說明,例如 cd 或 vi 指令。

直到看到留言區多位朋友的詢問,才意識到,對 terminal 不熟的人會在某些我意想不到的地方卡關。特別感謝 lazzymark 網友熱心分享自己卡關的情形和解決經驗,描述很具體,也讓我理解到一些我以為很直覺的操作,對非開發者的一般人來說可能是障礙。

從留言情況觀察,有設定 shift 切換需求的人裡,非開發者也佔了不少比例,如果因為 terminal 操作卡關而無法設定成功會很可惜,因此決定增加本節,示範新增 json 檔的別種方法,不需 terminal 或任何外掛,只用內建 Finder 和 TextEdit。

step 1: 使用 Finder 找到資料夾位置

資料夾路徑是~/.config/karabiner/assets/complex_modifications~ 指的是登入者的 home 資料夾,就是在 Finder 的左邊捷徑列有小房子 icon 的那個資料夾。如果捷徑列沒看到你的 home 資料夾,可以參考網路有很多教學示範怎麼加上去,例如 How to find your Mac’s Home folder (and add it to Finder)

.config 這個資料夾是所謂的「隱藏檔案」,如果你打開 Finder 看不到,可以在 Finder 按「Command + Shift + .」3 顆組合鍵,就會出現一堆 icon 半透明的檔案。

step 2: 使用 TextEdit 新增檔案

打開 mac 內建的 TextEdit 文字編輯器。

如果你看到的是這個畫面,這是豐富文字編輯模式 (Rich Text):

按「Command + Shift + T」組合鍵,切換成純文字編輯模式 (Plain Text):

接著複製貼上 JSON 內容,按儲存:

輸入檔名,修改要儲存的檔案位置,也就是 step 1 的資料夾:

回到 Finder,就能看到檔案新增成功:

References

在〈[Mac] macOS 中英文輸入切換 & 設定成跟 Windows 一樣用 Shift 切換教學〉中有 14 則留言

  1. 感謝分享這篇教學!之前一直在為 macOS 的中英文輸入切換感到困惑,現在終於找到方法了!用 Shift 鍵切換簡直太方便了,解決了我的大問題!希望未來能看到更多這樣實用的技巧!

    回覆
  2. 感謝分享這篇文章!對我來說,將 macOS 的中英文輸入切換設置成用 Shift 鍵真的很實用,讓我在工作中能更順暢地切換語言。期待您更多這類的教學!

    回覆
  3. 我是用mac mini M1(macOS14.1.2)
    我不會下指令編輯
    所以我一直卡在貼上語法後關閉視窗
    我的檔案名稱只會是.remapRShift.json.swap
    上網查了資料才知道
    貼上語法後要結束編輯
    最後要輸入:x+enter鍵
    才會正確的關閉視窗並儲存檔案
    檔案名稱才會顯示成remapRShift.json
    提供我的經驗給其他像我一樣的小白參考
    也感謝您的分享

    回覆
    • Hi 非常謝謝你的熱心經驗分享,而且描述很具體!
      讓我理解到指令小白照原本的教學操作,其實容易卡關。

      因此,我增加了附錄,示範不用 terminal,純用內建 Finder 和 TextEdit 新增 JSON 檔的作法,希望能幫到指令小白。

      回覆
  4. 您好
    請問要如何到以下的資料夾?
    是複製哪一段的路徑名稱呢?

    $ cd ~/.config/karabiner/assets/complex_modifications

    Thank you~

    回覆
    • 你好~
      推測你應該是不習慣 terminal 指令的使用者,可能也不熟悉 cd 和 vi 操作,你可以嘗試用 Finder 找到資料夾位置,再用你習慣的方式去新增檔案。

      資料夾是「~/.config/karabiner/assets/complex_modifications」,「~」指的是登入者的 home 資料夾,就是在 Finder 的左邊捷徑列有小房子 icon 的那個資料夾。

      但上面這個資料夾是所謂的「隱藏檔案」,如果你打開 Finder 看不到,可以在 Finder 按「Command + Shift + .」3 顆組合鍵,就會出現一堆 icon 半透明的檔案。

      回覆
  5. 你好~非常感謝您的分享
    想請較一下 我新增完json檔案後按enter 關閉terminal後回到karabiner試圖add rule
    但卻沒有出現剛剛新增的檔案(依然只顯示了example的三個rules)
    請問這個應該如何解決呢?是不是我有什麼步驟操作錯誤了呢?

    感謝指點!!

    回覆
    • 你好~
      因為無法實際確認你的電腦配置,只能試著推測可能的因素提供你參考。

      初步排除 macOS 版本相容性問題,因為我在 macOS 12.x(Monterey) 和 13.x(Ventura) 都設定過能正常運作。

      最有可能是 json 檔沒有新增到正確位置,或是 json 內容跑掉。
      檢驗方法:
      打開 terminal,複製以下指令輸入:
      $ cat ~/.config/karabiner/assets/complex_modifications/remapRShift.json

      操作正確的話,terminal 上會印出「json 檔的內容」,且和文章示範的 json 內容會一字不差。
      如果沒有正確印出,則表示 json 檔的新增操作沒有成功,可照教學步驟再試著設定一次。

      回覆

發表留言