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)。
これで、スキャンコードさえわかればキーの入れ替えができる。
(スキャンコードの一覧も載せようと思ったんだけど、うまくまとまってるのがなかったので、自分で調べてください。すみません;)
最後に、レジストリいじるので、くれぐれも注意して自己責任で!
Aptana Studio のアップデートで起動エラー
chrome extensionの作成にAptana Studioを使っているのだが、アップデートしてなかったのでしてみようと思いアップデート。
アップデート自体はEclipse系なので ヘルプ>更新 の確認で簡単に出来たのだが、アップデート後ログファイルを見るようにというメッセージが出て起動しない。。。
ググってみたら先人が同様の事態に遭遇していたようなので、真似したら出来た。
http://picopon.asablo.jp/blog/2010/03/10/4936159
ただ、スタンドアローン版つかってるので、中身を eclipse.exe から AptanaStudio.exe に変えてから実行。
バージョンは2.0.0から2.0.4へ。
先人の記事に感謝。
名前変更とか、進捗とか、つまってた勘違い事とか。
Chromeのwindowサイズを変えるextensionを作ってるんだけど、WindowSizerからChromeSizer名前変える事にしました。
といっても、まだギャラリーに上げる段階まで行ってないので変えたからってどうもないんだけども。
んで、こないだからの進捗を。。。
まず、詰まっていたgetCurrentとかgetLastFocusedの問題。
getCurrentとかgetLastFocusedは返り値がなくってコールバック関数を指定しないといけないらしい。
てっきり返り値返ってくるもんだと勘違いしてたので
var window = chrome.windows.getCurrent();
とかしてた。OTL
正しくは
chrome.windows.getLastFocused(function(window){ chrome.windows.update( window.id, updateInfo ); });
こんな感じの使い方。
Javascriptは返り値ないのが普通なのか。
コールバック関数の使い方はわかったけど、いまいち自分の定義した関数での使い方がわからん。
ご無沙汰してしまった。。。
サボるつもりはなかったのだが、かなり間が空いてしまった。
書く習慣付けないと書かなくなってしまうからなぁ。気をつけよう。