こんにちは.木村です.
済みません.先ず昨日の分 [FreeBSD-users-jp 94008] の訂正です.
> 4. 対処法
> (1) moused が不要な場合,それを起動しないようにする.
(中略)
> ・USB マウス : /etc/rc.conf にて,次のように設定する.
> moused_nondefault_enable="YES"
^^^ ここは NO でした.
-------------------------------------------------------------
「3. 問題の生じ方」の解説と補足をするための前提の話を書きます.
既にご存知の方には,いまさらな内容です.
1. X server へデバイス情報を受け渡す方法.(マウス限定の話)
hald on は前提として,マウスの Device をどのように設定
するかには 4 通りあります.(hald とは関係ないものも含めて.)
(1) hald を用いる.
xorg.conf にて以下の Option を変更しなければ,これらの
default はすべて True です.
(Xorg -configure ではもはや Section "ServerFlags" は出力
されません.)
Section "ServerFlags"
# Option "AutoAddDevices" "True" <- default が True である.
# Option "AutoEnableDevices" "True" <- default が True である.
# Option "AllowEmptyInput" "True" <- 上の設定により True になる.
EndSection
この場合,マウスの設定は hald が行ないます.
xorg.conf の以下の Section にはここに記した 2 行しか必要なく,
それ以外の設定をここに書いても使われません.
(Xorg -configure の出力も,今はこれだけです.)
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
EndSection
この場合は,さらに 2 つの選択肢があります.(2 通りと数えます.)
(1.1) 設定の内容を hald のみに決めさせる.
(詳しくは 3. に書くが) hald は PC に接続されているマウスの
種類,数と moused on/off を検知して,hald としての default を
設定し,X server に渡す.
(1.2) /usr/local/etc/hal/fdi/policy/mouse-sysmouse.fdi により
(1.1) を補足,変更する.(ファイル名はこうでなくても可です.)
このファイルの内容はこんな感じです.
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_options.Protocol" type="string">Auto</merge>
<merge key="input.x11_options.Device" type="string">/dev/ums0</merge>
<merge key="input.x11_options.Emulate3Buttons" type="string"></merge>
</match>
</device>
</deviceinfo>
Device の行の /dev/ums0 は,マウスの種類や moused on/off に応じて
/dev/psm0 や /dev/sysmouse で置き換えます.
このファイルがあってもなくても (1.1) は実行されます.この
ファイルがあれば,それに記した内容を (1.1) の結果よりも
高い優先度で X server に渡します.
(これは Device の指定よりもむしろ,default のパラメーターに
不満があってそれを自分で変更するための機能です.)
(2) xorg.conf を用いる.
xorg.conf にて以下のように Option を変更すれば,マウスの設定は
hald でなく xorg.conf を用いて行なうようになります.
(このようにする理由は [FreeBSD-users-jp 92668] に解説してあります.
キーボードの設定も xorg.conf によることになるので要注意です.)
Section "ServerFlags"
Option "AutoAddDevices" "False"
Option "AutoEnableDevices" "False"
# Option "AllowEmptyInput" "False" <- default
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "Auto"
# 以下のどれか一つの comment out をはずす.
Option "Device" "/dev/ums0"
# Option "Device" "/dev/psm0"
# Option "Device" "/dev/sysmouse"
EndSection
(3) (1) or (2) が失敗した場合,X server によって default が設定
されます.接続されているマウスを検知して,どちらかに設定されます.
Option "Device" "/dev/ums0"
Option "Device" "/dev/psm0"
X server は hald と違って moused on/off を検知していないので,
絶対に /dev/sysmouse にはなりません.(ここ,重要な伏線です.)
2. moused の起動の制御
USB マウス専用のパラメーター moused_nondefault_enable が存在
することにより,PS/2 と USB とは moused の挙動に関して「対称性」
がありません.
特に,default の場合,PS/2 だけ (一般的には USB 以外のマウスだけ)
ならば moused は起動しないのに,USB が挿さっていると moused が起動
してしまう点がややこしいです.
マウスが複数接続されている場合はさらにややこしいですが,ここでは
触れません.
3. hald が検知したデバイスの情報の見方
lshal は console 画面でも実行できます.
% lshal > file
USB マウスの場合には,次のような内容が出力されます.抜粋です.
ここに提示した 1 行目と 2 行目以降は 10 行ほど離れています.
1 行目が dmesg などで見るデバイス,2 行目 or 4 行目が hald
から X server に渡されるデバイスです.
(1) moused on + mouse-sysmouse.fdi なし
freebsd.device_file = '/dev/ums0' (string)
input.device = '/dev/sysmouse' (string) <- [1]
(2) moused off + mouse-sysmouse.fdi なし
freebsd.device_file = '/dev/ums0' (string)
input.device = '/dev/ums0' (string) <- [1]
[1] の差異でわかるように,hald は moused の on/off を検知しています.
(3) moused on + mouse-sysmouse.fdi あり
freebsd.device_file = '/dev/ums0' (string)
input.device = '/dev/sysmouse' (string)
input.x11_driver = 'mouse' (string)
input.x11_options.Device = '/dev/sysmouse' (string)
(4) moused off + mouse-sysmouse.fdi あり
freebsd.device_file = '/dev/ums0' (string)
input.device = '/dev/ums0' (string) <- [2]
input.x11_driver = 'mouse' (string)
input.x11_options.Device = '/dev/sysmouse' (string) <- [3]
(4) ではわざと間違えてみました.hald は矛盾を指摘せずに,
[2], [3] を併記します.
X server には [3] の方が渡されます.当然,マウスは動きません.
PS/2 マウスの場合もまったく同じです.上記の結果を
ums0 -> psm0 と読み換えれば良いだけです.
複数のマウスが接続されている場合は,すべてのマウスの情報が
併記されるだけです.(この場合には moused が絡むと話が少し複雑に
なりますが,ここでは触れません.)
---------------------------------------------------------------
P.S xorg-server-1.10.6 にて「マウス単独」の動作を試してません.
そちらで問題が生じないならば,xf86-input-mouse と xorg-server
の「相性」の問題である可能性もあります.
Satoshi Kimura ([email protected])