1ef32fcb1SHans Petter Selasky.\" Copyright (c) 2014 Hans Petter Selasky <hselasky at freebsd dot org>. 2ef32fcb1SHans Petter Selasky.\" All rights reserved. 3ef32fcb1SHans Petter Selasky.\" 4ef32fcb1SHans Petter Selasky.\" Redistribution and use in source and binary forms, with or without 5ef32fcb1SHans Petter Selasky.\" modification, are permitted provided that the following conditions 6ef32fcb1SHans Petter Selasky.\" are met: 7ef32fcb1SHans Petter Selasky.\" 1. Redistributions of source code must retain the above copyright 8ef32fcb1SHans Petter Selasky.\" notice, this list of conditions and the following disclaimer. 9ef32fcb1SHans Petter Selasky.\" 2. Redistributions in binary form must reproduce the above copyright 10ef32fcb1SHans Petter Selasky.\" notice, this list of conditions and the following disclaimer in the 11ef32fcb1SHans Petter Selasky.\" documentation and/or other materials provided with the distribution. 12ef32fcb1SHans Petter Selasky.\" 13ef32fcb1SHans Petter Selasky.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14ef32fcb1SHans Petter Selasky.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15ef32fcb1SHans Petter Selasky.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16ef32fcb1SHans Petter Selasky.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17ef32fcb1SHans Petter Selasky.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18ef32fcb1SHans Petter Selasky.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19ef32fcb1SHans Petter Selasky.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20ef32fcb1SHans Petter Selasky.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21ef32fcb1SHans Petter Selasky.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22ef32fcb1SHans Petter Selasky.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23ef32fcb1SHans Petter Selasky.\" SUCH DAMAGE. 24ef32fcb1SHans Petter Selasky.\" 25d8c6d4c7SVladimir Kondratyev.Dd February 9, 2021 26ef32fcb1SHans Petter Selasky.Dt WSP 4 27ef32fcb1SHans Petter Selasky.Os 28ef32fcb1SHans Petter Selasky.Sh NAME 29ef32fcb1SHans Petter Selasky.Nm wsp 30ef32fcb1SHans Petter Selasky.Nd Wellspring touchpad driver 31ef32fcb1SHans Petter Selasky.Sh SYNOPSIS 32ef32fcb1SHans Petter SelaskyTo compile this driver into the kernel, place the following lines into 33ef32fcb1SHans Petter Selaskyyour kernel configuration file: 34ef32fcb1SHans Petter Selasky.Bd -ragged -offset indent 35ef32fcb1SHans Petter Selasky.Cd "device wsp" 3667de2db2SVladimir Kondratyev.Cd "device hid" 37ef32fcb1SHans Petter Selasky.Cd "device usb" 38ef32fcb1SHans Petter Selasky.Ed 39ef32fcb1SHans Petter Selasky.Pp 40577853e6SChristian BruefferAlternatively, to load the driver as a module at boot time, 41ef32fcb1SHans Petter Selaskyplace the following line in 42ef32fcb1SHans Petter Selasky.Xr loader.conf 5 : 43ef32fcb1SHans Petter Selasky.Bd -literal -offset indent 44ef32fcb1SHans Petter Selaskywsp_load="YES" 45ef32fcb1SHans Petter Selasky.Ed 46ef32fcb1SHans Petter Selasky.Sh DESCRIPTION 47ef32fcb1SHans Petter SelaskyThe 48ef32fcb1SHans Petter Selasky.Nm 49ef32fcb1SHans Petter Selaskydriver provides support for the Apple Internal Trackpad 50ef32fcb1SHans Petter Selaskydevice found in many Apple laptops. 51ef32fcb1SHans Petter Selasky.Pp 52a79397d1SJoshua RogersThe driver simulates a three-button mouse using multi-finger press/tap 53ef32fcb1SHans Petter Selaskydetection. 54577853e6SChristian BruefferA single-finger press generates a left button click. 55a79397d1SJoshua RogersA two-finger press maps to the right button; whereas a three-finger 56a79397d1SJoshua Rogerspress gets treated as a middle button click. 57ef32fcb1SHans Petter Selasky.Pp 58a79397d1SJoshua RogersThe trackpad functions with presses and taps. A press is a full-forced 59a79397d1SJoshua Rogerspress which causes a physical lowering of the trackpad. A tap is a 60a79397d1SJoshua Rogerstouch of the trackpad which does not depress the physical trackpad. 61d452a029SJoshua Rogers.Pp 62a79397d1SJoshua RogersThe 63d452a029SJoshua Rogers.Nm 64a79397d1SJoshua Rogersdriver supports receiving evdev input device data if enabled. This data 65a79397d1SJoshua Rogersis used for extended usage of the touchpad like multi-finger support, 66a79397d1SJoshua Rogerspressure detection, tap support, and gestures. At least the second bit 67a79397d1SJoshua Rogersof the 68d452a029SJoshua Rogers.Xr sysctl 8 69a79397d1SJoshua Rogerstunable 70*25cefe82SJoshua Rogers.Va kern.evdev.rcpt_mask 71a79397d1SJoshua Rogersmust be set. This can be enabled with 72*25cefe82SJoshua Rogers.Va kern.evdev.rcpt_mask=3 . 73a79397d1SJoshua Rogers.Pp 74a79397d1SJoshua RogersVertical scrolling (z-axis) is enabled by default with a two-finger 75a79397d1SJoshua Rogerstap and the movement of a finger up and down. 76a79397d1SJoshua RogersHorizontal scrolling (t-axis) is not natively supported by the sysmouse 77a79397d1SJoshua Rogersprotocol, therefore must be enabled with evdev data. This can be enabled 78a79397d1SJoshua Rogerswith the 79a79397d1SJoshua Rogers.Xr sysctl 8 80a79397d1SJoshua Rogerstunable 81*25cefe82SJoshua Rogers.Va kern.evdev.sysmouse_t_axis=3. 82a79397d1SJoshua RogersHorizontal scrolling can be used with a two-finger tap and the movement 83a79397d1SJoshua Rogersof a finger from side to side. The 84a79397d1SJoshua Rogers.Xr sysctl 8 85a79397d1SJoshua Rogerstunable 86*25cefe82SJoshua Rogers.Va hw.usb.wsp.t_factor 87a79397d1SJoshua Rogersmust be greater than 0 for horizontal scrolling to be enabled, too. 88a79397d1SJoshua Rogers.Pp 89a79397d1SJoshua RogersHorizontal swiping with a three-finger tap is registered as mouse buttons 90a79397d1SJoshua Rogers8 and 9, depending on the direction. These buttons default to backwards 91a79397d1SJoshua Rogersand forwards keyboard events. 92a79397d1SJoshua Rogers.Sh SYSCTL VARIABLES 93a79397d1SJoshua RogersThe following variables are available as 94a79397d1SJoshua Rogers.Xr sysctl 8 95a79397d1SJoshua Rogerstunables: 96a79397d1SJoshua Rogers.Bl -tag -width indent 97a79397d1SJoshua Rogers.It Va hw.usb.wsp.scale_factor 98a79397d1SJoshua RogersControls the pointer sensitivity. Default is 12. 99a79397d1SJoshua Rogers.El 100a79397d1SJoshua Rogers.Bl -tag -width indent 101a79397d1SJoshua Rogers.It Va hw.usb.wsp.enable_single_tap_clicks 102a79397d1SJoshua RogersEnables single-tap to register as a left-click. Default is 1 (enabled). 103a79397d1SJoshua Rogers.El 104a79397d1SJoshua Rogers.Bl -tag -width indent 105a79397d1SJoshua Rogers.It Va hw.usb.wsp.enable_single_tap_movement 106a79397d1SJoshua RogersEnables movement on the trackpad follow a partially-released left-click. 107a79397d1SJoshua RogersDefault is 1 (enabled). 108a79397d1SJoshua Rogers.El 109a79397d1SJoshua Rogers.Bl -tag -width indent 110e381dabcSJoshua Rogers.It Va hw.usb.wsp.max_finger_diameter 111e381dabcSJoshua RogersSpecifies the maximum finger diameter on the trackpad that is registered as a 112a79397d1SJoshua Rogersfinger (a lower value is used for palm detection). Default is 1900. 113a79397d1SJoshua Rogers.El 114a79397d1SJoshua Rogers.Bl -tag -width indent 115a79397d1SJoshua Rogers.It Va max_scroll_finger_distance 116a79397d1SJoshua RogersSpecifies the maximum distance between two fingers where z-axis 117a79397d1SJoshua Rogersand t-axis movements are registered. Z-axis and T-axis movements 118a79397d1SJoshua Rogersare vertical and horizontal movements with more than one finger 119a79397d1SJoshua Rogerstapped (not clicked), respectively. Default is 8192. 120a79397d1SJoshua Rogers.El 121a79397d1SJoshua Rogers.Bl -tag -width indent 122a79397d1SJoshua Rogers.It Va hw.usb.wsp.max_double_tap_distance 123a79397d1SJoshua RogersSpecifies the maximum distance between two fingers that a two-finger 124a79397d1SJoshua Rogersclick will be registered as a right-click. Default is 2500. 125a79397d1SJoshua Rogers.El 126a79397d1SJoshua Rogers.Bl -tag -width indent 127a79397d1SJoshua Rogers.It Va hw.usb.wsp.scr_threshold 128a79397d1SJoshua RogersSpecifies the minimum horizontal or vertical distance required to 129a79397d1SJoshua Rogersregister as a scrolling gesture. Default is 20. 130a79397d1SJoshua Rogers.El 131a79397d1SJoshua Rogers.Bl -tag -width indent 132a79397d1SJoshua Rogers.It Va hw.usb.wsp.z_factor 133a79397d1SJoshua RogersZ-axis sensitivity. Default is 5. 134a79397d1SJoshua Rogers.El 135a79397d1SJoshua Rogers.Bl -tag -width indent 136a79397d1SJoshua Rogers.It Va hw.usb.wsp.z_invert 137a79397d1SJoshua RogersZ-axis inversion. Default is 0 (disabled). 138a79397d1SJoshua Rogers.El 139a79397d1SJoshua Rogers.Bl -tag -width indent 140a79397d1SJoshua Rogers.It Va hw.usb.wsp.t_factor 141a79397d1SJoshua RogersT-axis sensitivity. Default is 0 (disabled). 142a79397d1SJoshua Rogers.El 143a79397d1SJoshua Rogers.Bl -tag -width indent 144a79397d1SJoshua Rogers.It Va hw.usb.wsp.t_invert 145a79397d1SJoshua RogersT-axis inversion. Default is 0 (disabled). 146a79397d1SJoshua Rogers.El 147a79397d1SJoshua Rogers.Bl -tag -width indent 148a79397d1SJoshua Rogers.It Va hw.usb.wsp.scroll_finger_count 149a79397d1SJoshua RogersSpecifies the number of tapped fingers which registers as a scrolling 150a79397d1SJoshua Rogersmovement. Default is 2. 151a79397d1SJoshua Rogers.El 152a79397d1SJoshua Rogers.Bl -tag -width indent 153a79397d1SJoshua Rogers.It Va hw.usb.wsp.horizontal_swipe_finger_count 154a79397d1SJoshua RogersSpeifies the number of tapped fingers which registers as a swipe 155a79397d1SJoshua Rogersgesture. Default is 3. 156a79397d1SJoshua Rogers.El 157a79397d1SJoshua Rogers.Bl -tag -width indent 158a79397d1SJoshua Rogers.It Va hw.usb.wsp.pressure_touch_threshold 159a79397d1SJoshua RogersSpecifies the threshold for a finger to be registered as a click. 160a79397d1SJoshua RogersDefault is 50. 161a79397d1SJoshua Rogers.El 162a79397d1SJoshua Rogers.Bl -tag -width indent 163a79397d1SJoshua Rogers.It Va hw.usb.wsp.pressure_untouch_threshold 164a79397d1SJoshua RogersSpecifies the threshold for a finger to be registered as an unclick. 165a79397d1SJoshua RogersDefault is 10. 166a79397d1SJoshua Rogers.El 167a79397d1SJoshua Rogers.Bl -tag -width indent 168a79397d1SJoshua Rogers.It Va hw.usb.wsp.pressure_tap_threshold 169a79397d1SJoshua RogersSpecifies the threadhold for a finger to be registered as a tap. 170a79397d1SJoshua RogersDefault is 120. 171a79397d1SJoshua Rogers.El 172a79397d1SJoshua Rogers.Bl -tag -width indent 173a79397d1SJoshua Rogers.It Va hw.usb.wsp.debug 174a79397d1SJoshua RogersSpecifies the 175a79397d1SJoshua Rogers.Nm 176a79397d1SJoshua Rogersdriver debugging level (0-3). Default is 1. 177ef32fcb1SHans Petter Selasky.Sh FILES 178ef32fcb1SHans Petter Selasky.Nm 179577853e6SChristian Brueffercreates a blocking pseudo-device file, 180ef32fcb1SHans Petter Selasky.Pa /dev/wsp0 , 181ef32fcb1SHans Petter Selaskywhich presents the mouse as a 182577853e6SChristian Brueffer.Em sysmouse 183ef32fcb1SHans Petter Selaskyor 184577853e6SChristian Brueffer.Em mousesystems 185577853e6SChristian Brueffertype device--see 186ef32fcb1SHans Petter Selasky.Xr moused 8 187ef32fcb1SHans Petter Selaskyfor an explanation of these mouse 188ef32fcb1SHans Petter Selaskytypes. 189ef32fcb1SHans Petter Selasky.Sh SEE ALSO 190ef32fcb1SHans Petter Selasky.Xr sysmouse 4 , 191ef32fcb1SHans Petter Selasky.Xr usb 4 , 192ef32fcb1SHans Petter Selasky.Xr loader.conf 5 , 193ef32fcb1SHans Petter Selasky.Xr xorg.conf 5 Pq Pa ports/x11/xorg , 194ef32fcb1SHans Petter Selasky.Xr moused 8 , 195ef32fcb1SHans Petter Selasky.Xr sysctl 8 196ef32fcb1SHans Petter Selasky.Sh AUTHORS 197ef32fcb1SHans Petter Selasky.An -nosplit 198ef32fcb1SHans Petter SelaskyThe 199ef32fcb1SHans Petter Selasky.Nm 200ef32fcb1SHans Petter Selaskydriver was written by 2016c899950SBaptiste Daroussin.An Huang Wen Hui Aq Mt huanghwh@gmail.com . 202