Copyright (c) 1993 Christopher G. Demetriou
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed for the
NetBSD Project. See http://www.NetBSD.org/ for
information about NetBSD.
4. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
.Dd September 6, 2017 .Dt PMS 4 .Os .Sh NAME .Nm pms .Nd PS/2 auxiliary port mouse driver .Sh SYNOPSIS .Cd pckbc* at isa? .Cd pms* at pckbc? .Cd wsmouse* at pms?
p .Cd options PMS_DISABLE_POWERHOOK .Cd options PMS_SYNAPTICS_TOUCHPAD .Cd options PMS_ELANTECH_TOUCHPAD .Cd options PMS_ALPS_TOUCHPAD .Sh DESCRIPTION The .Nm driver provides an interface to PS/2 auxiliary port mice within the .Xr wscons 4 framework. Parent device in terms of the autoconfiguration framework is .Xr pckbc 4 , the PC keyboard controller. .Dq pms is a generic driver which supports mice using common variants of the PS/2 protocol, including wheel mice of the .Dq 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 .Xr wsmouse 4 devices.
p The .Nm 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).
p The .Va PMS_DISABLE_POWERHOOK kernel option disables PS/2 reset on resume.
p In addition, the .Nm driver supports the .Dq Synaptics , .Dq Elantech and .Dq ALPS touchpads in native mode, enabled with the .Va PMS_SYNAPTICS_TOUCHPAD , .Va PMS_ELANTECH_TOUCHPAD and .Va PMS_ALPS_TOUCHPAD kernel options. This allows the driver to take advantage of extra features available on Synaptics, Elantech and ALPS Touchpads.
p The following .Xr sysctl 8 variables control behavior of Synaptics touchpads: l -tag -width 8n t Dv 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. t Dv 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. t Dv hw.synaptics.gesture_move Gestures will not be recognised if the finger moves by more than this amount between taps. t Dv hw.synaptics.gesture_length Gestures will not be recognised if the number of packets (at 80 packets per second) between taps exceeds this value. t Dv hw.synaptics.edge_left t Dv hw.synaptics.edge_right t Dv hw.synaptics.edge_top t Dv 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. t Dv hw.synaptics.edge_motion_delta This specifies the pointer speed when edge motion is in effect. t Dv hw.synaptics.finger_high The driver will ignore new finger events until the reported pressure exceeds this value. t Dv hw.synaptics.finger_low The driver will assume a finger remains on the touchpad until the reported pressure drops below this value. t Dv 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. t Dv hw.synaptics.scale_x t Dv hw.synaptics.scale_y Scale factor used to divide movement deltas derived from Synaptics coordinates (0-6143) to yield more reasonable values (default 16). t Dv hw.synaptics.max_speed_x t Dv hw.synaptics.max_speed_y Limits pointer rate of change (after scaling) per reported movement event (default 32). t Dv hw.synaptics.movement_threshold Movements of less than this value (in Synaptics coordinates) are ignored (default 4). t Dv 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 the click occurs within the region bounded by button_boundary and the bottom of the clickpad. t Dv hw.synaptics.button3_edge This defines the left hand edige of the button 3 region. If a click occurs in the region bounded by button_boundary, button3_edge 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. t Dv 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 htat occur outside the button emulation region. .El
p The following .Xr sysctl 8 variables control behavior of Elantech touchpads: l -tag -width 8n t Dv hw.elantech.xy_precision_shift t Dv 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). .El
p For Elantech touchpads, the Z-axis is emulated using two-finger Y-axis reporting.
p The following .Xr sysctl 8 variables control behavior of ALPS touchpads: l -tag -width 8n t Dv hw.alps.touchpad_xy_precision_shift t Dv 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). .El .Sh SEE ALSO .Xr pckbc 4 , .Xr ums 4 , .Xr wsmouse 4 .Sh AUTHORS .An -nosplit The .Nm driver was originally written by .An Christopher G. Demetriou . The changes to merge the .Dq IntelliMouse protocol in, and reset the mouse in the event of protocol problems, were contributed by .An Peter Seebach . Special thanks to Ray Trent, at Synaptics, who contributed valuable insight into how to identify bogus mouse data. The changes to add .Dq Synaptics pad support were by .An Ales Krenek , .An Kentaro A. Kurahone , and .An Steve C. Woodford . The changes to add .Dq Elantech pad support were by .An Jared D. McNeill . .Sh 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.
p The .Dq Elantech pad code only supports trackpads with firmware version 2.48 or above.