Keyameleon 和 Keychange 解決的是同一個問題。macOS 所有鍵盤共用一個輸入方式,所以從美式 MacBook 鍵盤換到德文外接鍵盤時,就得手動切換鍵盤佈局。兩者都是免費、開源的選單列 App,會在你開始用另一把鍵盤打字時替你切換。差別在於能在哪些 Mac 上執行、如何處理你打的第一個按鍵,以及需要多少存取你輸入內容的權限。
快速比較
| Keyameleon | Keychange | |
|---|---|---|
| 切換依據 | 你正在打字的鍵盤 | 你正在打字的鍵盤 |
| 價格與授權 | 免費,MIT | 免費,MIT |
| macOS | 26 或以上版本 | 14 或以上版本 |
| 權限 | 輸入監控 | 輸入監控;使用「Before key press」時還需要輔助使用 |
| 剛換用的鍵盤上的第一個按鍵 | 使用先前的輸入方式 | 使用先前的輸入方式,除非開啟「Before key press」 |
| 對你輸入內容的存取 | 只監聽:無法延遲、更改或注入按鍵 | 預設只監聽;「Before key press」會攔截每一個按鍵 |
| 設定方式 | 引導設定視窗,之後使用「設定」視窗 | 選單列彈出視窗中,每個鍵盤各有一個下拉選單 |
| 安裝 | DMG 或 brew install --cask mastro993/tap/keyameleon | DMG 或 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,那篇比較涵蓋了命令列的選擇。