こんにちは.木村です.

下保さんの patch により [FreeBSD-users-jp 94009] の続きは不要に
なりつつあったのですが,これを解説しないと,今 Dobashi さんの
直面している壁が ML の方々にわかりませんので,続けます.
解説ネタはこれで終わりです.

先ず昨日の分 [FreeBSD-users-jp 94009] の訂正です.

> (Xorg -configure の出力も,今はこれだけのはずです.)
  久々に実行してみたら,増えていました.ただし,これらは
X server の動作には反映していません.混乱を招く「仕様」です.
(例えば,moused off の状態で X を立ち上げれば検証できます.
 hald から渡された /dev/psm0 や /dev/ums0 の方が使われます.)

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/sysmouse"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

---------------------------------------------------------------
やっと「3. 問題の生じ方」の解説と補足です.

[FreeBSD-users-jp 94008] にこう書きました.
> 2. 問題が生じるハードウェア環境
>  ・PC に PS/2 マウスまたは USB マウスが単独で接続されていて,
>    かつ,moused が動作している状態で生じる.

  話をひっくり返して申し訳ありませんが,この部分を厳密に
言い直すと,次のようになります.

・PC に PS/2 マウスまたは USB マウスが単独で接続されている場合
  にはすべて,X server は hald からの情報の受け取りに失敗する.
  そして,X server は default を設定する.(/dev/ums0 or /dev/psm0)

・moused が動作していない場合には,X server の設定する default が
  正しいので,マウスは動作する.

・moused が動作している場合には,それが正しくないので動作しない.

----------------------------------------------------------------
  X の log の比較です.

・正常に動作する xf86-input-mouse-1.6.0 および
                 xf86-input-mouse-1.7.1 + 下保さんの patch
  の場合.(moused on)

(II) Loading /usr/local/lib/xorg/modules/input/mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
        compiled for 1.7.7, module version = 1.6.0
(**) Microsoft 3-Button Mouse with IntelliEyeTM: Device: "/dev/sysmouse"
                                                 ^^^^^^^^^^^^^^^^^^^^^^^
hald から /dev/sysmouse が渡され,マウスは正常に動作します.
moused off の場合には hald から /dev/ums0 が渡され,動作します.

・問題のある xf86-input-mouse-1.7.1 の場合.(moused on/off で同じ!)
(II) Loading /usr/local/lib/xorg/modules/input/mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
        compiled for 1.7.7, module version = 1.7.1
(WW) Mitsumi Quick Scroll Mouse USB: No Device specified, looking for one...
                                     ^^^^^^^^^^^^^^^^^^^
(II) Mitsumi Quick Scroll Mouse USB: Setting Device option to "/dev/ums0"
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
X server から「規定されていないから /dev/ums0 に設定したよ!」
と警告されます.[FreeBSD-users-jp 94009] の話で言えば,
「(1) が失敗したので (3)」になったわけです.

moused off の場合には,/dev/ums0 で正しいので動作します.
moused on の場合には,/dev/sysmouse とすべきなので動作せず,
以下のようなエラーが出ます.

(EE) xf86OpenSerial: Cannot open device /dev/ums0
        Device busy.

  PS/2 マウスの場合も同様です.
  USB マウスを一度抜き挿しした場合,今度は情報を受け取ります.(!?)

----------------------------------------------------------------
  参考までに,対照実験です.xorg.conf を以下のようにしてみました.

Section "ServerFlags"
   Option   "AutoAddDevices"    "False"
   Option   "AutoEnableDevices" "False"
#  Option   "AllowEmptyInput"   "False"
EndSection

Section "InputDevice"
   Identifier "Mouse1"
   Driver     "mouse"
# ここに書きべき情報を故意に消した.
EndSection

すると,問題のある場合と同じエラーが再現しました.
([FreeBSD-users-jp 94009] の「(2) が失敗したので (3)」です.)

(WW) Mouse1: No Device specified, looking for one...
(II) Mouse1: Setting Device option to "/dev/ums0"   
                                       ^^^^^^^^^
  この場合には,マウスの種類や moused on/off に応じて
ums0, psm0, sysmouse にしてくれます! この点は
[FreeBSD-users-jp 94009] の記述が一部誤りです.
  ただ,この対照実験でなく本番では一度も moused on に応じて
sysmouse にしてくれたことはありませんでした.

                  Satoshi Kimura  (satosi.kim...@nifty.com)

メールによる返信