4.6. キーボード変換

PC のキーボードは所謂スキャンコードを発行します。これは元来キー番号です。BIOS はこれらのスキャンコードをキートップに印刷された文字の文字コードに変換します。 デフォルトでは、BIOS は通常、キーボードが US レイアウトであると推測します。 一度オペレーティングシステムが起動してしまえば、オペレーティングシステムが、 異なった割り当てを使うことも可能です。

ブート時は、LILO は BIOS が提供する基本的なサービスしか使うことができません。 ですから、US キーボード用の文字コードを受け取ります。そこで LILO は実際の レイアウトに合った文字コードに再マップする簡単なメカニズムを提供します。 [1]

4.6.1. キーボード変換テーブルのコンパイル

LILO は Linux がテキストコンソールのために使うキーボード変換テーブルから、 レイアウト情報を取得します。それは通常、/usr/lib/kbd/keytables に格納されて います。LILO には、それらのテーブルを読んで、マップインストーラが利用するのに 適したテーブルを生成するプログラム keytab-lilo.pl が含まれています。 keytab-lilo.pl はプログラム loadkeys を実行して、構文解析が容易なフォーマット にしてテーブルに出力します。 [2]

keytab-lilo.pl は以下のように使います−

  keytab-lilo.pl [ -p <元のコード>=<新しいコード> ] ... 
    [<パス>]<デフォルトレイアウト>[.<拡張子>] ]
     [<パス>]<キーボードレイアウト>[.<拡張子>] ]  


  -p <元のコード>=<新しいコード>
     変換テーブルファイルから得た割り当てを(``パッチ'')で訂正します。例えば
    もし大文字のAが押された時に、アットマークにしたかった場合、-p 65=64 と
    します。-p オプションは何度も繰り返すことができます。コードは 0x や 0 を
    先頭につければ、それぞれ 16 進数や 8 進数で指定することもできます。

  <パス>  ファイルのあるディレクトリを指定します。デフォルトパスは
    /usr/lib/kbd/keytables です。

  <拡張子>  通常は、.map が続きます。もしファイル名にドットがない場合は、
      自動的に付加されます。

  <デフォルトレイアウト>  BIOS による変換を指定するレイアウトです。
     省略すると US が使用されます。

  <キーボードレイアウト>  キーボードの現実のレイアウトです。

keytab-lilo.pl は変換結果を標準出力にバイナリ文字列として出力します。従って テーブルは、どんな場所でも、またどんな名称でも格納できます。しかし、習慣的に /boot/<kbd>.ktl("Keyboard Table for Lilo")あたりがいいでしょう。 <kbd>には、キーボードレイアウトの名称が入ります。

4.6.2. キーボード変換テーブルの利用

キーボード変換テーブルファイルは、グローバル構成オプション

keytable=<テーブルファイル名>

で指定します。完全なファイル名を指定する必要があります。

Notes

[1]

現在のメカニズムは完璧ではありません。なぜなら、BIOS では、スキャンコード を最初に文字コードに変換してしまうからです。このことは、US キーボードには、 無い文字のスキャンコードの組み合わせは、(BIOSが変換しないので) LILOに無視 されることを意味します。

[2]

いくつかのシステムでは、loadkeys はルート権限がないと実行できません。 つまり、keytab-lilo.pl もルート権限で実行する必要があります。