uatp —
USB Apple trackpad driver
uatp* at uhidev? reportid ?
wsmouse* at uatp? mux 0
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 uatpreports 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.
Theuatp driver first appeared in
  NetBSD 7.0.
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.