日本でラップトップを買うとどうしてもキーボードの配列が日本語のものに制約されがちだ。20年ほど英語配列キーボードに馴染んだ身としては今更日本語配列 jp106 を使うのはストレスがたまるので、キートップを無視して配列を en101 に変更をしたのだが思ったより手間取った。ついでにEmacs風キーバインドのためにkeyhacを導入した。
なお以下の内容はレジストリをいじったりなんだりしているので当然のごとく無保証で、なにかあった際に自力で復旧できる人以外にはお勧めしないし、そもそもキートップの印字とキー入力がずれるということなので、それを理解してもやりたい人は少数だろうが、いないことはなさそうなので備忘録を兼ねて記する。
キーマップを日本語配列から英語配列に変更
これは結構苦戦したのだけど、結果としては下記のレジストリを変更することで MSIME(日本語入力) 利用時も英語配列での入力が可能になった。
Keyboard Layouts\00000411 レジストリの変更
端的には Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
の Layout File
を kbdus.dll
に変更することで英語配列での入力ができるようになった。レジストリ変更後にはログアウト⇒ログインないし再起動が必要。これを .reg ファイルとして切り出したものは以下。当該レジストリをバックアップしてから作業することをお勧めする。
Keyboard Layouts は言語ごとのキーマップ定義が登録されているレジストリで00000411が日本語向けということになるわけだが、その配列定義を強制的に英語キーボードのドライバーに書き換えるということをしていることになる。
うまくいかなかった方法: Windows 10 の言語設定からの変更と i804prt\Parameters レジストリの値、またキーボードドライバの入れ替え
下記はうまくいかなかった方法。参考までに。
標準的な方法として、設定 > 時刻と言語 > 地域と言語 > 日本語 > オプション から ハードウェアキーボードレイアウト を 英語キーボード(101/102) に変更というやり方があるが、これはうまくいかず、入力時のキーボードレイアウトには何の影響もなく日本語配列のままだった。
また同設定から English を言語追加してキーボードレイアウトを US QWERTY にした際には、Win+Space で入力をENGに切り替えた際には英語配列(Shift+2の入力が@になる)になったのだが、言語モードを JPN にすると日本語配列(Shift+2 の入力が “) に戻ってしまって英語配列にならなかった。
この時に HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
の LayerDriver JPN などは上記設定で既に kbd101.dll になっているのだが、これは効かなかったようだ。
他の方法としてググって出てきたキーボードのデバイスドライバを英語キーボードのものに入れ替える方法は、そもそも HID Keyboard Devices 以外の例えば English 101/102 PS/2 Keyboard などを選ぶとドライバ更新がエラーになってキーボード操作自体を受け付けなくなるなどの問題が出たのでうまくいかなかった。外付けのキーボードならうまくいくのかもしれない。
CAPSキーをControlキーに置き換え
特に Emacs keybind を使うなら必須とも言える変更だが、定番なのでどこにでも情報がある。
ASCII.jp:CtrlとCapsを入れ替え! Windowsのキー配列をカスタマイズ (½)|深厚のWindows使いこなしテクニック
自分用には .reg ファイルとしてあらかじめ作ってあるので、ダブルクリックで読み込めば設定は終わり。
KeyhacでキーバインドをEmacs風に変更
しばらく前までは xkeymacs を使っていたのだけど、Windows 7 ですら動きが怪しかったのが Windows 10 ではまともに動作しなくなったので keyhac に乗り換えた。
あわせて VC++ Runtime を入れる。上記サイトのリンク先は無くなっていたのだけど、これがたぶん最新版?
Download Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 RC from Official Microsoft Download Center
Emacs Keybind の設定はこの辺りをほぼそのまま使いつつ、使わないキーバインドだけコメントアウトしておく。ちょっと冗長なので自分で書き直したい気分ではあるが、それはおいおい。
Windows の操作を emacs のキーバインドで行うための設定 (Keyhac版) - NTEmacs @ ウィキ - アットウィキ
これで a の左がコントロールキーでキーボード配列は英語配列でショートカット操作は Emacs 準拠という個人的に快適な状況に持っていくことができた。
余談だがこれをやるとキートップ印字と入力文字が特に記号入力で不一致になるのは前述の通りで、誰かにパソコンをちょっと貸してパスワード入力をしてもらうなどの場合に結構はまったりするのはご愛敬である。