Windows でキー配列を変える

最初にお断りしておくが、ここに記した内容に関しては、筆者は一切の責任を持たない。 この記事の通りにやった場合、あなたのシステムはクラッシュする可能性もある。 もし、この記事の内容を試そうとするならば、すべては自己責任のもとでやってほしい。

さて、やりたいことは 2つある。

前者は、ここ (http://homepage1.nifty.com/salt/memo.htm) の記事が参考になる。 あるいは、Windows の resource kit に入っている remapkey というツールを使うのが簡単 (残念ながら有償のツールになってしまったため、 作者 (http://hp.vector.co.jp/authors/VA000092/) のところからは削除されてしまった)。 私は試していないが、フリーなものだと、 KeyCtrl (http://homepage2.nifty.com/DSS/KeyCtrl.htm) というのもあるらしい。 ちなみに私は、

  ESC         ⇒  BackSpace
  半角/全角   ⇒  Esc
  CapsLock    ⇒  Ctrl
  変換        ⇒  Shift
  ひらがな    ⇒  半角/全角  

という、かなり変態的な再配置をしている。

後者は、通常のツールでは難しい。 Windows ディレクトリに入っているキーボードドライバを書き換える必要があるからだ。 以下、WinXP を例に、順を追って説明する。


kbd106n.dll をコピーする
日本語キーボード用のドライバは、C:\Windows\System32\kbd106n.dll だ。 同じ場所に kbd106.dll というのがあるが、書き換えるのは、名前に n が付いているほう。 このあたりの仕組みは、2000 から XP で変更があったようだ。 とにかく、この kbd106n.dll をどこか適当な場所にコピーしてくる。
バイナリエディタで kbd106n.dll を編集する
バイナリエディタを持っていなければ、 vector あたりから適当なものをダウンロードする。

バイナリエディタでコピーした kbd106n.dll を開いたら、以下のアドレスのところを、 左側の内容から右側の内容に修正して保存する。

    000005cc: 00  ->  29
    000005cd: f0  ->  00
    000005fe: 27  ->  26
    00000608: 28  ->  2a
    00000612: 29  ->  28
    0000071e: 3a  ->  27
    00000720: 2a  ->  22
    00000732: 40  ->  5b
    00000734: 60  ->  7b
    0000073c: 5e  ->  3d
    0000073e: 7e  ->  2b
    00000766: 2b  ->  3a
    000007e4: 5b  ->  5d
    000007e6: 7b  ->  7d
    0000080e: 5d  ->  60
    00000810: 7d  ->  7e
    0000084c: 22  ->  40
    0000085e: 26  ->  5e
    00000870: 3d  ->  5f
修正した kbd106n.dll を元の場所にコピーする
この作業は、セーフモードで再起動してからやる必要がある。 通常のモードでは、システムファイルが書き換えられると、 システムによって即座に元の状態に戻されてしまうからだ。

セーフモードで立ち上げるには、F8 キーを押しながら再起動すればよい。 私はコマンドプロンプトありのセーフモードを選択した。 Admin でログインするとコマンドプロンプト画面になるので、 ここで copy コマンドを使ってオリジナルの kbd106n.dll を上書きする。 後は、ctrl-alt-del で、通常モードで再起動する。

これでキー配列は、めでたく US 配列になっている。 「:」キーを押すと「’」、「Shift + :」キーを押すと「"」が出るはず。 プログラマには、やっぱりこちらのほうが使いやすいよねぇ。

Win2000 では
Windows2000 での日本語キーボード用のドライバは、C:\WinNT\System32\kbd106.dll だ。 こちらは名前に n が付かない。変換テーブルは次のとおり。 基本的には、kbd106n.dll のものとアドレスがずれているだけ。
      000007d4: 00  ->  29
      000007d5: f0  ->  00
      00000806: 27  ->  26
      00000810: 28  ->  2a
      0000081a: 29  ->  28
      00000926: 3a  ->  27
      00000928: 2a  ->  22
      0000093a: 40  ->  5b
      0000093c: 60  ->  7b
      00000944: 5e  ->  3d
      00000946: 7e  ->  2b
      0000096e: 2b  ->  3a
      000009ec: 5b  ->  5d
      000009ee: 7b  ->  7d
      00000a16: 5d  ->  60
      00000a18: 7d  ->  7e
      00000a54: 22  ->  40
      00000a66: 26  ->  5e
      00000a78: 3d  ->  5f 

初出: 2001年7月5日


トップページへ / Last modified: 2002-07-05 16:55:39 JST
Created by OKA Toshiyuki < oka-t@fides.dti.ne.jp >