PC のキーボードは所謂スキャンコードを発行します。これは元来キー番号です。BIOS はこれらのスキャンコードをキートップに印刷された文字の文字コードに変換します。 デフォルトでは、BIOS は通常、キーボードが US レイアウトであると推測します。 一度オペレーティングシステムが起動してしまえば、オペレーティングシステムが、 異なった割り当てを使うことも可能です。
ブート時は、LILO は BIOS が提供する基本的なサービスしか使うことができません。 ですから、US キーボード用の文字コードを受け取ります。そこで LILO は実際の レイアウトに合った文字コードに再マップする簡単なメカニズムを提供します。 [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>には、キーボードレイアウトの名称が入ります。
Example 4-11. キーボード変換テーブルのコンパイル
keytab-lilo.pl de >/boot/de.ktl |
キーボード変換テーブルファイルは、グローバル構成オプション
keytable=<テーブルファイル名> |
で指定します。完全なファイル名を指定する必要があります。
Example 4-12. キーボード変換テーブルの利用
keytable = /boot/de.klt |
[1] | 現在のメカニズムは完璧ではありません。なぜなら、BIOS では、スキャンコード を最初に文字コードに変換してしまうからです。このことは、US キーボードには、 無い文字のスキャンコードの組み合わせは、(BIOSが変換しないので) LILOに無視 されることを意味します。 |
[2] | いくつかのシステムでは、loadkeys はルート権限がないと実行できません。 つまり、keytab-lilo.pl もルート権限で実行する必要があります。 |