こんにちは.木村です.

済みません.先ず昨日の分 [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)

メールによる返信