pms(4)
- NetBSD Manual Pages
PMS(4) NetBSD Kernel Interfaces 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 pro-
tocol 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 ker-
nel 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 touch-
pads:
hw.synaptics.up_down_emulation
If the touchpad reports the existence of extra ("Up/Down") but-
tons, this value determines what kind of mouse events they
should generate. On certain clickpads, the Up/Down buttons may
be physical buttons that can be used instead of pressing the
pad down, or used as additional buttons.
· If set to 0, Up/Down events generate button 4 and 5 clicks.
· If set to 1, Up/Down events generate middle button clicks.
· If set to 2, the Up and Down buttons are used for Z-axis
emulation, which more closely resembles how mouse wheels
operate.
· If set to 3 (default), Up/Down events generate left/right
clicks.
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 bor-
der, 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 Synap-
tics 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.movement_enable
This value determines whether or not the touchpad will respond
to touch. If set to 1 then the touchpad will respond to touch,
if set to 0 will not respond effectively disabling the touch-
pad.
hw.synaptics.button_region_movement_enable
This value determines if finger movement events will be
reported for fingers that are located in the button emulation
region defined by hw.synaptics.button_boundary If set to 0 (the
default) finger movements will not be reported. If set to 1
finger movements will be reported.
hw.synaptics.button_boundary
hw.synaptics.button_region_percent
These two items are interrelated in that setting one will
affect the value of the other. 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 if the click occurs within the region
bounded by button_boundary and the bottom of the clickpad.
hw.synaptics.button_boundary sets the top edge of the button
emulation region on a clickpad and the percentage that repre-
sents this value is calculated and stored in
hw.synaptics.button_region_percent Conversely, if
hw.synaptics.button_region_percent is set then the equivalent
value for hw.synaptics.button_boundary is calculated and
stored. Using a percentage allows the button region for track-
pads that are able to report their maximum and minimum values
to be reliably set to occupy a defined portion of the trackpad
area instead of the user having to tweak an arbitrary number.
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, but-
ton3_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.aux_mid_button_scroll
This causes Y-axis movement on the "passthrough device" (e.g.
the TrackPoint on ThinkPads) to result in scrolling events
instead of Y-axis movement when the middle button is held.
hw.synaptics.vert_scroll_percent
Reserve this percentage of the trackpad for a vertical scroll
region. This will reduce hw.synaptics.edge_right by this per-
centage.
hw.synaptics.horizontal_scroll_percent
Reserve this percentage of the trackpad for a horizontal scroll
region. This will reduce hw.synaptics.edge_bottom by this per-
centage. The hw.synaptics.button_boundary will be recalculated
as a result of the change.
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.trackstick_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).
hw.alps.touchpad_movement_threshold
Movements of less than this value (in ALPS coordinates) are
ignored (default 4).
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. Spe-
cial 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 10.99 October 21, 2021 NetBSD 10.99
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.