キーバインド(key bind)とは、キーアサイン(key assignment)とも呼ばれ、キーボードの個々のキーへの記号や機能の割り当てのことです。例えばファンクションキーは機能が固定されていないので、F1を押したらコピー機能を呼び出すなど、好きに機能を割り当てることができます。
これと同じように、「A」キーを押した時に「B」が画面に表示されるようにキーの割り当てを変更することができます。このレポートでの目的は普段利用しない「無変換」キーや「ひらがな」キーを利用頻度の高いCtrlキーやAltキーに変更することです。
キーバインドを変更する方法には、CmdSpaceなどのキーバインド変更ツールを利用する方法もありますが、ここではWindowsのレジストリを編集してキーバインドを変更します。
手順は次の通りです。
以上の手順でキーバインドを変更します。次にScancode Mapのフォーマットを解説します。
Scancod Mapの情報はバイナリ型(2進数型)で管理されています。設定が完了したScancode Mapエントリをダブルクリックして開くと次のようになります(図1)。以後はこの図を中心に解説していきます。
http://ruffnex.oc.to/defolos/text1/figure/figure36.jpg
まず<値の名前>がScancode Mapであることを確認します。ここには編集しているエントリの名前が表示されます。エントリは名前を持つデータのことで、データの入れ物のようなものです。必ず名前を持っていますが、各キーにひとつだけ名前のないエントリが存在します。これはregeditでは「(既定)」と表示されています。
レジストリはOSの起動や各種のサービスの起動に関わる重要な設定が保存されています。間違えて異なるキーを編集してしまうとWindowsが起動しなくなることもありますので、編集前に確認を行います。
次に<値のデータ>の部分を説明します。左の4文字づつ「0000」、「0008」、「0010」と列になって表示されている部分はアドレスです。何番目のデータを編集しているのかを見やすくするインジケータの役割を持っています。4文字の列の後部に少し隙間が開いて「00」、「01」や「79」などのように2文字づつ組が8個つらなって1行を構成している部分があります。ここが編集部分です。新規作成した直後はこの部分が空白になっていますので、カーソルをもっていって16進数の数字を入力することで編集します。その後部の「......y.」のような部分は編集されたデータをASCII文字で表示した部分です。ASCII文字として表示できないものは「.」に置き換えられています。
編集部分の1行目「00 00 00 00 00 00 00 00」はヘッダーです。この部分には変則的な規則はないので、そのまま00を8個入力します。次の「02 00 00 00」は、この後に続くDWORD型(整数型)のデータの個数が入ります。キーバインドは整数の数字で管理されていますので、ここには交換元と変換先のペアの数の2倍の数が入ります。その次の「01 00 79 00」がキーバインドの指定部分です。これを次のように2つに分けます。
前者の「01 00」の部分が変換元となるキーの値です。後者の「79 00」の部分は変換先となるキーの値です。例えば、Escキーを無変換キーに割り当てたい場合、変換元となるキーがEscで変換先となるキーは無変換キーです。キーバインドは先述のように整数の数値で管理されていますので、変換したいキーの値を16進数で設定すれば変換が可能です。代表的なキーの割り当てを次に挙げます。左側がキーの名前、右側がキーに割り当てられている数値です。16進数なので先頭に「0x」を付加して表現しています。
Caps LockキーをCtrl(左)に変更したい場合、Cpas Lockキーは0x3A、Ctrl(左)は0x1Dに割り当てられていますので、「0x3A 00 1D 00」と設定します。図1の例ではキーバインドの変更部分は「0x01 00 79 00」となっていましたので、これはEscキーを変換キーに変更するということを意味しています。
最後の行の「00 00 00 00 00 00 00 00」の部分はフッターです。ヘッダーと同じように変則的規則はないのでこのまま入力します。
キーバインドの設定個数は自由に変えられますので、自分の使いやすいようにカスタマイズすると良いでしょう。キーバインドを元に戻したい時は作成したScancode Mapエントリを削除すれば元に戻ります。
ここまでの設定を終えたら<OK>をクリックし、Windowsを再起動させます。これでキーバインドが変更されます。