This is a page to remind me about how to configure Linux and X for this input device, which despite the name is actually a trackball.
Firstly, you need a version of the Linux kernel which supports the
input core and which puts PS/2 mice through the input core. It also
needs to be new enough to have the patch for Expert Mouse support
in psmouse-base.c. That probably means later 2.4.x kernels or a 2.6.x
cat -A /dev/input/mice to check that this is
all working and that all four buttons and the scroll wheel generate
different byte sequences. (If your Expert Mouse is USB then
should still work, I think.)
A suitable XF86Config-4 or xorg.conf rune is:
Section "InputDevice" Identifier "Generic Mouse" Driver "mouse" Option "SendCoreEvents" "true" Option "Device" "/dev/input/mice" # /dev/input/mice can emulate plain PS2, ImPS/2 and ExplorerPS/2; # only this one supports more than 3 buttons + scrollwheel: Option "Protocol" "ExplorerPS/2" # scroll wheel Option "ZAxisMapping" "4 5" # four real buttons and the scroll wheel: Option "Buttons" "6" # This bit's optional; it configures button 4 as a sort of 'lock' # button, so instead of holding down one of the other buttons you # first press button four then click the other button: Option "DragLockButtons" "6" EndSection
NB: this assumes that you have a plain Expert Mouse with four buttons and
a scroll wheel. Some models might have more buttons (or just be gratuitously
different), in which case the fourth
button might not be logical button 6 -- I've had a report of it appearing as 8.
Some experimentation with
xev may be required.
The ExpertMouse has four hardware buttons and a scroll wheel. X has a concept of the physical button and the logical button. The physical buttons are numbered 1,2,3,4 in the order bottom-left, top-left, bottom-right, top-right. The logical buttons are numbered starting from 1, and they include the scroll wheel as a pair of fake buttons. The above setup makes the physical and logical buttons 1 to 3 correspond; then logical buttons 4 and 5 are the scroll wheel, and finally physical button 4 is logical button 6. Notice that DragLockButtons takes a logical button number.
If you want to have the buttons do different things, then probably the easiest thing is to add a ButtonMapping line to this Section. For example:
Option "ButtonMapping" "6 3 1 2"will make bottom-right be left-click, top-right middle-click, top-left right-click and bottom-left DragLock. ButtonMap takes a list of logical buttons; so the first number is what bottom-left ought to do (here 6, which we have set up to DragLock), the second is top-left (here logical button 3, right-click), and so on.