[PC][Win7] キー割当て変更

Submitted byshin on日, 2010-02-07 13:51
いろいろ苦しみながらメインマシンをWindows 7に移行させて1ヶ月。一部の環境はあきらめ(スキャナ、TVチューナーが駄目だった)たんだけど、残課題が1つ。
昔Macintoshやunixを使っていた関係で、Windowsも、KeyCtrl,Altime,xkeyemacsのツールを使って(今調べるとこんなに要らなかったっぽい)①ESC,CTRLの位置をUSキーボードに②スペース横で漢字変換をコントロールの変更をしてきたんだけど、Windows7はこれらのツールでキー配置の変更ができない。

■キー配置の変更

いろいろ調べると、xkeyemacsはキーマッピング情報をユーザ個別のレジストリ"[HKEY_CURRENT_USER\Keyboard Layout]"に格納しているんだけど、windows 7は、コンピュータ全体のレジストリ"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]"に設定しないといけないらしい。
当面は、microsoft純正のCaps->Ctrl変換ツール(Ctrl2CAP)でしのいでいたんだけど、本腰を入れてレジストリの書き換えで対応
設定ファイル(レジストリの書き換えを伴うので注意)

Windows Registry Editor Version 5.00

; ※データは4byte長
; ※実際の格納データはLittleEndianなので4バイト単位にswapする必要がある
;
; 00,00,00,00 ヘッダー(バージョン情報)
; 00,00,00,00 ヘッダー(フラグ情報)
; 00,00,00,06 後続するマッピング情報の格納数(最後のNULLを含む)
; 00,29 00,01 ESC(0x29)    ⇒ 漢字(0x01)
; 00,01 00,29 漢字(0x01)   ⇒ ESC(0x29)
; 00,3A 00,1D CAPS(0x3A)   ⇒ LCtrl(0x1D)
; 00,1D 00,3A LCtrl(0x1D)  ⇒ CAPS(0x3A)
; 00,79 00,29 変換(0x79)   ⇒ 漢字(0x29)
; 00,00,00,00 NULLターミネーター

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map" = hex:00,00,00,00, 00,00,00,00, 06,00,00,00,  01,00,29,00, 29,00,01,00, 1D,00,3A,00, 3A,00,1D,00, 29,00,79,00, 00,00,00,00

;=====================================================================
;■Microsoft:  Scan Code Mapper for Windows
;  http://www.microsoft.com/whdc/archive/w2kscan-map.mspx
;  windows2000,XPを対象にしたの情報だけどとりあえず参考になる
;
;■altimeのAltime.txt etc.
;       キー            スキャンコード(★は今回使用したもの)
;       --------------+-------------------
;       漢字            29      ★ ⇒ESC
;       Esc             01      ★ ⇒漢字
;       スペース        39
;       \               2B
;       CapsLock        3A      ★ ⇒左Control
;       左Control       1D      ★ ⇒CapsLock
;       右Control       9D      ※ E0-1Dと書いてある所もある
;       左Alt           38
;       右Alt           B8      ※ E0-38と書いてある所もある
;       無変換(左◇)    7B
;       変換(右◇)      79      ★ ⇒漢字
;       左Windows       DB      ※ E0-5Bと書いてある所もある
;       右Windows       DC      ※ E0-5Cと書いてある所もある
;       (割当なし)      00
;       ひらがな        70
;       Num Lock        45
;       Scroll Lock     46
;       F1~F10         3B~44
;       F11~F12        57~58
;       Application     DD      ※ E0-5Dと書いてある所もある
;       Control+O       218
;       Alt+スペース    439
;
;■レジストリを操作して左CtrlとCaps Lockを入れ替え
;  http://d.hatena.ne.jp/Guernsey/20091125/1259141648
;  How to swap Left-Control for Caps  Lock using xkeymacs 3.47 on Windows7CommentsAdd Star
;  http://d.hatena.ne.jp/stereocat/20100125/1264435071
;  従来のWindowsだと
;  ・コンピューター全体に適用する場合
;      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
;  ・現在ログオンしているユーザ限定の場合
;      [HKEY_CURRENT_USER\Keyboard Layout]
;  で、keyemacsは[HKEY_CURRENT_USER\Keyboard Layout]に書き込んでいるのだけど、
;  Windows 7は、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
;  に書き込まないと動作しない
;
;■他のツール(Ctrl2CAP v2.0)
;  http://technet.microsoft.com/en-us/sysinternals/bb897578.aspx
;  ・インストール     ctrl2cap /install
;  ・アンインストール ctrl2cap /uninstall
;  ・If it happens to be a caps-lock, ctrl2cap changes it into a left-control.
■emacsキーバインドの設定

xkeyemacsは、キー配置の変更は大変なんだけど、キーバインドの変更ならwindows2000と同じ。