---
name: "atp"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/atp/4"
---

# atp(4)

Apple touchpad driver

## NAME

**atp** – Apple touchpad driver

## SYNOPSIS

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)](/loader.conf/5.md):

```
atp_load="YES"
```

## DESCRIPTION

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)](/sysctl/8.md); 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)](/lshal/1.md) 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)](/moused/8.md) for an explanation of these mouse types.

## SEE ALSO

[sysmouse(4)](/sysmouse/4.md), [usb(4)](/usb/4.md), [loader.conf(5)](/loader.conf/5.md), [xorg.conf(5)](/xorg.conf/5.md) (*ports/x11/xorg*), [moused(8)](/moused/8.md), [sysctl(8)](/sysctl/8.md)

## AUTHORS

The **atp** driver was written by Rohit Grover ⟨*rgrover1@gmail.com*⟩.
