Windows7 でCtrlとCapslockを交換+α
どうもいっす。
昨日,実家に帰って参りました。
今回は,10泊11日くらいの予定です。
ノートパソコンをもってないので,パソで何かするとなると,
人様のPCでの作業となるわけですが,そのくらい長い間使うとなると,
俺俺環境を作りたくなるわけで。
というか,そうしないと仕事にならんわけで。
というか,ニートなので,仕事はしてないわけで。
Cygwinを入れるか? Meadowを入れるのか?
いやさ,CtrlとCapslockを交換するのが何よりの作業なのだ!
とりあえず,何はともあれ,xkeymacs を入れた。
Windows7でも動いている様子。
注意事項
レジストリをいじるので,自己責任で。
困ったら,regedit で,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
内にある,Scancode map を削除して,再ログインすれば大丈夫なはず。
ま,気をつけましょう,ということで。
Windows7の場合は大変らしい。
xkeymacs でもだめ。
つまり,HKEY_CURRENT_USER\... に値を書き込んでも,反映されない。
なので,システムワイドな設定になってしまう。
ググってみると,外人さんも困ってた様子。
EmacsWiki にkeymapper というソフトもありまして,
それなら大丈夫とかあったんですけど,
やはり,Windows7ではあかんかったです。
Ctrl と Capslock を交換しよう
レジストリで変更するわけですが,ユーザ別に変更することは無理な様子,
windows7の場合。
なので,whitypigさんは頭を使って,.regファイルを2個用意して,
設定用,削除用とすればよいとひらめいたわけございます。
参考ページ
http://www.crimson-snow.net/hmsvr/windows/memo/ctrl_caps.html
によると,以下のようにすればいいらしい。
(CtrlとCapslockを交換する場合)
見やすくするため,4バイトずつ区切って,解説つけます。
<-- バージョン --> 00 00 00 00 <-- フラグ --> 00 00 00 00 <-- 変更キー数+1 --> 03 00 00 00 <-- 0x001D(Capslock) を 0x003A(左Ctrl)に --> 1D 00 3A 00 <-- 0x003A(0x003A(左Ctrl) を 0x001D(Capslock) に --> 3A 00 1D 00 <-- ターミネータ --> 00 00 00 00
- バージョン。0で埋めときましょ。
- フラグ これも0で埋めときましょ。意味は知りません。
- Capslockから左Ctrlへのマップ
- リトルエンディアンなので,高位桁を高位アドレスに置くわけですが,とりあえず,逆さまにしとけばオッケー牧場。
- 左CtrlからCapslockへのマップ
- 変更キー数+1
- この例の場合は,Capslock,左Ctrl,の2つに,ターミネータを足して,3になるわけです。
解説はそんなところ。
reg ファイルにする
http://support.microsoft.com/kb/310516/ja
を参考にしましょう。
上記したことを.regファイルにすると,
Capslockと左Ctrlを入れ替えるための,reg ファイルは,
次のようなります。
Windows Registry Editor Version 5.00 [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
これを,Swap_Ctrl_Caps.reg として保存。
続いて削除するための,regファイルを用意します。
上記のMSのページを見ると,ポイントはハイフンの用です。
すると,下記のようになります。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=-
これを,Delete_Scancode_Map.reg とでもして保存しておきましょ。
問題は解決してないだーよ!
これまでのことを実行すれば,xkeymacs の力をと合わさることで,
秀丸とかで,emacs的な挙動を実現できる,というか,
C-u Ctrl+hで,がりがり削除していけるわけです。
しかし,今日日のキーボードは,「W」に対して右側にAltがあります。
そして,その左側には,「Windowsキー」が,
「えっ?ここ,元から俺の場所だったけど?」みたいな顔をして,
座っています。
これはこまります。何が困るって,Alt-wとかAlt-fとかやりずれー。
なので,交換しちゃいます。
上記を参考にすると,ポイントは,
- キーの個数が2つ増える --> 05 00 00 00
- 左Alt は,0x0038
- 左Windowsキーは,0xE058
です。
これを踏まえて,ファイル名を,Swap_CapsCtrl_LeftAltWin.reg とでもすると,
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,05,00,00,00,1d,00,3a,00,3a,00,1d,00,38,00,5B,E0,5B,E0,38,00,00,00,00,00
となります。
ちなみに,削除する用のregファイルは,Scancode map を削除するだけだから,
さっきと同じでオッケ。
その効果のほどを知れ!
これで準備は整いました。
交換用のregファイルをダブルクリックして実行すると,
正常に書き込まれました的なことをいわれるはずです。
いわれなかったら,どっか間違ってます。
そして,ログオフ,ログインで,効果を確認。
おっととっと夏だぜ! 忘れてはならないのは,削除用のregファイルの検証。
こちらも,実行して,ログオフしてログインして確認しときましょう。
他の人が使うパソではなかったらいいですが。
立つ鳥なんとやらです。