谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

US配列のキーボードに無変換キーと変換キーを作ってIMEのOFF/ONを割り当てました

日本語環境で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


そのうえで、IMEの設定で「無変換をIMEオフ」、「変換をIMEオン」にアサインする。

配列の変更

Surface BookのUSキーボードはこんなレイアウトです。

これを次のようにします。

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オン」にアサインし直します。設定の仕方は調べればいくらでも出てくるので割愛します。

まとめ

長らくUS配列キーボードの日本語入力オン/オフに悩まされていて、結局は日本語キーボードのほうが良いかなと思っていました。ただ、この配列がかなり良さそうなので、今後は常にUS配列キーボードを選ぶことになりそうです。
ちなみにMacのUS配列キーボードもキーの数は同じですから、キーアサインを変更すれば同じ配列にできます。これでいつMacBookに戻っても大丈夫ですね。