発端
Android Studioにて、Keymapを"Eclipse (Mac OS X)"をベースととした独自設定で使っていたところ、戻る(Back, Cmd+[)と進む(Forward, Cmd+])をキーボードショートカットで呼び出そうとしたところどうも挙動がおかしい…
Keymapのキーボードショートカットを追加(Add Keyboard Shortcut)で同じキーをを入力したところ打った文字と違う文字が認識されている(!?)ことが判明した。
原因
Android Studio の元となった IntelliJ IDEA のバグ(IDEA-63779)で、キーボードショートカットが、USキーボードレイアウトに依存してしまっているようで、US以外(JPなど)のキーボードレイアウトだとショートカットのだとキーが正しく認識されないようだ。
対処
注意: Android Studio 2.0 ではこの対処法は利かなくなってしまっているようです
Android Studio が認識しているキーがずれているだけなので、よく使うキーボードショートカットについて個別に設定しなおすというのも一つの手だが、非常に 面倒くさいので 非効率なので 避けたい。
実はこれに対する試作(?)修正が実装済みだが、デフォルトでは無効になっているので有効にするとうまくいくようだ。
- Android Studioを起動し、適当なプロジェクトを開いておく
- [Help] > [Find Action] にて "Registry" と入力し
Registry...
が選択された状態で Enter - 表示されたダイアログ(Registry)のリスト内の
ide.non.english.keyboard.layout.fix
にチェックをつける - [Close]でダイアログを閉じてAndroid Studioを再起動する
以上の手順でキーボードショートカットが正常に動作するようになった。
ただし、この修正で全ての問題が修正されるワケではないらしいので、場合によってはキーボードショートカットの再設定が必要かもしれない。
なお、Android Studio以外のIntelliJ IDEAベースのIDEについても同様の方法が使えるかもしれないがこれは未確認。