Karabiner-Elementsは、Macのキーボードカスタマイズの万能ツールです。キーのリマップ、レイヤーの作成、JSONで書いたルールの実行ができます。そうしたルールのひとつとして、特定のキーボードからキー入力があったときに入力ソースを選択することもできます。Keyameleonは、その役割だけをルールなしでこなします。どちらが良いかは、すでにKarabiner-Elementsをほかの用途で使っているかどうかで決まります。
ひと目で比較
| Keyameleon | Karabiner-Elements | |
|---|---|---|
| どんなツールか | キーボードごとの入力ソース切り替えツール | 汎用のキーボードカスタマイズツール |
| キーボードごとの入力ソース | 一覧からキーボードごとに入力ソースを選ぶ | デバイス条件とselect_input_sourceアクションを含むComplex Modificationを書く |
| 入力の読み取り方 | 監視のみのモードでキーボードを観察。入力を変更・挿入できない | 変更対象のキーボードを制御下に置き、その入力を独自の仮想キーボードドライバ経由で送る |
| インストール | アプリと入力監視の許可 | アプリ、承認が必要なドライバ拡張機能、入力監視の許可 |
| 価格とライセンス | 無料、MIT | 無料、パブリックドメイン(Unlicense) |
Karabiner-Elementsでのキーボードごとの切り替え
Karabiner-Elementsのルール(Complex Modifications)は、device_if条件で特定のデバイスに限定できます。条件にはキーボードのベンダーIDとプロダクトID、または内蔵キーボードを指定します。ルールではselect_input_sourceアクションも実行でき、言語またはIDで入力ソースを選択します。この2つを組み合わせれば、あるキーボードでのキー入力で、そのキーボードの入力ソースを選択できます。
これでも機能しますが、ルールはキーボードごとに自分で書いて管理する必要があり、対象のキーを飲み込んだり変更したりしないかのテストも必要です。また、Karabiner-Elements自身のドキュメントでも、入力モードを持つ入力ソース(中国語、日本語、韓国語、ベトナム語)の選択はmacOSの問題により失敗する場合があると警告しており、代わりに入力ソースのショートカットを送信する方法を勧めています。
Keyameleon:同じことをルールなしで
Keyameleonは見つけたすべてのキーボードを一覧表示します。日本語のかな入力やピンインなどの入力方式も含め、キーボードごとに入力ソースを選べば、そのキーボードで入力を始めたときに切り替わります。ドライバをインストールすることも、キーボードとアプリの間に入ることもありません。AppleのCoreHIDフレームワークを監視のみのモードで使ってキーボードを観察し、macOSのテキスト入力システムを通じて配列を変更します。
問題があれば知らせてくれます。入力監視がオフのとき、切り替えが一時停止しているとき、割り当てた入力ソースがmacOSから削除されたときは、メニューバーのメニューに通知が表示されます。
両方を併用する場合
Karabiner-Elementsでリマップをしつつ、キーボードごとの配列も使いたいという人は少なくありません。ただし、Karabiner-Elementsは変更対象のキーボードの入力を仮想キーボードから送り直すため、ほかのアプリからはキーがどの物理キーボードから来たのかわからなくなることがあります。Karabiner-Elementsの実行中にKeyameleonがあるキーボードで切り替わらない場合は、Karabiner-ElementsのDevices設定で、そのキーボードのModify eventsをオフにしてください。
どちらを使うべきか
- すでにKarabiner-Elementsのルールを管理していて、JSONにも抵抗がない:Karabiner-Elementsにデバイスルールを追加しましょう。
- 各キーボードでそれぞれの配列で入力できればいい、ドライバも管理すべきルールも要らない:Keyameleon。
標準機能を含むすべての選択肢は、Macでキーボード配列を自動で切り替える方法で紹介しています。