Keyameleon 和 Keychange 解決的是同一個問題。macOS 所有鍵盤共用一個輸入方式,所以從美式 MacBook 鍵盤換到德文外接鍵盤時,就得手動切換鍵盤佈局。兩者都是免費、開源的選單列 App,會在你開始用另一把鍵盤打字時替你切換。差別在於能在哪些 Mac 上執行、如何處理你打的第一個按鍵,以及需要多少存取你輸入內容的權限。

快速比較

KeyameleonKeychange
切換依據你正在打字的鍵盤你正在打字的鍵盤
價格與授權免費,MIT免費,MIT
macOS26 或以上版本14 或以上版本
權限輸入監控輸入監控;使用「Before key press」時還需要輔助使用
剛換用的鍵盤上的第一個按鍵使用先前的輸入方式使用先前的輸入方式,除非開啟「Before key press」
對你輸入內容的存取只監聽:無法延遲、更改或注入按鍵預設只監聽;「Before key press」會攔截每一個按鍵
設定方式引導設定視窗,之後使用「設定」視窗選單列彈出視窗中,每個鍵盤各有一個下拉選單
安裝DMG 或 brew install --cask mastro993/tap/keyameleonDMG 或 brew install dennistimmermann/tap/keychange

兩者的共同點

  • 每個鍵盤只需指定一次輸入方式,之後在那把鍵盤上按下按鍵時,App 就會選擇它,在每個 App 中都一樣。
  • 鍵盤是依硬體身分辨識的,所以拔除再重新連接後,指定設定依然有效。
  • 會把自己回報為鍵盤、但其實不是鍵盤的裝置(例如帶有快速鍵按鈕的滑鼠),可以隱藏起來,讓它們不會觸發任何切換。
  • 兩者都需要「輸入監控」權限來分辨鍵盤,也都不會記錄或傳送你輸入的內容。
  • 兩者都可以視需要在登入時啟動,並透過 Sparkle 更新。Keyameleon 每天最多檢查一次,而且只安裝你同意的更新;Keychange 則會提供 GitHub 上的新版本供你安裝。

你打的第一個按鍵

監看你在用哪把鍵盤的 App,只有在 macOS 收到按鍵之後才會得知。等到它切換時,那個按鍵通常已經以舊的鍵盤佈局送往前景的 App 了。兩個 App 都從這一點出發,但對於如何處理,選擇了不同的做法。

Keychange 有一個「Before key press」模式。它會攔截每個 App 中的每一個按鍵(密碼欄位除外),切換鍵盤佈局後再用新的鍵盤佈局重新轉換字元;對某些輸入法則會短暫暫緩該按鍵。這樣第一個字元就會正確。這個模式需要「輔助使用」權限,而且會讓 Keychange 介於你的鍵盤和每個 App 之間。

Keyameleon 從不介入這條路徑。它透過 Apple 的 CoreHID 框架以只監聽模式觀察鍵盤,這種模式無法延遲、更改或注入輸入,而且只透過 macOS 文字輸入系統來更改鍵盤佈局。代價就是它常見問題中提到的:觸發切換的那個按鍵,以及在 macOS 完成切換前輸入的其他按鍵,仍可能使用先前的輸入方式。

如果你經常在一個字打到一半時換鍵盤,Keychange 的這個模式就是真正的差異所在。如果你希望任何 App 都不能更動你的按鍵,Keyameleon 正是以這個原則打造的。

當其他東西更改了輸入方式

你可能從選單列選了另一個輸入方式,或是其他 App 更改了它。Keychange 讓你選擇接下來的行為:自行關閉、暫停直到輸入方式再次符合鍵盤、保留你的選擇直到你換鍵盤,或保留到你下一次按鍵為止。

Keyameleon 只有一種行為,沒有可調整的設定。它會記下這個變更,在選單中顯示不一致的狀態,而且不會和你作對。等你下次在已指定輸入方式的鍵盤上按鍵時,就會再次選擇該鍵盤的輸入方式。

只有 Keyameleon 有的功能

  • 引導設定。一個視窗帶你完成「輸入監控」設定、為每個鍵盤指定鍵盤佈局,並在 App 移到選單列之前確認一切就緒。
  • 驗證切換結果。向 macOS 要求切換輸入方式後,Keyameleon 會再讀取一次確認。如果沒有切換成功,選單會顯示警告,並提供「立即重試」(Retry Now)。
  • 不會默默替換。如果已指定的輸入方式從 macOS 中移除,指定設定會保留,不會改選其他輸入方式,選單也會持續提示,直到該輸入方式恢復為止。
  • 自訂鍵盤名稱,以及列出每個已指定鍵盤和其鍵盤佈局國家代碼的選單。
  • 可從選單用 ⌘ P 暫停和繼續。

只有 Keychange 有的功能

  • 可在 macOS 14 Sonoma 和 15 Sequoia 上執行。Keyameleon 需要 macOS 26。
  • 「Before key press」模式,如上所述。
  • 選單列標記,一眼就能看出目前的輸入方式。
  • 四種策略,用來應對其他東西所做的輸入方式變更。
  • 按住 Option 再按一下可顯示廠商 ID 和產品 ID,用來區分名稱相似的鍵盤。

該選哪一個?

  • 你的 Mac 執行 macOS 14 或 15:Keychange。Keyameleon 無法在這些版本上執行。
  • 第一個字元一定要正確:開啟「Before key press」的 Keychange,前提是你願意授予「輔助使用」權限,並讓它攔截每一個按鍵。
  • 你想要一個只能觀察、絕不碰你輸入內容的 App,並具備引導設定,在有狀況時給出清楚的警告:Keyameleon。

兩者都是免費的,所以兩個都試試也沒有成本。不過一次只執行一個:它們改的是同一個系統設定。

第一次遇到這個問題?請先閱讀如何讓外接鍵盤使用不同的鍵盤佈局。Keychange 表示其靈感來自 autokbisw,那篇比較涵蓋了命令列的選擇。