Karabiner-Elements 是 Mac 鍵盤自訂的瑞士刀:它能重新對應按鍵、建立圖層,並執行你用 JSON 撰寫的規則。其中一種規則可以在按鍵來自特定鍵盤時選擇輸入方式。Keyameleon 只做這一件事,而且不需要規則。哪個比較好,取決於你是否已經在用 Karabiner-Elements 做其他事。
快速比較
| Keyameleon | Karabiner-Elements | |
|---|---|---|
| 它是什麼 | 依鍵盤切換輸入方式的工具 | 通用的鍵盤自訂工具 |
| 依鍵盤設定輸入方式 | 在清單中為每個鍵盤選擇輸入方式 | 撰寫一條含裝置條件和 select_input_source 動作的複雜修改(complex modification) |
| 如何讀取你的輸入 | 以只監聽模式觀察鍵盤;無法更改或注入輸入 | 接管它所修改的鍵盤,並透過自己的虛擬鍵盤驅動程式傳送這些鍵盤的輸入 |
| 安裝 | 一個 App,以及「輸入監控」權限 | 一個 App、一個需要核准的驅動程式延伸功能,以及「輸入監控」權限 |
| 價格與授權 | 免費,MIT | 免費,公眾領域(Unlicense) |
在 Karabiner-Elements 中依鍵盤切換
Karabiner-Elements 的規則(複雜修改)可以用 device_if 條件限定只套用到特定裝置,比對鍵盤的廠商 ID 和產品 ID,或比對內建鍵盤。規則也可以執行 select_input_source 動作,依語言或 ID 選擇輸入方式。把兩者結合起來,在某把鍵盤上按下按鍵,就能選擇該鍵盤的輸入方式。
這行得通,但規則得由你自己撰寫和維護,每把鍵盤一條,還要測試它不會吞掉或更改它所比對的按鍵。Karabiner-Elements 自己的文件也提醒,由於 macOS 的問題,選擇帶有輸入模式的輸入方式(中文、日文、韓文、越南文)可能會失敗,並建議改為送出輸入方式的快速鍵。
Keyameleon:同樣的工作,不需要規則
Keyameleon 會列出它找到的每個鍵盤。你為每個鍵盤選擇一種輸入方式,包括日文假名或拼音等輸入法,之後開始在該鍵盤上打字時,它就會切換。它從不安裝驅動程式,也從不介於你的鍵盤和 App 之間:它透過 Apple 的 CoreHID 框架以只監聽模式觀察鍵盤,並透過 macOS 文字輸入系統更改鍵盤佈局。
出問題時它也會告訴你。當「輸入監控」關閉、切換已暫停,或已指定的輸入方式已從 macOS 中移除時,選單列選單都會顯示通知。
兩者一起使用
很多人用 Karabiner-Elements 重新對應按鍵,同時也想讓每把鍵盤使用各自的鍵盤佈局。請注意,Karabiner-Elements 會從它的虛擬鍵盤重新送出它所修改之鍵盤的輸入,因此其他 App 可能就無法再看出按鍵來自哪一把實體鍵盤。如果 Karabiner-Elements 執行時 Keyameleon 不會為某把鍵盤切換,請在 Karabiner-Elements 的「Devices」設定中,關閉該鍵盤的「Modify events」。
該選哪一個?
- 你已經在維護 Karabiner-Elements 規則,而且熟悉 JSON:在那裡加入一條裝置規則即可。
- 你只想讓每把鍵盤用自己的鍵盤佈局打字,不需要驅動程式,也沒有規則要維護:Keyameleon。
想看完整的選項清單(包括 macOS 內建的方法),請閱讀如何在 Mac 上自動切換鍵盤佈局。