Logitech Marble Mouse Notes
Here are my notes for using a Marble Mouse with FreeBSD 12 and GNU/Linux. I describe two methods: one using moused, and another using Xorg. My mapping sets the little thumb button (right-hand orientation) plus ball movement to emulate X+Y scrolling
FreeBSD 12
With moused
This method has the benefit of working "out of the box", and one will have a cursor available on their console. However, horizontal scrolling is not available and middle-button emulation is only possible by simultaneously pressing the left and right buttons.
/etc/rc.conf
moused_enable="YES" moused_port="/dev/ums0" # This is the USB mouse moused_type="auto" moused_flags="-w 4 -V -H"
With Xorg
This method provides better features, at the cost of being more complicated. It also does not allow for new devices (keyboards or mice) to hotplug. This is the method I personally use with my workstation because moused doesn't play well with my Wacom tablet. It requires xmodmap
as the user to remap the small button to middle-click. If you can't get this to work, be absolutely sure moused isn't running.
/etc/rc.conf
moused_enable="NO"
/etc/X11/xorg.conf
Section "ServerFlags" Option "AutoAddDevices" "false" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "Auto" Option "Device" "/dev/ums0" # This is the USB mouse Option "Buttons" "9" Option "ZAxisMapping" "4 5" Option "XAxisMapping" "6 7" Option "EmulateWheel" "true" Option "EmulateWheelButton" "8" Option "Resolution" "500" Option "HorizontalScrolling" "true" EndSection
~/.xmodmap
pointer = 1 8 3 4 5 6 7 2 9
GNU/Linux
With Xorg
/usr/share/X11/xorg.conf.d/10-marblemouse.conf
Section "InputClass" Identifier "Marble Mouse" MatchProduct "Logitech USB Trackball" Driver "libinput" Option "ButtonMapping" "1 8 3 4 5 6 7 2 9" Option "ScrollMethod" "button" Option "ScrollButton" "8" Option "MiddleEmulation" "true" EndSection