Hatena::ブログ(Diary)

出力テスト RSSフィード

2010-04-05

Capsと左Ctrlの入れ替えと、そのレジストリの意味

新年度になってマシン環境を変えることになり、一年間お世話になったVistaマシンからWindows 7へ。

んで、前からCapsと左Ctrlは入れ替えて使ってたので今回も入れ替えようと思ったのだが、やり方を忘れたのでグーグル先生に聞いてみた。


Windows 2000/XP/Vista/7 と設定方法は同じらしく、レジストリをいじればOK

やり方は

http://www.center-left.com/blog/archives/2007/02/windows_vistacaps_lockctrl.html

を参照。


それだけではつまらないので、レジストリファイルの意味を調べてみた。

http://www.jaist.ac.jp/~fujieda/scancode.html

http://www.losttechnology.jp/Tips/keyscancodemap.html

http://www.geocities.jp/makoko1974/w2ktips.htm

http://smallvoid.com/article/winnt-scancode-map.html

このあたりを参照。一番上がわかりやすかった。

一番下は英語だけど詳しい。


自分なりにまとめてみると、

ファイルの中身は

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,\

3a,00,1d,00,00,00,00,00

となっていて、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutというところに、Scancode Map というキーを追加してる。


その中身は、一つ一つの「,」での区切りが 16進数2桁で1 byte を表していて、4 bytes毎でひとかたまりのバイナリ型の値で構成されてる。

最初の4bytesがバージョン、次の4bytesフラグらしい。ここまでは0で埋める。

次の4bytesは末尾を示す0値を含めた値の数。つまり、キーを入れ替える数+1。

なんだけれども、実際に読み込まれる時には1 byteずつ逆順で読み込まれるそうなので、「03」が先頭になっている。


で、次からが、入れ替えるキーのスキャンコード。

元のコード、入れ替えるコードの順に指定して、これも逆順に読み込まれるので順番を入れ替える。

Caps Lock → Ctrl

0x003a (Caps Lock) + 0x001d (Ctrl)

↓つなげる

00,3a,00,1d

↓逆順

1d,00,3a,00

次はCtrl → Caps Lock を同様に。

今回は違うけれども、キーを無効にしたい場合は 入れ替えるコードを0x0000に指定すればOK。(つまり、00,00, の後に無効にするキーのスキャンコードを逆順で書けばいい。)


んで、最後が末尾を表す"0"(00,00,00,00)。


これで、スキャンコードさえわかればキーの入れ替えができる。

(スキャンコードの一覧も載せようと思ったんだけど、うまくまとまってるのがなかったので、自分で調べてください。すみません;)

最後に、レジストリいじるので、くれぐれも注意して自己責任で!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/titan22/20100405/1270467982