日本語環境でUS配列のキーボードを使う時に、IMEのON/OFFをどうするか問題。ずっとWindowsを使い続けてきた人は「Alt + `」で構わないでしょうし、あとは「Shift + CAPS」や「Ctrl + Space」あたりがメジャーかも知れません。
しかしMacの日本語キーボードを利用していた人は、「左AltでIME-ON、右AltでIME-OFF」というアサインにしたくなります。現在ONかOFFを気にせずにON/OFFを切り替えられるので、とても便利です。
これを実現するために、alt-ime-ahkというツールがよく使われます。これは左右のAltキー空打ちを、それぞれIMEのONとOFFにアサインするツールです。
https://github.com/karakaram/alt-ime-ahk
ただ使い始めて3日もするとキー入力に慣れてきて、文章を書いている途中で「Altを離す前にキー入力を始める」ようになり、「Alt + D」みたいなショートカットが動いてしまうことが増えてきました。テキストボックスに入力してたのに、いきなりアドレスバーで入力が始まっちゃったりするんですよ。
さすがにストレスフルなので、これは根本的にキーアサインを変えるしかないぞと思い、挑戦してみました。
TL;DR
レジストリエディタで次の設定を入れて、AX配列にする。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
値の名称 | データ型 | 値 |
---|---|---|
LayerDriver JPN | REG_SZ | kbdax2.dll |
OverrideKeyboardIdentifier | REG_SZ | AX_105KEY |
OverrideKeyboardSubtype | REG_DWORD | 1 |
OverrideKeyboardType | REG_DWORD | 7 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\{キーボードのPnP ID}{うんたらかんたら}\Device Parameters
値の名称 | データ型 | 値 |
---|---|---|
OverrideKeyboardSubtype | REG_DWORD | 1 |
OverrideKeyboardType | REG_DWORD | 7 |
※ここにキーがある場合だけ
次に、キーアサインを変更して、左Altを無変換、右Altを変換、右アプリケーションキーを左Altにする。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
値の名称 | データ型 | 値 |
---|---|---|
Scancode Map | REG_BINARY | 00,00,00,00,00,00,00,00,04,00,00,00,38,00,5d,e0,5b,00,38,e0,5a,00,38,00,00,00,00,00 |
配列の変更
Surface BookのUSキーボードはこんなレイアウトです。
これを次のようにします。
- 左AltをIME-OFFにする
- 右AltをIME-ONにする
- 右にあるアプリケーションキーをAltにする
Altキーが右側だけになってしまうのですが、そこは妥協せざるを得ません。本当は左にあるFnの位置をAltにして、右のアプリケーションキーをFnにしたいのですが、WindowsではFnキーのアサインを変更できないのです。
まずはUS配列からAX配列にする
いろいろググってみると、こういう事をしたい場合は、US配列のままにせず、AX配列にした方が良いようです。なのでまずはAX配列になるよう挑戦したのですが、少し難儀しました。
まずはこのサイトにある通り、レジストリエディタでレジストリを4つ追加/変更します。
Windows 10 でも AXキーボード | forzandoblog
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
値の名称 | データ型 | 値 |
---|---|---|
LayerDriver JPN | REG_SZ | kbdax2.dll |
OverrideKeyboardIdentifier | REG_SZ | AX_105KEY |
OverrideKeyboardSubtype | REG_DWORD | 1 |
OverrideKeyboardType | REG_DWORD | 7 |
ただこの設定を入れて再起動したところで、左右のAltキーはAltのまま変わらず、どうしてもAX配列にはなりませんでした。他のサイトを見ても同じ情報しか見つからず、いったん諦めかけたところで、このサイトにたどり着いて、もう一か所、設定が必要なことが分かりました。
[Windows7でのキーボードレイアウトの指定 | untitled document}
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\{キーボードのPnP ID}{うんたらかんたら}\Device Parameters
値の名称 | データ型 | 値 |
---|---|---|
OverrideKeyboardSubtype | REG_DWORD | 1 |
OverrideKeyboardType | REG_DWORD | 7 |
この設定を入れて再起動したところ、右Altキーが「カタカナ」相当になり、AX配列になったことを確認できました。
キーアサインを変更する
AX配列になったものの、左AltはAltのままですし、右Altキーは「カタカナ」キーになっています。これを日本語キーボードと同じく、左Altを「無変換」、右Altを「変換」にアサインし直します。キーアサインはここを参考にしました。
Uchan Note: 日本語キーボードを US 配列で使いつつ、変換/無変換キーで IME ON/OFF
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
値の名称 | データ型 | 値 |
---|---|---|
Scancode Map | REG_BINARY | 00,00,00,00,00,00,00,00,04,00,00,00,38,00,5d,e0,5b,00,38,e0,5a,00,38,00,00,00,00,00 |
これで再起動すると、左Altが無変換、右Altが変換、そして右アプリケーションキーが左Alt相当になります。
ここまで出来たら、あとはIMEの設定で「無変換をIMEオフ」「変換をIMEオン」にアサインし直します。設定の仕方は調べればいくらでも出てくるので割愛します。