[gpm]Linux 2.5 event device support and other patches

Dmitry Torokhov dtor_core@ameritech.net
Wed Aug 20 15:34:12 CEST 2003


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



More information about the gpm mailing list