I would appreciate any donations. Wishlist or send e-mail type donations to maekawa AT daemon-systems.org.

Thank you.


PMS(4)                       Device Drivers Manual                      PMS(4)

NAME
     pms - PS/2 auxiliary port mouse driver

SYNOPSIS
     pckbc* at isa?
     pms* at pckbc?
     wsmouse* at pms?

     options PMS_DISABLE_POWERHOOK
     options PMS_SYNAPTICS_TOUCHPAD
     options PMS_ELANTECH_TOUCHPAD
     options PMS_ALPS_TOUCHPAD

DESCRIPTION
     The pms driver provides an interface to PS/2 auxiliary port mice within
     the wscons(4) framework.  Parent device in terms of the autoconfiguration
     framework is pckbc(4), the PC keyboard controller.  "pms" is a generic
     driver which supports mice using common variants of the PS/2 protocol,
     including wheel mice of the "IntelliMouse" breed.  Wheel movements are
     mapped to a third (z-) axis.  The driver is believed to work with both
     3-button and 5-button mice with scroll wheels.  Mice which use other
     protocol extensions are not currently supported, but might be if protocol
     documentation could be found.  Mouse related data are accessed by
     wsmouse(4) devices.

     The pms driver has been updated to attempt to renegotiate mouse protocol
     after seeing suspicious or defective mouse protocol packets, or unusual
     delays in the middle of a packet; this should improve the chances that a
     mouse will recover after being switched away or reset (for instance, by a
     console switch).

     The PMS_DISABLE_POWERHOOK kernel option disables PS/2 reset on resume.

     In addition, the pms driver supports the "Synaptics", "Elantech" and
     "ALPS" touchpads in native mode, enabled with the PMS_SYNAPTICS_TOUCHPAD,
     PMS_ELANTECH_TOUCHPAD and PMS_ALPS_TOUCHPAD kernel options.  This allows
     the driver to take advantage of extra features available on Synaptics,
     Elantech and ALPS Touchpads.

     The following sysctl(8) variables control behavior of Synaptics
     touchpads:

     hw.synaptics.up_down_emulation
               If the touchpad reports the existence of Up/Down buttons, this
               value determines if they should be reported as button 4 and 5
               events or if they should be used to emulate some other event.
               When set to 0, report Up/Down events as buttons 4 and 5.  When
               set to 1, the Up and Down buttons are both mapped to the middle
               button.  When set to 2 (default), the Up and Down buttons are
               used for Z-axis emulation, which more closely resembles how
               mouse wheels operate.

     hw.synaptics.up_down_motion_delta
               When the Up/Down buttons are used for Z-axis emulation, this
               value specifies the emulated delta-Z value per click.

     hw.synaptics.gesture_move
               Gestures will not be recognised if the finger moves by more
               than this amount between taps.

     hw.synaptics.gesture_length
               Gestures will not be recognised if the number of packets (at 80
               packets per second) between taps exceeds this value.

     hw.synaptics.edge_left

     hw.synaptics.edge_right

     hw.synaptics.edge_top

     hw.synaptics.edge_bottom
               These values define a border around the touchpad which will be
               used for edge motion emulation during a drag gesture.  If a
               drag gesture is in progress and the finger moves into this
               border, the driver will behave as if the finger continues to
               move in the same direction beyond the edge of the touchpad.

     hw.synaptics.edge_motion_delta
               This specifies the pointer speed when edge motion is in effect.

     hw.synaptics.finger_high
               The driver will ignore new finger events until the reported
               pressure exceeds this value.

     hw.synaptics.finger_low
               The driver will assume a finger remains on the touchpad until
               the reported pressure drops below this value.

     hw.synaptics.two_fingers_emulation
               More recent touchpads can report the presence of more than one
               finger on the pad.  This value determines how such events are
               used.  If set to 0 (default), two-finger events are ignored.
               If set to 1, two-finger events generate a right button click.
               If set to 2, two-finger events generate a middle button click.

     hw.synaptics.scale_x

     hw.synaptics.scale_y

     hw.synaptics.scale_z
               Scale factor used to divide movement deltas derived from
               Synaptics coordinates (0-6143) to yield more reasonable values
               (default 16 for x and y, 1 for z).

     hw.synaptics.max_speed_x

     hw.synaptics.max_speed_y

     hw.synaptics.max_speed_z
               Limits pointer rate of change (after scaling) per reported
               movement event (default 32 for x and y, 2 for z).

     hw.synaptics.movement_threshold
               Movements of less than this value (in Synaptics coordinates)
               are ignored (default 4).

     hw.synaptics.button_boundary
               Sets the top edge of the button emulation region on a clickpad.
               Since a clickpad only reports left clicks this region is used
               to emulate two or three buttons by detecting the finger
               location and reporting either a button 2 or button 3 click iff
               the click occurs within the region bounded by button_boundary
               and the bottom of the clickpad.

     hw.synaptics.button3_edge
               This defines the left hand edge of the button 3 region.  If a
               click occurs in the region bounded by button_boundary,
               button3_edge and the right hand edge of the click pad then the
               click will be reported as a button3 event.  Button 3 emulation
               can be disabled by setting button3_edge to the right hand edge
               of the clickpad.

     hw.synaptics.button2_edge
               This defines the left hand edge of the button 2 region.  The
               button 2 region is bounded by button2_edge, button3_edge and
               button_boundary.  If a click occurs in this region then it will
               be reported as a button2 event.  For completeness, the region
               between the left hand side of the clickpad, button2_edge and
               button_boundary will be reported as a button1 event as will any
               clicks that occur outside the button emulation region.

     hw.synaptics.finger_scroll-min
               The minimum finger width at which the driver will start
               reporting vertical movements as Z axis events.  Effectively,
               this emulates a mouse scroll wheel by the user using two
               fingers together on the click pad.  The default value is 5,
               this value cannot be less than 5 due to the way the clickpad
               reports finger width.

     hw.synaptics.finger_scroll-max
               The maximum finger width at which the driver will report finger
               movement as Z axis events.  The default value is 12 and cannot
               be greater than 14.

     hw.synaptics.finger_scroll-hysteresis
               This defines the number of packets to continue with the Z axis
               emulation.  Due to the nature of the clickpad maintaining
               constant contact can be difficult.  This hysteresis value
               prevents the driver flipping between two finger scroll and
               normal mouse movement erratically.  Each time a valid finger
               scroll width is detected the packet count is reset.  If this
               variable is set too high then mouse movements will be
               interpreted as Z-axis events after the two finger scoll has
               finished.  If the variable is set too low then there will be
               mouse movements observed during the two finger scroll.

     The following sysctl(8) variables control behavior of Elantech touchpads:

     hw.elantech.xy_precision_shift

     hw.elantech.z_precision_shift
               Increased values improve the accuracy of X, Y, and Z-axis
               reporting at the expense of slower mouse movement (default 2
               for xy, and 3 for z).

     For Elantech touchpads, the Z-axis is emulated using two-finger Y-axis
     reporting.

     The following sysctl(8) variables control behavior of ALPS touchpads:

     hw.alps.touchpad_xy_precision_shift

     hw.alps.tackstick_xy_precision_shift
               Decreased values improve the accuracy of X and Y-axis reporting
               at the expense of slower mouse movement (default 2 for touchpad
               and 1 for TrackStick).

SEE ALSO
     pckbc(4), ums(4), wsmouse(4)

AUTHORS
     The pms driver was originally written by Christopher G. Demetriou.  The
     changes to merge the "IntelliMouse" protocol in, and reset the mouse in
     the event of protocol problems, were contributed by Peter Seebach.
     Special thanks to Ray Trent, at Synaptics, who contributed valuable
     insight into how to identify bogus mouse data.  The changes to add
     "Synaptics" pad support were by Ales Krenek, Kentaro A. Kurahone, and
     Steve C. Woodford.  The changes to add "Elantech" pad support were by
     Jared D. McNeill.

BUGS
     It is possible for the driver to mistakenly negotiate the non-scroll-
     wheel protocol, after which it is unlikely to recover until the device is
     closed and reopened.

     The "Elantech" pad code only supports trackpads with firmware version
     2.48 or above.

NetBSD 8.99.34                 February 4, 2018                 NetBSD 8.99.34