You may check your mouse with the mev command from the GPM package.
Trackpad, Touchpad, used with the majority of current laptops
Trackball, e.g. COMPAQ LTE
Pop-up-Mouse, e.g. HP OmniBook 800
Trackpoint, Mouse-Pin, e.g. IBM™ ThinkPad and Toshiba
3 Button Mice, e.g. IBM™ Thinkpads at least the 600s. I have heard rumor about a 3 button mouse for Texas Instruments Travelmates, but couldn't verify this yet.
Most of the mice used in laptops are PS/2 mice (actually I don't know one with another mouse protocol). You may communicate with the PS/2 mouse through /dev/psaux or /dev/psmouse. If you use X Windows this device and the protocol has to be set in /etc/XF86Config, too. In earlier releases, sometimes the GPM mouse manager and X Windows had trouble sharing a mouse when enabled at the same time. But as far as I know this is no problem anymore for the latest versions.
Speaking of Emulate3Buttons, 100ms is usually better than the 50ms allowed in most default setups of /etc/X11/XF86Config.
Section "Pointer" Protocol "PS/2" Device "/dev/psaux" Emulate3Buttons Emulate3Timeout 100 EndSection |
Usually a touchpad works with the PS/2 mouse driver. A tip: I've heard that tipping with one , two or three fingers on the touchpad simultaneously results in pressing the left, middle and respectively the right mouse-button (by Martin Hoffmann <mh@rrz.uni-hamburg.de> for an IPC-Radiance 900).
There is also a dedicated touchpad driver available. The Synaptics Touchpad Linux Driver supports pointing devices used in notebooks by Acer, Compaq, Dell, Gateway, Olivetti, Texas Instruments, Winbook, and others. Other URL N.N..
Not all touchpads are being from Synaptics, e.g some Gateways incorporate an EZ-Pad (Registered) and there might be other brands. The TPREV.EXE utility will verify you have a Synaptics touchpad.
The recent gpm package (version >=1.8, maybe earlier versions contain touchpad support, too) includes the above mentioned Synaptics touchpad device driver. This device driver has been developed by H. Davies <hdavies@ameritech.net>. Instead of using the PS/2 compatibility mode of touchpad devices, you can now use native touchpad mode with some pretty impressive features.
In addition to translating finger motion into mouse motion and supporting the buttons, this support currently has several features (from the README):
a "tap" on the TouchPad causes a left mouse click
a "tap" followed quickly by a finger motion causes a left button drag type action.
a "tap" in one of the corners causes an action the default configuration is upper right causes middle mouse click and lower right causes right mouse click
more pressure on the touch pad speeds the motion of the cursor
a "tap" with a motion component (default > 2mm) initiates a toss and catch sequence. This is terminated by a finger touch on the pad (the toss also ends after 1 sec since that is the idle timeout period for the touchpad).
if the finger moves close to an edge then the mouse motion will be continued in that direction so that you don't need to pick up your finger and start moving again. This continued motion is pressure sensitive (more pressure is faster motion).
These features can be enabled/disabled and many of them have time and speed parameters which can be adjusted to the taste of the user.
It seems gpm is best known as a console biased tool. This is true, but you may use it as an X11 input device. gpm is used as a repeater device. In this way you can use both the built-in synaptics touchpad with all the features and at the same time a serial mouse (with three buttons). This all works smoothly together. X11 reads the mouse events from a named pipe /dev/gpmdata in a protocol it understands, which in my case is Mouse-Systems-Compatible (5bytes). Most 3-button mice use the default protocol. So a simple reconfiguration in XF86Config is all that is required, after starting gpm in an appropriate way, of course.
gpm could be started on your laptop with the following arguments : /usr/bin/gpm -t synps2 -M -t ms -m /dev/ttyS0 . Both touchpad and serial mouse work in console and X11 mode. You do have to create the named pipe /dev/gpmdata yourself.
Tapping with two fingers simultaneously to simulate a middle mouse button works on Logitech touchpads used in a few machines.
Thanks to Geert Van der Plas for most of the touchpad chapter.
The only laptops I know which include a touchscreen are the Fujitsu Biblo 112/142 (aka MC 30) and the Palmax PD 1000/1100 (aka IPC 1000/1100).
The latest version of the Linux Compaq Concerto Pen Driver is available from Joe Pfeiffer's home page.
A current survey of drivers you may find at my page Touchscreen Laptops and Linux.
For better handling, e.g. with a 3 button mouse you may use an external mouse. This usually a serial mouse or a PS/2 mouse, appropriate to the port your laptop offers. Usually this is no problem.
For PS/2 ports there are so called Y-Cable available, which make it possible to use external mouse and external keyboard at the same time if your laptop supports this feature.
![]() | Don't plug in the external mouse while powered up. If you have separate mouse and keyboard ports, make sure you plug the mouse in the mouse port and the keyboard in the keyboard port. If you don't, you may have to do a hard reboot of the laptop to get it to recover. |
PowerBooks have a trackpad and only one button, although you can plug in external multi-button USB mice. The usual thing is to map a couple of keys on the keyboard to the middle and right mouse buttons; your Linux distribution should come with instructions on how to configure this (it's not specific to laptops, as all Apple mice are single-button).
(If you are using the Xpmac server, the default is option-1 and option-2, and you can change this by passing -middlekey <keycode> -rightkey <keycode> arguments to Xpmac, and -nooptionmouse if you don't want the option key to be needed. If you are using XFree86, you pass adb_buttons=<middlekey>,<rightkey> kernel arguments (no option is required). I use adb_buttons=58,55 to map the option and Apple/command keys (which are little-used in Linux); use e.g. xev to find out the keycode for a given key.)