Windows 7 で英語キーボードを使って日本語を入力する

エルゴノミックなキーボードを愛用していたりすると、英語配列の入力にならざるを得ないことが往々にしてあるわけですが、Windows でキーボードのレイアウトを英語に変更すると、MS-IME が消えてしまうので日本語入力ができなくなるという悲しい現実があります。

かといって日本語入力ができるように日本語配列の設定で英語配列のキーボードを使うと、キートップの表示と入力できる文字が違ったり、そもそも入力できない文字があったりしてストレスが溜まりに溜まるわけです。

日本語で文章を書きたいアメリカ人だっていると思うのですが、この事情は Windows 7 でも変わっていないようでした。



で、どうするかという話ですが、そこはやっぱり Windowsレジストリを編集しましょうという話になるわけで、コマンドプロンプトから regedit を起動して活躍してもらいます。編集するキーは XP と変わりません。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 にある Layout file を KBDJPN.DLL から KBDUS.DLL に書き換えて再起動します。


これで Kinesis などの人間工学的に素敵なキーボードで Windows 7 が快適に使えるようになります。

と、今回は文体を変えてお送りしてみました。

参考


(2010/05/27 追記)
自分では試していませんが、配列の異なるキーボードを同時に使う方法もあるようです。覚えておくと役に立つかも。
少なくとも XP ではできるもよう。
けっこう長くなりますが文章を引用させていただきます。
リンク先にはキャプチャ画像もあるので、より分かりやすいです。
配列の異なるキーボードを同時に使う方法 - forPCActionGamer Wiki*

概略

* Windows で複数のキーボードを同時に接続すると、異なる配列ではどちらか一方の配列になってしまうが、これは(特殊なソフトを使わない限り)制限であると思われている場合がある。しかしWindowsXPでは、実はこの制限は無い。つまり異なる配列のキーボードを特にソフトウエアのインストールなしに同時に使用できる。

* 以下はその方法を具体的に説明する。PS/2とUSBの2つを異なる組み合わせで使うという状況を想定する。配列の組み合わせは(PS/2, USB)=(日本語, US)と(PS/2, USB)=(US, 日本語)の2つが考えられるが、ノートPCなど(PS/2, USB)=(日本語, US)の場合を例にとって説明する。(PS/2, USB)=(US, 日本語)でも設定値が異なるだけで同様にできる。

* 手順は大まかに2段階で
1. 配列を変えたいUSBキーボードのデバイスインスタンスIDを見つける
2. 見つけたデバイスインスタンスIDに対応するレジストリエントリを書き換える

バイスインスタンスIDを見つける

1. 発見を簡単にするために、配列を変えたいUSBキーボード以外のHIDキーボードは外しておく。また、そのキーボードを通常使いたいUSBポートに接続しておくこと。これはUSBポートが異なるとデバイスインスタンスIDが異なってしまうからである。
2. デバイスマネージャで「キーボード」の項目をクリックして展開しHIDキーボードデバイスというのを見つける。
3. 右クリックし、プロパティーダイアログを表示させる
4. 「詳細」タブを表示させ、「デバイスインスタンスID」を得る

レジストリエントリを書き換える

1. レジストリエディタを起動し、HKEY_LOCALMACHINE\SYSTEM\CurrentControlSet\Enum\HIDを右クリックし、検索を選ぶ
2. 上で求めたデバイスインスタンスIDの一部を入力する。VID_XXXX&PID_YYYYの部分を入力する(XXXX,YYYYはキーボードにより異なる)。
3. キーが見つかったら、クリックして展開する。サブキーがあるはずである。もしそのキーボードを複数のポートで利用したことがあるなら複数のエントリーがある。上で求めたデバイスインスタンスIDの後半部分に一致するエントリをクリックして展開する。
4. "Device Parameters"というサブキーを選択する。
5. 右ペインで右クリックしDWORD値を作成する
6. 下のようになるので、キー名を"KeyboardTypeOverride"という値に変更する。
7. 変更したらダブルクリックし、値を4に書き換える。
8. 同様にして"KeyboardSubtypeOverride"キーをDWORDで作り値を2にする。下のようになる。
9. リブートする。