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ファイルの検証。
こちらも,実行して,ログオフしてログインして確認しときましょう。
他の人が使うパソではなかったらいいですが。
立つ鳥なんとやらです。

まとめ

これで,環境を構築するための準備が整ったといえるでしょう。
本番は,ここから。CygwinMeadowのインストール,そして
設定。ま,開発する予定はないから,たぶんそこまで大変ではないはず。
それよりも回線が遅いので,ダウンロードの方が時間がかかるはず。
というか,かかった。昨日の夜に,両方DLしておいたのだ。
大変なのは,Firefoxだったりするかも。keyconfigとか忘れちゃったよ。


以上です。
間違いを含む可能性があるので,気づいたら指摘してもらえるとうれしいです。
また,xkeymacsの作者様に感謝です。