Hi, OK, here is my attempt to add support for Synaptics Linux kernel module to GPM by extending evdev interface. The new evdev interface can be used with both 2.4 and 2.6 kernels with various types of devices. The evdev protocol driver is controlled by passing options via '-o', like this: gpm -m /dev/input/event1 -t evdev -o type=synaptics -M -m /dev/input/event2 -t evdev -o type=relative The full option string is (no spaces allowed): -o type=xxxx,nosync,y_iversed,left=1900, right=5400, bottom=1800,top=3900,touch_high=30,touch_low=25, tap_time=180,tap_move=220 type - relative, absolute, touchpad, synaptics. relative - suits for devices reporting relative motion packets, like regular PS/2 mouses. GPM expects REL_X, REL_Y, REL_WHEEL, REL_HWHEEL and various BTN_* events from the kernel. absolute - suits for touch screens and tablets reporting absolute coordinates. GPM expects ABS_X, ABS_Y and various BTN_* events from the kernel. touchpad - device reporting absolute coordinates but cursor should not move if there is no touch. Also if you take your finger off and then touch the pad in some other place cursor should not jump across the screen as in the case with touch screen or tablet. Supports tapping, distinguishes corner and normal taps. Normal taps generate left button events, right-top corner tap generates middle button event, right-bottom corner tap generates right button event. GPM expects ABS_X, ABS_Y, various BTN_* and ABS_PRESSURE events from the kernel. synaptics - same as touchpad but recognizes multi-finger tapping. Two finger tap generates middle button event, three finger tap generates right button event. GPM expects ABS_X, ABS_Y, various BTN_*, ABS_PRESSURE and MSC_GESTURE events from the kernel. Default is "relative" nosync - do not wait for EV_SYNC - SYN_REPORT event from kernel before starting assembling GPM motion event. 2.4 kernels do not support EV_SYNC so they will need this option. Only absolute and relative devices can use nosync, touchpads and synaptics require SYNC event to work properly. Default is to wait for SYNC event. y_inversed - allow to adjust to devices that reported inversed Y axis events. Turned on by default for synaptics, off for everything else. left, right, bottom, top - allow to specify size of an absolute device or define edges for touchpads and synaptics (to distinguish corner taps). Not valid for relative devices. Default values 1900, 5400, 1800 and 3900. touch_high, touch_low - Minimum pressure to start (touch_high) and continue (touch_low) tracking finger motion on the touch pad. Not valid for relative or absolute devices. Default values are 30 and 25. tap_time, tap_move - maximal time and movement between finger starting touching the pad and leaving it for touch to be considered a tap. Not valid for relative or absolute devices. Default values are 180 and 220. As i am new to GPM I had to change some other stuff as well. You can find the patches at http://www.geocities.com/dt_or/gpm/patches with some explanations at http://www.geocities.com/dt_or/gpm/gpm.html There is also RPM package at (RH8) http://www.geocities.com/dt_or/gpm/RPMS Hopefully it may be of use to someone. Sincerely, Dmitry