KeyameleonとKeychangeは同じ問題を解決します。macOSの入力ソースはすべてのキーボードで共通なので、US配列のMacBookのキーボードからドイツ語配列の外付けキーボードに移るたびに、手動で配列を切り替える必要があります。どちらも、別のキーボードで入力を始めると自動で切り替えてくれる無料・オープンソースのメニューバーアプリです。違いは、対応する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 |
共通点
- キーボードごとに入力ソースを一度割り当てておけば、そのキーボードでキーを押したときに、どのアプリでもその入力ソースが選択されます。
- キーボードはハードウェアの識別情報で認識されるため、抜き差ししても割り当ては保持されます。
- ショートカットボタン付きのマウスなど、キーボードとして認識されるもののキーボードではないデバイスは、非表示にして切り替えに影響しないようにできます。
- どちらもキーボードを区別するために入力監視の許可が必要で、入力内容を記録したり送信したりはしません。
- どちらも必要に応じてログイン時に起動でき、Sparkleでアップデートします。Keyameleonの確認は1日1回までで、承認したアップデートだけをインストールします。KeychangeはGitHubの新しいリリースをインストールするよう提案します。
最初に入力するキー
どのキーボードが使われているかを監視するアプリは、macOSがキー入力を受け取ってからでないとそれを知ることができません。切り替えた時点で、そのキーはたいてい前面のアプリに向かっていて、古い配列で入力されています。どちらのアプリもここが出発点ですが、その対処法が異なります。
KeychangeにはBefore key pressモードがあります。すべてのアプリのすべてのキー入力(パスワードフィールドを除く)に割り込み、配列を切り替えてから新しい配列で文字を変換し直します。一部の入力方式では、キーを一瞬保留します。これにより最初の文字も正しく入力されます。このモードにはアクセシビリティの許可が必要で、Keychangeがキーボードとすべてのアプリの間に入ることになります。
Keyameleonはこの経路に入りません。AppleのCoreHIDフレームワークを監視のみのモードで使ってキーボードを観察するため、入力を遅らせたり、変更・挿入したりすることはできません。配列の変更もmacOSのテキスト入力システムを通じてのみ行います。その代償はFAQにあるとおりで、切り替えのきっかけとなったキーと、macOSが切り替えを終える前に入力したキーは、前の入力ソースのまま入力されることがあります。
単語の途中でキーボードを頻繁に持ち替えるなら、Keychangeのこのモードが決定的な違いになります。どのアプリにもキー入力を変更させたくないなら、Keyameleonはまさにその原則に基づいて作られています。
ほかの方法で入力ソースが変更されたとき
メニューバーから別の入力ソースを選んだり、別のアプリが入力ソースを変更したりすることがあります。Keychangeでは、その後の動作を選べます。自身をオフにする、入力ソースが再びキーボードと一致するまで一時停止する、キーボードを替えるまで選択をそのままにする、次のキー入力まで選択をそのままにする、のいずれかです。
Keyameleonの動作はひとつだけで、設定はありません。変更を記録してメニューに不一致を表示しますが、それに逆らうことはしません。割り当てのあるキーボードで次にキーを押すと、そのキーボードの入力ソースが再び選択されます。
Keyameleonだけの機能
- ガイド付きセットアップ。ひとつのウインドウで入力監視の許可とキーボードごとの配列の割り当てを行い、すべての準備が整ったことを確認してから、アプリがメニューバーに移ります。
- 切り替えの検証。macOSに入力ソースの切り替えを要求したあと、Keyameleonはその結果を読み取って確認します。切り替わっていなければ、メニューに警告と「Retry Now」が表示されます。
- 勝手に代わりを選ばない。割り当てた入力ソースがmacOSから削除されても割り当てはそのまま残り、代わりの入力ソースは選ばれません。元に戻るまで、メニューにその旨が表示されます。
- キーボードに好きな名前を付けられるほか、割り当て済みの各キーボードとその配列の国コードを一覧表示するメニューがあります。
- メニューから⌘ Pで一時停止と再開ができます。
Keychangeだけの機能
- macOS 14 Sonomaと15 Sequoiaで動作。KeyameleonにはmacOS 26が必要です。
- Before key pressモード(前述)。
- メニューバーのバッジで、使用中の入力ソースをひと目で確認できます。
- ほかの方法で入力ソースが変更されたときの4つの対処方法。
- Optionキーを押しながらクリックするとベンダーIDとプロダクトIDが表示され、似た名前のキーボードを区別できます。
どちらを使うべきか
- MacでmacOS 14または15を使っている:Keychange。Keyameleonは動作しません。
- 最初の文字から必ず正しく入力したい:Before key pressを有効にしたKeychange。ただし、アクセシビリティの許可を与え、すべてのキー入力への割り込みを許容できる場合に限ります。
- 入力を監視するだけで、決して手を加えないアプリがほしい。ガイド付きセットアップや、問題があるときのわかりやすい警告も重視する:Keyameleon。
どちらも無料なので、両方試してもコストはかかりません。ただし、同じシステム設定を変更するため、同時に使うのはひとつだけにしてください。
この問題について初めて知った方は、外付けキーボードで別の配列を使う方法から読んでみてください。Keychangeはautokbiswから着想を得たとしています。コマンドラインの選択肢については、そちらの比較記事で解説しています。