Seichan です.FreeBSD をクライアントとして使用する,其ノ三.
今回も X.org (X Window System) でマウスについて.
ホイールマウスを使用している場合,HAL のデフォルトの状態で,ホイールマウス等が利用できるので特にやる事はありません.
IBM のキーボードのようなトラックポイントタイプのいわゆる3ボタンチックなマウスの場合は,真ん中ボタンでのスクロールがデフォルトの状態では出来ません.
これではせっかくの IBM キーボードの良さが失われてしまいますので,これを何とかしましょう.
hal が使用するデフォルトのポリシーファイルは /usr/local/share/hal/fdi/policy に収められていますので,このファイルをコピーして編集するのが良いです.
[root@ayanami:~] > cp /usr/local/share/hal/fdi/policy/10osvendor/10-mouse-sysmouse.fdi /usr/local/etc/hal/fdi/policy
10-mouse-sysmouse.fdi は,マウス関連の設定ファイルになっています.このファイルを編集して IBM キーボードのマウス部分を設定しちゃいます.
面倒なので,編集前と編集後のファイルを以下に張り付けます.
— 編集前
<?xml version="1.0" encoding="UTF-8"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.mouse"> <append key="info.addons" type="strlist">hald-addon-mouse-sysmouse</append> </match> </device> </deviceinfo>
— 編集後
<?xml version="1.0" encoding="UTF-8"?> <deviceinfo version="0.2"> <device> <match key="info.udi" contains="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0"> <merge key="input.x11_options.EmulateWheel" type="string">true</merge> <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge> <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge> <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge> <merge key="input.x11_options.ZAxisMapping" type="string">4 5</merge> <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge> </match> </device> </deviceinfo>
Seichan が使っているのは,IBM トラベルキーボード で,USB接続のキーボードになっています.また,どうしてもマウスが使いたい場面があるので,全てのデバイスで上記設定が反映されると,今度はホイールマウスが有効に働かなくなります.
その為,まずは特定のデバイスだけにマッチさせる様に match タグでデバイスを指定しています.この場合,info.udi の文字列が /org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0 の場合に上記設定を反映させる形となります.
特定のデバイスを探す場合,lshal コマンドを実行する事で,現在 hald が認識しているデバイスの一覧が列挙されます.一覧の中には,info.vendor のベンダ名や info.product のプロダクト名が表示されます.それらいずれかにマッチさせる事でデバイスの特定が出来るのならば,match タグ内で指定する事で特定デバイスの設定に反映が可能です.
で,設定が完了したら,hald をリスタートする事で設定が反映されます.
[root@ayanami:~] > /usr/local/etc/rc.d/hald restart
正しく設定が行われているかを確認するには,X Window 上で直接試す以外にも,lshal コマンドで確認する事が出来ます.例えば,今回の様なマウスの設定の場合 /org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0 の中に以下の様に設定状態が表示されます.
— lshal の該当部分抜粋
udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0' freebsd.device_file = '/dev/ums0' (string) freebsd.driver = 'ums' (string) info.parent = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial' (string) info.product = 'Composite TouchPad / TrackPoint' (string) info.udi = '/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0' (string) info.vendor = 'Synaptics Inc.' (string) input.device = '/dev/sysmouse' (string) input.x11_driver = 'mouse' (string) input.x11_options.Emulate3Buttons = 'true' (string) input.x11_options.EmulateWheel = 'true' (string) input.x11_options.EmulateWheelButton = '2' (string) input.x11_options.XAxisMapping = '6 7' (string) input.x11_options.YAxisMapping = '4 5' (string) input.x11_options.ZAxisMapping = '4 5' (string)
と言う事で,IBM キーボードのマウスも,ちゃんとスクロールボタンを有効に出来るのでした.
ちなみに,HAL/DBUS を使わない環境において xorg.conf の Mouse セクションに記述する事でも,当然同様の効果が得られます.
コメント