こんにちは。加藤です。
実は私の所でも同じような現象が起こるので、興味深く拝見しておりました。

On Fri, 31 Aug 2012 21:22:31 +0900
Satoshi Kimura <satosi.kim...@nifty.com> wrote:

>    X server は今までここを,絶対に /dev/sysmouse にしません
>   でした.(ただし xf86-input-mouse-1.6.0 にて)
>   1.7.1 および 1.7.1 + patch は,これから調べてみます.

パッチ当てついでにソースみてみました。

"(WW) Mouse0: No Device specified, looking for one..."
これが出る場合、src/bsd_mouse.c の FindDevice が呼ばれている様に思えます。

そしてこれは /dev 以下を調べ、sysmouse と ums0 がある場合(USBマウスが一つある場合)
moused が走っていれば sysmouse を、ums0 を moused が使っていなければ ums0を選ぶ、
という様なコードに思えます。

ただ、実際は moused が走っていても sysmouse が選択されないことがあるようで、
その辺がよく分かりません。

ちょっと泥臭いですが src/bsd_mouse.c に下記の様な細工をして調べてみました。

--- work/xf86-input-mouse-1.7.1/src/bsd_mouse.c 2012-09-01 00:34:30.091548099 
+0900
+++ /root/bsd_mouse.c   2012-09-01 00:33:12.000000000 +0900
@@ -341,6 +341,8 @@
            if (!strcmp(*pdev, DEFAULT_MOUSE_DEV)) {
                memcpy(&devMouseStat, &sb, sizeof(devMouseStat));
                devMouse = TRUE;
+               xf86Msg(X_INFO, "%s: Found Device \"%s\"\n",
+                       pInfo->name, *pdev);
                continue;
            } else if (!strcmp(*pdev, DEFAULT_SYSMOUSE_DEV)) {
                /* Check if /dev/mouse is the same as /dev/sysmouse. */
@@ -349,8 +351,12 @@
                    /* If the same, use /dev/sysmouse. */
                    devMouse = FALSE;
                }
+               xf86Msg(X_INFO, "%s: Found Device \"%s\"\n",
+                       pInfo->name, *pdev);
                if (MousedRunning(NULL))
                    break;
+               xf86Msg(X_INFO, "%s: Moused not Running. Continue.\n",
+                       pInfo->name);
            } else {
                /* Check if /dev/mouse is the same as this device. */
                if (devMouse && devMouseStat.st_dev == sb.st_dev &&
@@ -358,13 +364,19 @@
                    /* If the same, use this device. */
                    devMouse = FALSE;
                }
+               xf86Msg(X_INFO, "%s: Found Device \"%s\"\n",
+                       pInfo->name, *pdev);
                if (MousedRunning(*pdev))
                    continue;
+               xf86Msg(X_INFO, "%s: Moused not Running.\n",
+                       pInfo->name);
                /* ums(4) does not support anything but SysMouse protocol. */
                if (!strncmp(*pdev, DEFAULT_USB_DEV, 8) && protocol &&
                    xf86NameCmp(protocol, "auto") != 0 &&
                    xf86NameCmp(protocol, "sysmouse") != 0)
                    continue;
+               xf86Msg(X_INFO, "%s: Select Device \"%s\"\n",
+                       pInfo->name, *pdev);
                break;
            }
        }

これを当てた状態で([FreeBSD-users-jp 94010] の mouse.c のパッチは当てず)
再起動後に mousedが走って /dev/ums0 をつかんでいる事を確認した上で、
gdm 経由で X を起動した結果、Xorg.0.log へ下記の様に記録されました。

(II) config/hal: Adding input device USB Mouse
(II) LoadModule: "mouse"
(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
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 7.0
(WW) USB Mouse: No Device specified, looking for one...
(II) USB Mouse: Found Device "/dev/sysmouse"
(II) USB Mouse: Moused not Running. Continue.
(II) USB Mouse: Found Device "/dev/ums0"
(II) USB Mouse: Moused not Running.
(II) USB Mouse: Select Device "/dev/ums0"
(II) USB Mouse: Setting Device option to "/dev/ums0"
(--) USB Mouse: Device: "/dev/ums0"
(==) USB Mouse: Protocol: "Auto"
(**) USB Mouse: always reports core events
(**) Option "Device" "/dev/ums0"
(EE) xf86OpenSerial: Cannot open device /dev/ums0
        Device busy.
(EE) USB Mouse: cannot open input device
(II) UnloadModule: "mouse"
(EE) PreInit returned NULL for "USB Mouse"
(EE) config/hal: NewInputDeviceRequest failed (8)

確認後、USBマウスを抜き差しすると下記が記録されました。

(II) config/hal: Adding input device USB Mouse
(WW) USB Mouse: No Device specified, looking for one...
(II) USB Mouse: Found Device "/dev/sysmouse"
(II) USB Mouse: Setting Device option to "/dev/sysmouse"
(--) USB Mouse: Device: "/dev/sysmouse"
(==) USB Mouse: Protocol: "Auto"
(**) USB Mouse: always reports core events
(**) Option "Device" "/dev/sysmouse"
(==) USB Mouse: Emulate3Buttons, Emulate3Timeout: 50
(**) USB Mouse: ZAxisMapping: buttons 4 and 5
(**) USB Mouse: Buttons: 9
(II) XINPUT: Adding extended input device "USB Mouse" (type: MOUSE)
(**) USB Mouse: (accel) keeping acceleration scheme 1
(**) USB Mouse: (accel) acceleration profile 0
(II) USB Mouse: SetupAuto: hw.iftype is 4, hw.model is 0
(II) USB Mouse: SetupAuto: protocol is SysMouse

想像通り、moused が走っているのに 初回では MousedRunning が FALSE を返すようです。
popen はあまり使ったことないので良く分かりませんが、エラーが起きているのかもしれません。
取り合えずここまで...


なお、[FreeBSD-users-jp 94010] の mouse.c のパッチを当てると、
「No Device specified」とはならず、素直に認識されます。

メールによる返信