FreeBSD on LOOX R: タッチパッドとマウスの併用
- 公開日: 2008/11/08(土) 09:22[JST]
LOOX Rに移行の続き
やっぱり、Exultなんかをやろうと思うと、マウスが必要になるわけです。で、外出してLOOX Rを使う場合は、タッチパッドを使うことになる。もちろんタッチパッドのスクロール機能は有効にしておきたい。
で、マウスとタッチパッドを併用する場合、ちと問題になるのが中ボタンの扱い。X Window Systemでは第2ボタン(いわゆる中ボタン)はペーストボタンとして使用される。また、僕が使っているFluxboxというウィンドウマネージャでは、第2ボタンドラッグでタブの管理を行う。そして、通常のホイールマウスでは、第2ボタンはホイールなので、ホイールを操作するときに間違ってホイールボタンが押されてしまってペーストされてしまったり、逆にペーストしようとしてホイール操作が行われたりと操作性があまりよろしくない。
このような問題を避けるためには、4ボタン以上付いているマウスを使用して、第4ボタンと第2ボタンを入れ替えてしまえばよい。この設定は、大抵の場合はxmodmapを使うのだが、タッチパッドとマウスを併用している場合は、タッチパッドの第2ボタン(左右同時押し)までも入れ替わってしまうため、使用できない。
そこで、ボタンの入れ替えを /etc/X11/xorg.conf の方でやることにした。参考にしたのはx.orgのマウスドライバのマニュアル(しかしx.orgのサイトの使いにくさはどうよ)。また、マウスはmoused経由で使うことにした。以下、 /etc/rc.conf と /etc/X11/xorg.conf のマウス・タッチパッド関連の記載を抜き出してみる。
/etc/rc.conf:
moused_enable="YES" moused_port="/dev/ums0
rc.confでは、moused_portを設定して、タッチパッドがmousedで管理されないようにする。
/etc/X11/xorg.conf:
Section "ServerFlags" Option "AllowEmptyInput" Option "AllowMouseOpenFail" EndSection Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Synaptics_Touchpad" "CorePointer" InputDevice "USB_Mouse" "SendCoreEvent" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "InputDevice" Identifier "Synaptics_Touchpad" Driver "synaptics" Option "Protocol" "psm" Option "Device" "/dev/psm0" Option "LeftEdge" "1700" Option "RightEdge" "5300" Option "TopEdge" "1700" Option "BottomEdge" "4200" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "VertScrollDelta" "100" Option "HorizScrollDelta" "100" Option "MinSpeed" "0.05" Option "MaxSpeed" "0.20" Option "AccelFactor" "0.025" Option "ScrollButtonRepeat" "100" Option "UpDownScrolling" "on" Option "UpDownRepeat" "on" Option "LeftRightScrolling" "on" Option "LeftRightRepeat" "on" Option "SHMConfig" "off" EndSection Section "InputDevice" Identifier "USB_Mouse" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "Buttons" "8" Option "ZAxisMapping" "4 5 6 7" Option "ButtonMapping" "1 8 3 2" EndSection
ServerFlagsセクションのAllowMouseOpenFailは、USBマウスが繋がっていなくてもXを起動させるための設定(moused経由なので不要かもしれない)。それから、ServerLayoutセクションで、USBマウスを"SendCoreEvent"に設定している。さらに、USBマウスのInputDeviceセクションのButtonMappingオプションでボタンの入れ替えを行っている。今使っているマウスは、4ボタン+ホイール(第4、第5ボタン扱い)+チルトホイール(第6、第7ボタン扱い)なので、4番目のボタンは第8ボタン扱いになる。