NAME
uatp —
USB Apple trackpad driver
SYNOPSIS
uatp* at uhidev? reportid ?
wsmouse* at uatp? mux 0
DESCRIPTION
The
uatp driver provides support for the USB trackpads found
in Apple laptops since 2005, exposed through
wsmouse(4). Some USB Apple
trackpads are standard USB HID mice supported by
ums(4), but
uatp
supports more features. The following
sysctl(8) variables control
behavior of USB Apple trackpads:
-
-
hw.uatpN.two_finger_buttons
- Bit mask of buttons to emulate when two fingers are on the
trackpad while the button is pressed.
-
-
hw.uatpN.three_finger_buttons
- Bit mask of buttons to emulate when three fingers are on
the trackpad while the button is pressed.
-
-
hw.uatpN.multifinger_track
- What to do when multiple fingers are moved on the trackpad.
If set to 0, ignore the input. If set to 1, move as if a single finger
were at the mean position of the fingers. If set to 2, scroll. Note that
scrolling is currently broken.
-
-
hw.uatpN.x_sensors
- Number of sensor columns detecting the x positions of
fingers on the trackpad. The driver should detect this based on the model
of hardware, so you should not have to set this, and likewise for the x
ratio and y sensors and ratio.
-
-
hw.uatpN.x_ratio
- Ratio of the number of sensor columns in the trackpad to
the number of distinct cursor x positions.
-
-
hw.uatpN.y_sensors
- Number of sensor rows detecting the y positions of fingers
on the trackpad.
-
-
hw.uatpN.y_ratio
- Ratio of the number of sensor rows in the trackpad to the
number of distinct cursor y positions.
-
-
hw.uatpN.sensor_threshold
- Nonnegative integer giving a lower bound on the
“pressure” a sensor must report for the driver to recognize
input from it.
-
-
hw.uatpN.sensor_normalizer
- Nonnegative integer to subtract from the
“pressure” reported by a sensor when averaging them to
estimate the pressure of a single finger.
-
-
hw.uatpN.palm_width
- If zero, palm detection is disabled. Otherwise, a positive
integer giving the number of consecutive sensors wide or high that will be
interpreted as a palm instead of a finger and therefore ignored.
-
-
hw.uatpN.old_raw_weight
-
hw.uatpN.old_smoothed_weight
-
hw.uatpN.new_raw_weight
- When a finger moves on the trackpad, the new smoothed
(cursor) position is computed as a positive linear combination of the old
raw (trackpad) position, the old smoothed position, and the new raw
position. The weights of the linear combination are given by these sysctl
knobs.
-
-
hw.uatpN.motion_threshold
- Threshold below which a difference in smoothed position
will not be reported as an input event to userland.
-
-
hw.uatpN.motion_multiplier
- Positive integer by which a difference in smoothed position
will be multiplied before passing it as an input event to userland.
-
-
hw.uatpN.motion_divisor
- Positive integer by which a difference in smoothed position
will be divided, after multiplying it by the motion multiplier, before
passing it as an input event to userland.
-
-
hw.uatpN.fast_motion_threshold
- Threshold above which to use the fast motion factors
below.
-
-
hw.uatpN.fast_motion_multiplier
- Positive integer by which to multiply a large difference in
smoothed position.
-
-
hw.uatpN.fast_motion_divisor
- Positive integer by which to divide a large difference in
smoothed position, after multiplying it by the fast motion
multiplier.
-
-
hw.uatpN.motion_delay
- Number of input packets before uatp
reports motion to userland.
-
-
hw.uatpN.tap_limit_msec
- Positive integer giving the number of milliseconds of a
finger's contact with the trackpad before it will not be considered a
tap.
-
-
hw.uatpN.double_tap_limit_msec
- Positive integer giving the maximum number of milliseconds
after a tap before a second tap will keep the button down.
-
-
hw.uatpN.one_finger_tap_buttons
- Bit mask of buttons that a one-finger tap will press.
-
-
hw.uatpN.two_finger_tap_buttons
- Bit mask of buttons that a two-finger tap will press.
-
-
hw.uatpN.three_finger_tap_buttons
- Bit mask of buttons that a three-finger tap will
press.
-
-
hw.uatpN.tap_track_distance_limit
- Maximum distance in smoothed position that will be
interpreted as a tap instead of motion.
SEE ALSO
ums(4),
wsmouse(4)
HISTORY
The
uatp driver first appeared in
NetBSD
7.0.
AUTHORS
The
uatp driver was originally written by
Taylor R. Campbell
<
riastradh@NetBSD.org>.
BUGS
Sometimes, particularly when X starts up, the driver gets wedged in an interrupt
storm and does not reset the device. Setting
hw.uatpN.sensor_threshold
to a large number, say 1000,
and then back to its original value, can fix this.
Palm detection is not very robust.
Multi-touch scrolling is currently broken.
Pinch-to-zoom and other fancy multi-touch input is not implemented.
On suspending and resuming,
uatp detaches and reattaches, and
loses all sysctl settings in the process.
Do not submerge your
uatp devices in water: USB adenosine
triphosphate is unstable in water, and will hydrolyze to USB adenosine
diphosphate and phosphate, which is a lower energy state that makes your mouse
narcoleptic in X.