Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


UATP(4)                      Device Drivers Manual                     UATP(4)

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.

NetBSD 10.99                    August 4, 2012                    NetBSD 10.99