Karabiner-Elementsは、Macのキーボードカスタマイズの万能ツールです。キーのリマップ、レイヤーの作成、JSONで書いたルールの実行ができます。そうしたルールのひとつとして、特定のキーボードからキー入力があったときに入力ソースを選択することもできます。Keyameleonは、その役割だけをルールなしでこなします。どちらが良いかは、すでにKarabiner-Elementsをほかの用途で使っているかどうかで決まります。

ひと目で比較

KeyameleonKarabiner-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でキーボード配列を自動で切り替える方法で紹介しています。