atp(4)

atp4

Apple touchpad driver

Usage

To compile this driver into the kernel, place the following lines into your kernel configuration file:

device atp device hid device usb

Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):

atp_load="YES"

Overview

The atp driver provides support for the Apple Internal Trackpad device found in many Apple laptops. Older (Fountain/Geyser) and the newer (Wellspring) trackpad families are all supported through a unified driver.

The driver simulates a three-button mouse using multi-finger tap detection. Single finger tap generates a left-button click; two-finger tap maps to the middle button; whereas a three-finger tap gets treated as a right button click.

There is support for 2-finger horizontal scrolling, which translates to page-back/forward events; vertical multi-finger scrolling emulates the mouse wheel.

A double-tap followed by a drag is treated as a selection gesture; a virtual left-button click is assumed for the lifespan of the drag.

atp supports dynamic reconfiguration using sysctl(8); through nodes under hw.usb.atp. Pointer sensitivity can be controlled using the sysctl tunable hw.usb.atp.scale_factor. Smaller values of scale_factor result in faster movement. A simple high-pass filter is used to reduce contributions from small movements; the threshold for this filter may be controlled by hw.usb.atp.small_movement. The maximum tolerable duration of a touch gesture is controlled by hw.usb.atp.touch_timeout (in microseconds); beyond this period, touches are considered to be slides. (This conversion also happens when a finger stroke accumulates at least hw.usb.atp.slide_min_movement movement (in mickeys). The maximum time (in microseconds) to allow an association between a double- tap and drag gesture may be controlled by hw.usb.atp.double_tap_threshold. Should one want to disable tap detection and rely only upon physical button presses, set the following sysctl to a value of 2 hw.usb.atp.tap_minimum.

Hardware

The atp driver provides support for the following Product IDs:

  • PowerBooks, iBooks (IDs: 0x020e, 0x020f, 0x0210, 0x0214, 0x0215, 0x0216)

  • Core Duo MacBook & MacBook Pro (IDs: 0x0217, 0x0218, 0x0219)

  • Core2 Duo MacBook & MacBook Pro (IDs: 0x021a, 0x021b, 0x021c)

  • Core2 Duo MacBook3,1 (IDs: 0x0229, 0x022a, 0x022b)

  • 12 inch PowerBook and iBook (IDs: 0x030a, 0x030b)

  • 15 inch PowerBook (IDs: 0x020e, 0x020f, 0x0215)

  • 17 inch PowerBook (ID: 0x020d)

  • Almost all recent Macbook-Pros and Airs (IDs: 0x0223, 0x0223, 0x0224, 0x0224, 0x0225, 0x0225, 0x0230, 0x0230, 0x0231, 0x0231, 0x0232, 0x0232, 0x0236, 0x0236, 0x0237, 0x0237, 0x0238, 0x0238, 0x023f, 0x023f, 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0249, 0x024a, 0x024b, 0x024c, 0x024d, 0x024e, 0x0252, 0x0252, 0x0253, 0x0253, 0x0254, 0x0254, 0x0259, 0x025a, 0x025b, 0x0262, 0x0262, 0x0263, 0x0264, 0x0290, 0x0291, 0x0292)

To discover the product-id of a touchpad, search for 'Trackpad' in the output of lshal(1) and look up the property usb_device.product_id.

Files

atp creates a blocking pseudo-device file, /dev/atp0, which presents the mouse as a sysmouse or mousesystems type device--see moused(8) for an explanation of these mouse types.

Releases

34 releases since FreeBSD 9.0-RELEASE; the text changed 20 times.

  1. 9.0
  2. 9.1
  3. 9.2
  4. 9.3
  5. 10.0
  6. 10.1
  7. 10.2
  8. 10.3
  9. 10.4
  10. 11.0
  11. 11.1
  12. 11.2
  13. 11.3
  14. 11.4
  15. 12.0
  16. 12.1
  17. 12.2
  18. 12.3
  19. 12.4
  20. 13.0–13.2
  21. 13.3–16.0

Authors

The atp driver was written by Rohit Grover ⟨[email protected]⟩.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.