FreeBSD の Xorg でホイールマウスの設定

FreeBSD(14.x, 15.x で確認)でのホイールマウスの設定である. X サーバは XFree86 から Xorg に置き換わっており,設定ファイルの場所と書式も変更されている. USB マウスと PS/2 マウスは evdev インタフェース(/dev/input/event*)で扱われ, 機器の着脱は devd(8) が処理するため, かつて必要であった /etc/usbd.conf の編集は不要である.

テキストコンソールでの設定(moused)

テキストコンソールでマウスを使う場合は,moused(8) を有効にする. root 権限で sysrc を実行して /etc/rc.conf に設定を書き込む.

sysrc moused_enable="YES"
sysrc moused_flags="-z 4"
service moused start

-z 4 は,ホイール(Z軸)の回転をボタン 4 とボタン 5 の押下として報告させるオプションである. FreeBSD 15 の moused は,既定の -p auto により,接続されたすべての evdev 対応ポインティングデバイスを 1 つのプロセスで扱う. 特定のデバイスだけを扱う場合は,ポートを明示的に指定する.

sysrc moused_port="/dev/input/event0"

コンソールでマウスポインタを表示し,コピー&ペーストを使う場合は,次を実行する.

vidcontrol -m on

Xorg での設定

Xorg は入力機器を libinput により自動認識する. 通常のホイール付きマウスであれば,設定ファイルを作成しなくてもホイールは動作する. Xorg は moused が提供する仮想デバイス(System mouse, /dev/sysmouse)を既定で無視するので, moused を動かしていても X 上のマウス動作には影響しない.

認識されている入力機器は,X セッション内で xinput により確認できる.

xinput

スクロール方向や加速などを変更する場合は, /usr/local/etc/X11/xorg.conf.d/ に設定ファイル(例:40-libinput.conf)を作成する. 単一の xorg.conf を作成するのではなく,項目ごとにファイルを分けるのが現在の方式である.

Section "InputClass"
        Identifier      "libinput pointer catchall"
        MatchIsPointer  "on"
        MatchDevicePath "/dev/input/event*"
        Driver          "libinput"
        Option          "NaturalScrolling" "false"
        Option          "AccelSpeed" "0.0"
EndSection

デスクトップ環境(KDE Plasma, GNOME など)を使う場合は, これらの項目を設定するグラフィカルなユーティリティが用意されているので,そちらを使ってもよい.

シリアルマウスなど evdev で扱えない機器の場合

evdev で扱えない機器では,moused が提供する /dev/sysmouse を, x11-drivers/xf86-input-mouse ドライバ経由で使用する. このドライバをインストールする.

pkg install xf86-input-mouse

/usr/local/etc/X11/xorg.conf.d/ に設定ファイル(例:40-mouse.conf)を作成し, 自動認識を無効にしたうえで,デバイスを明示的に指定する.

Section "ServerFlags"
        Option "AutoAddDevices" "off"
EndSection

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

ZAxisMapping "4 5" により,ホイールの回転がボタン 4 とボタン 5 として X アプリケーションに渡される.