2013年01月18日

英語配列のUSBキーボードを使う(付:右AltでIME切り替え)

私は英語配列のキーボードしか使えないのですが、困ったことにPCにキーボードを接続すると誤って日本語配列だと認識されてしまうことがあります。
対策として、PS/2キーボードであれば、レジストリエディタでキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\i8042prt\Parameters

LayerDriver JPN
OverrideKeyboardIdentifier
OverrideKeyboardSubtype
OverrideDeyboardType
の値を書き換えるという方法があったのですが、最近主流のUSBキーボードではうまく行かないことが多いようです。

まさに私も数日前からこの問題に悩んで、いろいろと試行錯誤していたのですが、このブログ記事を参考にして試してみたところ、うまく行きました!
どなたかは存じませんが、ありがとうございます。_(..)_

ただ、上記ブログの記事とは多少異なる点もありましたので、それらを中心に書いておきます。
ちなみに私の環境は、Windows 7 (64bit)です。

・私の場合、HIDキーボードデバイスのプロパティには「デバイス インスタンス ID」という項目はなく、代わりに「デバイス インスタンス パス」という項目があったので、それを使いました。内容は同じのようです。
・HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID配下のレジストリのキーの名前ですが、同じVIDやPIDでも「VID_046D&PID_C505&MI_01&Col02」のように、最後にMIとかColとかついているキーがいくつかありました。これらのうち最初のもの(私の場合「VID_046D&PID_C505&MI_00」)を選択するとよいようです。
・サブキー「Device Parameters」にはすでにKeyboardSubTypeOverrideとKeyboardTypeOverrideという名前があり、それぞれ値が2と7になっていました。これらはPS/2キーボードの場合のOverrideKeyboardSubtypeとOverrideDeyboardTypeに対応するようです。
・というわけで、KeyboardSubTypeOverrideのみ0に書き換えてリブートすると、見事にキーボードが英語配列となりました!

めでたし、めでたし。
言わずもがなですが、レジストリを吹っ飛ばすと大変なことになるので、必ずバックアップを取って、自己責任で行ってくださいね。

長くなったので、本文はここまでとします。
「右AltでIME切り替え」を読みたい方は、「続きを読む」をクリックしてください。

英語キーボードを使っていると、デフォルトで「Alt+`」に割り当てられているIMEの切り替えがかったるいので、右AltをIMEの切り替えに割り当てている人が多いと思います。

その方法にはいくつかあって、(1) AltIMEなどのツールを使う、(2) AXキーボード設定を使う、などが代表的でしょう。
ただしAltIMEは64bit環境だと使えません(32bit環境だと、Windows 7でも「管理者として実行」すれば使える)。
またこちらのソフトの作者さんはもう亡くなっており、ホームページもアクセスできなくなっています(合掌)。
したがって今後の更新も望めません。

もう一方のAXキーボード設定の方法も、ドライバが古いため、キーボードについている音量調節やミュートボタンなどが機能しなくなり、不便な思いをすることが多くなりました。

何とかならないものかなあ、と思っていたところにhimazu氏から教えてもらったのが、(3) Autohotkeyを使う方法です。
詳しくはこちらのブログを見ていただきたいのですが、 要はAutohotkeyというツールをインストールして、「RAlt::vk19」とだけ書いた拡張子.ahkのファイルを作成し、そのファイルをスタートメニューの「スタートアップ」フォルダーにコピーしておくだけです。

ちなみに日本語キーボードをお使いの方であれば、最初から英語キーボードの「`」の位置にある「半角/全角」キーにIMEの切り替えが割り当てられているので、(4) 右Altを半角/全角キーに割り当てる、という方法も使えます。
キーの割り当ての変更は通常、レジストリキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
の「Scancode Map」という名前のレジストリにバイナリデータを設定することによって行います。
例えば私の場合、「00 00 00 00 00 00 00 00 02 00 00 00 1D 00 3A 00 00 00 00 00」と設定することによってCaps LockをつぶしてCtrlと同じ動作をするようにしています(詳しくはググってみてください)。
また、同じことをGUIで簡単に設定できるようにしたremapkeyというツールもあり、これはWindows Server 2003 Resource Kit Toolsに入っています。
繰り返しますが、これは日本語キーボードにだけ有効な手段です。
先ほどのhimazu氏のブログにも書いてありますが、英語キーボードの場合には、そもそもIME切り替えのスキャンコードを発生するキーが存在しないので、無理なのです。
(ちなみに、日本語キーボードと英語キーボードを両方つなげばremapkeyの画面上に「半角/全角」キーが出てくるので、これを右Altにマップすることも試してみましたが、日本語キーボードをつないでいる間はうまく働くものの、外してしまって英語キーボードだけにすると、右Altで「`」が入力されるという結果となりました。まあ、当然ですわな…)

長くなってしまいましたが、ご参考になれば幸いです。
posted by ぽそこし at 16:24| Comment(0) | TrackBack(0) | 備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック