This README describes the support for the Synaptics ToucPads.

In addition to translating finger motion into mouse motion and supporting
the buttons, this support currently has several features:
   - 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).
   - Scrolling by putting the finger at the edge, an dmoving up or down.
   - Recognition of Stick.
   - Multi fingers are recognized to to stop erradic motions, and to change
     which mouse button is reported. 
   - Palm detection so the palm does not move the mouse.

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.  These parameters
can be provided in the "/usr/etc/gpm-syn.conf" file (or
/usr/local/etc/gpm-syn.conf, or /etc/gpm-syn.conf, according to how you ran
configure).  Each line in this file has the following syntax: [param-name]
<value>

Where param-name is one of the following

  param-name                     value     description
  ======================         =====     ===========
  /* feature enable configuration values all default to 1 (TRUE) */
  /* flags are true if the first char of the value is in the string "YyTt1" */
  /* flags are false if the first char of the value is in the string "NnFf0" */
  edge_motion_enabled            flag      is edge motion enabled
  edge_motion_speed_enabled      flag      does pressure control
                                           speed of edge motion
  corner_taps_enabled            flag      are corner taps enabled
  tap_gesture_enabled            flag      are taps gesture enabled
  pressure_speed_enabled         flag      does pressure control
                                           speed in non edges
  tossing_enabled                flag      is toss/catch enabled
  does_toss_use_static_speed     flag      is toss/catch speed
                                           based on toss dist

  /* pressure induced speed related configuration constants */
  low_pressure                   0-255     the lowest pressure which triggers
                                           speed processing.  If this is less 
                                           than speed_up_pressure then the
                                           motion is slowed down.  When the 
                                           pad pressure is between these 
                                           values.

                                           The default value is 60

                                           pressure is described by
                                           Synaptics as follows:
                                             0  : no finger contact
                                             10 : hovering NEAR pad surface
                                             30 : very light finger contact
                                             80 : normal finger contact
                                             110: very heavy finger contact
                                             200: finger lying flat on surface
                                             255: whole palm on pad surface

  speed_up_pressure              0-255     the lowest pressure at which speed
                                           is increased.  If the pad pressure
                                           is less than this value then the
                                           motion will bs slowed down.  If
                                           greater, then the motion will be
                                           sped up.

                                           The default value is 60

  pressure_factor                float     the multiplicative factor applied
                                           to the pressure difference to
                                           be applied to the speed.  This
                                           is used as follows:
                                           1 + pf * (press - speed_up)
                                           The difference in pressure between
                                           the measured pressure and the speed
                                           up pressure is multiplied by this
                                           value which is then applied to the
                                           nominal mouse speed.

                                           The default value is 0.05

  standard_speed_factor          float     the standard speed factor used to
                                           scale touchpad deltas into mouse
                                           deltas.  The touchpads have 
                                           resolutions in the 1000 points/inch
                                           range (much more detail than a 
                                           mouse).

                                           The default value is 0.08

  /* toss/catch related constants */
  min_toss_time                  msec      This number specifies the minimum
                                           finger contact time which is to
                                           be considered a toss 
                                           (in milliseconds).

                                           The default value is 100 (0.1 sec)

  max_toss_time                  msec      This number specifies the maximum
                                           finger contact time which is to
                                           be considered a toss 
                                           (in milliseconds).

                                           The default value is 300 (0.3 sec)

  prevent_toss_time              msec      This number specifies the minimum
                                           finger release time after a toss
                                           is terminated before reacting to 
                                           taps (in milliseconds).  This 
                                           prevents the "catch" tap from 
                                           causing a mouse button tap.

                                           The default value is 300 (0.3 sec)

  min_toss_dist                  mm        This number specifies the minimum
                                           finger move distance which is to
                                           be considered a toss 
                                           (in millieters).

                                           The default value is 2

  static_toss_speed              int       If does_toss_use_static_speed is
                                           1 (TRUE) then this specifies the 
                                           speed to be used.
 
                                           The default value is 70

  toss_speed_factor              float     This is a multiplier against the
                                           toss distance in touchpad units
                                           used to scale the distance to a
                                           speed.

                                           The default value is 0.5

  /* edge motion related configuration constants */
  edge_speed                     int       This is the nominal speed for 
                                           use when in the edge regions.

                                           The defalt value is 20

  /* corner tap actions */
  upper_left_action              int       This is the mouse button which 
                                           will be activated on a tap in
                                           the upper left corner of the 
                                           touchpad.
 
                                             0: None
                                             1: Left
                                             2: Middle
                                             3: Right
					     4: Fourth
					     5: Up
					     6: Down
					     7: Toggle pad on/off

                                           The default value is 0 (none)

  upper_right_action             int       This is the mouse button which 
                                           will be activated on a tap in
                                           the upper right corner of the 
                                           touchpad.

                                           The default value is 2 (middle)

  lower_left_action              int       This is the mouse button which 
                                           will be activated on a tap in
                                           the lower left corner of the 
                                           touchpad.

                                           The default value is 0 (none)

  lower_right_action             int       This is the mouse button which 
                                           will be activated on a tap in
                                           the lower right corner of the 
                                           touchpad.

                                           The default value is 3 (right)

  /* wmode parameters */
  wmode_enabled                  flag      This is to enable the wmode of
                                           Synaptics touchpad which
					   supports more configurable
					   options and buttons.

					   The default value is 1 (enabled)

  drag_lock_enabled              flag      Whether to enable drag lock,
                                           that is, do not break a drag
					   until next tap even when the
					   finger is off the pad.

					   The default value is 0 (disable)
					   
  finger_threshold               int       The threshold of the pressure
                                           reading to consider the finger
					   is on the pad.

					   The default value is 30

  tap_lower_limit                msec      The lower bound of finger
                                           contact time to be considerred
					   a tap.

					   The default value is 5 (0.005 sec)
					   
  tap_upper_limit                msec      The upper bound of finger
                                           contact time to be considerred
					   a tap.

					   The default value is 200 (0.2 sec)
					   
  tap_range                      int       The maximum displacement of
                                           finger contact to be considered
					   a tap.

					   The default value is 100 (0.1 sec)

  tap_interval			 msec      The time length of button press
                                           generated when a tap is
					   recognized, which is also the
					   time within which further
					   finger contact will be consider
					   a drag (or multiple click, if
					   it's also a tap).
					   
					   The default value is 200 (0.2 sec)

  pads_tap_interval              int       Equivalent to tap_interval, but the
                                           pads interval. Used when wmode is
                                           disabled and multi finger is enabled.

					   The default value is 8.


  multiple_tap_delay             msec      Break length between button
                                           presses when generating multiple
					   click.

					   The default value is 30 (0.03 sec)
  
  
  palm_detect_enabled            flag      This enables the palm detection in
                                           the pad so a palm does no move the
                                           mouse. Actually this is the width of
                                           the finger on the pad.

					   The default value is 1 (enabled)
					   
  palm_detect_level              int       At what palm detection level should
					   the pad be ignored? Value should be
					   between 0-11, where 11 is a full palm
					   at pad, and 0 is a normal finger
					   size.

					   Default value is 12 (meaning disabled).


  multi_finger_tap_enable        flag      This enables the ability to use 2
                                           and 3 fingers during a tap, to press
					   right and middle button
                                           respectively. The detection is not
                                           100% perfect. If the pad supports
                                           finger detection, its values are used.
					   
					   The default value is 1 (enabled)


  multi_finger_stop_enabled      flag      When more than one finger is one the
                                           pad, an average value (weighted with
                                           the the pressure) between the
                                           fingers is reported. This gives
                                           erradic movements when adding
                                           or removing fingers, or when just
                                           accidental touches the pad. This
					   option stops the mouse movement for
                                           a given time, to let the movement settle.
					   
					   The default value is 1 (enabled).


  multi_finger_stop_delay        Int       Number of packets that should be
                                           ignored when adding or removing an
                                           additional finger to stop erradic
                                           movements.  

					   The default value is 8.


  /* Additional options */
  touch_pad_enabled              flag      This will stop the interpreting of
                                           the touchpad (thought not the stick
					   if any). As such not that usefull,
					   but in a combination  with a
					   corner toggle on/off, this may
					   come useful. A corner tap is
					   interpretated if it turns the pad on.

					   The default value is 1 (enabled).
  
  stick_enabled                   flag     Some touchpads have an additional
					   stick which uses the same port. This
					   is an attempt to enable the use
					   while using the touchpad.
					   
					   The default value is 1 (enabled).


  scrolling_enabled               flag     This enables the scrolling gesture,
					   which emulates the wheel on a wheel
					   mouse. Putting the finger on the
					   edge and moving it up and down, is
					   eqvivalent with rolling the wheel up
					   and down.

					   The default value is 1 (enabled).
					   

  scrolling_edge                  int      This decides which edge(s) starts
					   the scrolling gesture. Legal values
					   are (added if more than one edge):
					   
					    1: Left edge
					    2: Right edge
					    4: Top edge
					    5: Bottom edge

					   The default value is 2 (Right edge).


  auto_scrolling_enabled          flag     This enables whether to keep
					   scrolling if the finger moves to the
					   top or bottom edge.

					   The default value is 1 (enabled).
