Configuring mice (Serial, PS/2, USB)

Basics
There are several different mice protocols and connectors.
 * PS/2 (mostly old two button mice)
 * several extended PS/2 versions, adds scrollweel and more buttons mice
 * USB
 * Serial mice
 * Touchpad
 * Logitech CruiseControl

Kernel 2.6
Since the 2.6 kernel these are handled by the kernel and all input is directed to /dev/input/mice.

Mouse device files
Where to look for each different mouse type:


 * /dev/input/mice - Kernel 2.6 and USB configuration
 * /dev/psaux - PS/2 mice
 * /dev/ttyS?? - Serial mice (COM 1 = ttyS0, COM 2 = ttyS1 etc)
 * /dev/sunmouse - serial mouse on sparc systems
 * /dev/mouse - usually a link to one of the above

XFree86 configuration
Here is a relevent section of XF86Config

Section "InputDevice" Identifier "Mouse0" Driver     "mouse" Option     "Protocol" " " Option     "Device" "/dev/mouse" Option     "ZAxisMapping" "4 5" #used with imps/2 protocol EndSection

Where   can be one of
 * auto -- try to detect the protocol automatically
 * PS/2 -- original PS/2
 * serial -- for mice connected to a serial port
 * usb -- for USB mice
 * IMPS/2 -- extended PS/2 (IM=IntelliMouse), supports scroll wheel
 * ExplorerPS/2 -- extended PS/2, supports scroll wheel and side buttons
 * Full list can be found in the mouse driver man page or in the Xserver documentation

Newer XFree86 can auto detect most things. a basic setup may be like: Section "InputDevice" Identifier "Mouse0" Driver     "mouse" Option     "Protocol" "auto" Option     "Device" "/dev/input/mice" EndSection

and this will be sufficient to get a mouse working on many newer linux distributions and/or combinations of XFree86 4.x.x and Kernel 2.4 and 2.6. This is also the default output of X -config when using X to auto create an  file.

Buttons
First of all the protocol selected needs to support it, then there are several options to configure the mouse buttons that can be put in an InputDevice section of the XF86Config. Set the number of buttons, replace X with an actual number (like "6"). Option "Button" "X" Configure the scroll wheel/Z-Axis, replace X with the button numbers that act as the scroll wheel, usually "4 5". (note you can also use the actual letters 'X' and 'Y' to map the scroll wheel to those axis, meaning the pointer can be moved with the scroll wheel) Option "ZAxisMapping" "X"

Which buttons maps to which number can be assigned with xmodmap, e.g. a three button mouse, to inverse the two outer buttons: $ xmodmap -e "pointer = 3 2 1"

put xmodmap -e "pointer = 3 2 1" into a file called .Xmodmap. Chmod +x the file and place it in your home directory, and the command will be called when you start X.

Disabling "tap-on-click"
To disable tap-on-click on a touchpad, switch to root and edit section of  like so: Section "InputDevice" Identifier "SynapticsMouse1" Driver "synaptics" Option "SHMConfig" "on" Option "TouchpadOff" "2" EndSection Your identifier, driver and some other options may differ, but the important part here is.