[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