TrackPointの中ボタンでスクロール
わりと上手くいってたFreeBSD9.1 on ThinkPad T420の設定だが、実はTrackPointの中心ボタンでスクロールができてなかった。 特にできなくて困る事態もなく、そもそもちょっと前まで気付いてすらいなかったわけだが、設定できてないのは気になるので直しておく。
まずはXorgの設定を見てみる。BIOSでタッチパッドは無効化してるのでTrackPointの設定のみ。
Section "InputDevice"
Identifier "TrackPoint"
Driver "mouse"
Option "Device" "/dev/sysmouse"
Option "Protocol" "auto"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
EndSection
ちゃんと設定しているんだから上手く動きそうなものだが、実際は上手くいかない。 /var/log/Xorg.0.log
を見てみると、
[ 758.670] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[ 758.670] (WW) Disabling TrackPoint
などと出ている。どうもmouseドライバ使ってる設定は読み飛ばされているっぽい。とはいえmouseドライバ以外に選択肢とか特にない。 途方にくれてたが、どうもFreeBSD9.1ではマウスとかの処理をぜんぶhaldでやってるらしいと知り、んじゃあhalの設定で解決すりゃいいじゃんと思いついた。
ということで、 /usr/local/etc/hal/fdi/policy/10-mouse-sysmouse.fdi
を編集してやる。
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.udi" contains="/org/freedesktop/Hal/devices/psm_0">
<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>
/usr/local/share/hal/fdi/policy/10osvendor/10-mouse-sysmouse.fdi
にデフォルト設定があるので、それをもとに編集するとラク。
<match ...>
の contains="..."
部分に入る値は、環境によってちがうかもしれない。lshal
コマンドでhalが認識してるデバイスの情報一覧がべろっと出るので、そこから自分の設定したいデバイスをみつけて、そいつのinfo.udiの値と同じものを設定値とする。
あとは hald を restart して、 Xorg を再起動すればスクロールが有効になる。
# /usr/local/etc/rc.d/hald restart
ぬるっと動く。これはこれで気持ちいい。