こんにちは.木村です. 済みません.先ず昨日の分 [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 (satosi.kim...@nifty.com)