【ホームページへ】 【Linux MLD 4 サポート】 【XF86Config ファイルについて】

Linux MLD 4 Q&A

Keyboard セクションについて

前半にはキーボードの基本的な設定がかかれています。 XF86Configのmanページを見ればわかると思います。 キーボードのリピート間隔はここではなく、kbdrateで設定する方が現実的です。
ここではMetaキーとXKBについて捕捉しておきます。 下の行は左のAltキーをMetaキーに設定します。XKBのデーターベースで 書けるので今は必要ないはずです。

   LeftAlt         Meta
Metaキーは入力する文字コードの8ビット目を1にするための修飾キーです。 例えばktermで Meta-; Meta-: を入力すると 「産」 が表示されます。 これは「産」のEUCコードが8ビット目を1にした;と:の2バイトで構成 されるからです。またMetaキーはCtrlキーと同様に、emacsやnetscape等 でコマンドを実行するために使われています。 XでのMetaキーの扱いはShiftやCtrlと違い少し複雑です。Xではキーボード イベントの中にどの修飾キーが押されているかを示す、ビット列(modifire bit) があります。 8ビットで構成され、Shift,Lock,Control,Mod1-Mod5になっています。 ShiftやCtrlは直接対応するビットがありますが、Metaを直接表すビットはありません。 modifire bitのどれかが1でかつ、そのキーのKeySymリストがMeta_Lまたは Meta_Rを含んでいる場合にMetaキーが押されていると解釈されます。 後で説明するXKBのjp106キーボードでは
    key  {        [       Alt_L,  Meta_L          ]       };
    key  {        [       Alt_R,  Meta_R          ]       };
    // begin modifier mappings
    modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };
と定義されています。Altキーを押した時にはMod1のビットが1になり、 AltキーのKeySymにはMeta_Lが含まれていますので、Metaキーが押されている ことになります。左右どちらのAltキーもMetaキーとして使えます。 xmodmapコマンドで、現在の修飾キーを確認したり、変更ができますので、 試すこともできるでしょう。 普通はキーボード変換テーブルでMetaを修飾キーとして使います。例えば ktermでは
Meta: insert-eight-bit()
がデフォルトの変換テーブルの中に登録されています。

後半のXkbで始まる行は、X11R6から採用されたXKB Extensionにしたがったキーボードの 設定を記述します。日本語キーボードの指定などはこの部分で行います。 通常は以下の3行でキーボードの配列等を指定します。

    XkbRules        "xfree86"
    XkbModel        "jp106"
    XkbLayout       "jp"
これは/usr/X11R6/lib/X11/xkbにあるrules/xfree86という規則のファイルから モデルがjp106でレイアウトがjpであるkeymapを作成することを指示しています。 keymapにはkeycodes,types,compatibility,symbols,geometryの項目があり、 これらを規則のファイルから構成します。(XkbKeycodesからXkbGeometryまでの行はなくても良いはずです) xfree86の規則ファイルにはいくつかのオプションが記述されています。例えば 以下の行の#を削除すれば、CtrlキーとCapsLockキーを入れ替えることができます。
#    XkbOptions  "ctrl:swapcaps"
もう1つの方法は規則ファイルを使わずに直接keymapにkeycodes等を設定する 方法です。XkbKeycodesからXkbGeometryまでの行で、直接keymapにkeycodes等を 設定します。
    XkbKeycodes     "xfree86"
    XkbTypes        "default"
    XkbCompat       "default"
    XkbSymbols      "us(pc101)"
    XkbGeometry     "pc"
最後はXkbKeymapを使う方法で、直接keymapのエントリを指定できます。
#   XkbKeymap       "xfree86(jp106)"

以下の設定ファイルは,あくまでも個人の環境によって 違いますので 注意してください。

------------------------------------------------------------------------
Section "Keyboard"

    Protocol    "Standard"

# when using XQUEUE, comment out the above line, and uncomment the
# following line

#    Protocol   "Xqueue"

    AutoRepeat  500 5
# Let the server do the NumLock processing.  This should only be required
# when using pre-R6 clients
#    ServerNumLock

# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#    Xleds      1 2 3

# To set the LeftAlt to Meta, RightAlt key to ModeShift, 
# RightCtl key to Compose, and ScrollLock key to ModeLock:

   LeftAlt         Meta
   RightAlt        Meta
   ScrollLock      Compose
   RightCtl        Control

# To disable the XKEYBOARD extension, uncomment XkbDisable.
#    XkbDisable

# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults).  For example, for a non-U.S.
# keyboard, you will probably want to use:
#    XkbModel    "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
#    XkbModel    "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#    XkbLayout   "de"
# or:
#    XkbLayout   "de"
#    XkbVariant  "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
#    XkbOptions  "ctrl:swapcaps"

# These are the default XKB settings for XFree86
    XkbKeycodes     "xfree86"
    XkbTypes        "default"
    XkbCompat       "default"
    XkbSymbols      "us(pc101)"
    XkbGeometry     "pc"
    XkbRules        "xfree86"
    XkbModel        "jp106"
    XkbLayout       "jp"

#   XkbKeymap       "xfree86(jp106)"
EndSection


---------------------------------------------------------------------------