さて、毎度おなじみ、キーボードの設定です。
私は英字キーボードを使っています。
でも、英字にしても106日本語にしても、Controlキーが押しにく過ぎです。Linux等、UNIX系のOSは、かなり Crl+○ という操作が多いので、これではかないません。 そこで、Linux等の定番カスタムとして、Caps Lock を Control として割り当てて使おうというものです。
定義ファイルは何処に・・・
Vineの場合は、/usr/lib/kbd/keymaps/i386/qwerty/ 以下に、各種の定義ファイルが格納されています。
で、「どの定義ファイルを使うか?」の設定が、/etc/sysconfig/keybord というファイルに書かれています。私の場合はUSキーボードを選択したのでこんな感じになっています。
KEYBORDTYPE="pc" KEYTABLE="us"
この、「KEYTABLE」で定義された言葉に .kmap.gz を付けると、使用するキー定義ファイルとなります。すなわち、私の場合は、 /usr/lib/kbd/keymaps/i386/qwerty/us.kmap.gz という定義ファイルが使われているわけです。
定義ファイルを改造する
さて、では、 /usr/lib/kbd/keymaps/i386/qwerty/us.kmap.gz を改造するわけですが、このファイルは単なるテキストファイルですが、gzipで圧縮されており、そのままでは編集できません。なので、一旦、/root にでもコピーして作業しましょう。
$ su - # cd /root # cp /usr/lib/kbd/keymaps/i386/qwerty/us.kmap.gz ./
これを解凍します。
# ls # anaconda-ks.cfg us.kmap.gz # gzip -d us.kmap.gz # ls anaconda-ks.cfg us.kmap #
us.kmap.gz が us.kmap になり、解凍できました。あとは、エディタで書き換えます。
この時点では、どっちみちエディタはviしか入っていないでしょう。私はemacs派ですが、viは、最低限の使い方は憶えておくべきでしょう。なにか異常が起きた時にはviしか動かせないなんてこともあります。また、これは私の経験則ですが、この、キー定義ファイルを編集する場合、なぜかemacsでやると、かならずエラーになります。どっちにしても、こいつはviで編集です。
書き換える
エディタで中を見れば、おそらく一目瞭然でしょう。各キーを番号で指定してあります。この番号を書き換えると、各キーボタンに好きな割り当てが出来ます。
まずは、Caps Lock と 左Ctrl を入れ替えます。
keycode 29 = Control → keycode 58 = Control keycode 58 = Caps_Lock → keycode 29 = Caps_Lock
はい。これでOK。
ちなみに私は、Capl Lock をほとんど使いませんので、29番も Control を割り当てています。まあつまり、どっちを押しても Control になると。
また、これは好みが分かれるところですが、emacs などでは、よく「メタキー」と言って、Esc + ○ なんていう操作も少なくありません。そういう場合、普通のキーボードの Esc はチョット遠いと感じる場合があります。これの対処のため、「`」キー (日本語キーボードでは、全角/半角キー)とEscを入れ替えちゃうなんてのもよくやります。
このキーを定義ファイルの中で捜しても見つからないことがあります。このキーは、「grave」といい、41番に割り当てられています。
keycode 1 = Escape → keycode 41 = Escape keycode 41 = grave → keycode 1 = grave
ま、こんな感じで、いろいろ割り当てたり入れ替えたりできます。
意図的に、「なにもしてくれるな!」という割り当ては、番号の代わりに nul を割り当てます。そうすると、そのキーは、なんにもしないキーとなります
動作確認
出来上がった定義ファイル。これ、間違いとかはないでしょうか?
そこで、一時的にこの定義ファイルを読み込んでみて、意図したとおりにカスタムされているか確認してみます。
# loadkeys ./us.kmap Loading ./us.kmap #
もし、動作がおかしかったり、エラーが出ている場合は、元に戻してもう一度チェックしてみましょう
元の定義ファイルにもどす
# loadkeys -d Loading /usr/lib/kbd/keymaps/i386/qwerty/us.kmap.gz #
起動時に読み込むようにする
さて、うまく出来上がった定義ファイル。これを、起動時に自動的に読み込むように設定します。
まず!
カスタムした us.kmap 。これをそのままの名前で使うのもいいんですが、念のため、元の us.kmap も残しておくべきです。なので、カスタムしたほうの名前を変えます。例えば・・
# mv us.kmap us_hide.kmap # ls anaconda-ks.cfg us_hide.kmap #
とか。
で、さらに、このファイルを元通り圧縮します。
# gzip us_hide.kmap # ls anaconda-ks.cfg us_hide.kmap.gz #
そして、標準の場所に移動しておきます。
# mv ./us_hide.kmap.gz /usr/lib/kbd/keymaps/i386/qwerty/
これで、いつでもこのキー定義を呼び出せるようになりましたが、起動時に自動的に読み込みたいですよね?
そこで、/etc/sysconfig/keybord を書き換えます。
こんな感じね。
KEYBORDTYPE="pc" KEYTABLE="us_hide"
さて。うまくできましたら、念のため、再起動とかして確認しておいてください。(この定義は、どうせ一度ちゃんとやれば、まず二度と弄らないものですから。逆に失敗しないようにしておきましょう)