Xorg7.4のキーボード設定をkwsk その2

Xorg7.4のキーボード設定をkwsk その1の続き。

で話は戻る。
俺はxorg.conf以下のように設定していたわけだ。

Option          "XkbRules"      "xorg"
Option          "XkbModel"      "jp106"
Option          "XkbLayout"     "jp"
#CTRLとCAPSLOCK入れ替え
Option          "XkbOptions"    "ctrl:swapcaps"


これをXorg7.4でもXKBに伝えてやればいいのだが、方法は3つある。
1. haldを通して伝える。
2. haldを通さず、xorg.confから伝える。
3. haldもxorg.confも通さず、直接伝える。


1. haldを通して伝える場合。
従来のxorg.confで書いていた設定をhald向けに書き直す必要がある。
設定ファイルは/usr/local/etc/hal/fdi/policy/に置いとけばhaldが見てくれる。
ベースにする設定ファイルは/usr/local/share/hal/fdi/policy/10osvendor/10-x11-input.fdi。

http://cgit.freedesktop.org/xorg/xserver/tree/config/x11-input.fdi
ここを見ると、xorg.confのオプションをそれぞれ以下の指定に当てはめていけばいいことが分かる。

input.x11_options.XkbRules
input.x11_options.XkbModel
input.x11_options.XkbLayout
input.x11_options.XkbVariant
input.x11_options.XkbOptions


なのでこうなる。

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
 <device>
   <match key="info.capabilities" contains="input.keyboard">
     <!-- If we're using Linux, we use evdev by default (falling back to
          keyboard otherwise). -->
     <merge key="input.x11_driver" type="string">kbd</merge>

     <!-- ここから追加 -->
     <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
     <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
     <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
     <merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge>
     <!-- ここまで追加 -->

     <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
            string="Linux">
       <merge key="input.x11_driver" type="string">evdev</merge>
     </match>
   </match>
 </device>
</deviceinfo>

名前は適当に/usr/local/etc/hal/fdi/policy/10-x11-input-jp106-capsctrl.fdiとして、haldを再起動してからXを起動すればOK。


Xorg7.4のキーボード設定をkwsk その1
Xorg7.4のキーボード設定をkwsk その3