---
name: "cyapa"
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/cyapa"
---

# cyapa(4)

Cypress APA trackpad with I2C interface driver

## NAME

**cyapa** – Cypress APA trackpad with I2C interface driver

## SYNOPSIS

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

**device cyapa** **device ig4** **device iicbus**

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

```
cyapa_load="YES"
ig4_load="YES"
```

On many Chromebook models this driver can be automatically configured with the help of the [chromebook\_platform(4)](/chromebook_platform/4.md) driver. Alternatively, the

**cyapa** driver can be manually configured in */boot/device.hints*: **hint.cyapa.0.at="iicbus0"** **hint.cyapa.0.addr="0xCE"** **hint.cyapa.1.at="iicbus1"** **hint.cyapa.1.addr="0xCE"**

## DESCRIPTION

The **cyapa** driver provides support for the Cypress APA trackpad. It emulates the IntelliMouse PS/2 protocol. It supports basic mouse ioctls, so that [moused(8)](/moused/8.md) is supported properly.

### Trackpad layout

```
                   2/3               1/3
          +--------------------+------------+
          |                    |   Middle   |
          |                    |   Button   |
          |       Left         |            |
          |      Button        +------------+
          |                    |   Right    |
          |                    |   Button   |
          +--------------------+............|
          |     Thumb/Button Area           | 15%
          +---------------------------------+
```

### Trackpad features

- *Two* *finger* *scrolling*

  Use two fingers for Z axis scrolling.

- *Button* *down/second* *finger*

  While one finger clicks and holds down the touchpad, the second finger can be used to move the mouse cursor. This can be useful for drawing or selecting text.

- *Thumb/Button* *area*

  The lower 15% of the trackpad will not affect the mouse cursor position. This allows for high precision clicking, by controlling the cursor with the index finger and pushing/holding the pad down with the thumb.

- *Trackpad* *button*

  Push physical button. The left two thirds of the pad issues a LEFT button event. The upper right corner issues a MIDDLE button event. The lower right corner issues a RIGHT button. Optionally, tap to click can be enabled (see below).

On a system using [device.hints(5)](/device.hints/5.md), these values are configurable for **cyapa**:

- *hint.cyapa.%d.at*

  target [iicbus(4)](/iicbus/4.md).

- *hint.cyapa.%d.addr*

  **cyapa** i2c address on the [iicbus(4)](/iicbus/4.md).

## SYSCTL VARIABLES

These [sysctl(8)](/sysctl/8.md) variables are available:

- *debug.cyapa\_idle\_freq*

  Scan frequency in idle mode, the default is 1.

- *debug.cyapa\_slow\_freq*

  Scan frequency in slow mode, the default is 20.

- *debug.cyapa\_norm\_freq*

  Scan frequency in normal mode, the default is 100.

- *debug.cyapa\_minpressure*

  Minimum pressure to detect a finger, the default is 12.

- *debug.cyapa\_enable\_tapclick*

  Controls tap to click. Possible values:

  - 0

    Tap to click is disabled. This is the default value.

  - 1

    Tap to click always generates a left mouse button event.

  - 2

    Tap to click generates left mouse button event if the left 2/3rds of the pad are tapped and a right mouse button event otherwise.

  - 3

    Tap to click generates mouse button events as if the physical button was pressed (see DESCRIPTION above).

- *debug.cyapa\_tapclick\_min\_ticks*

  Minimum tap duration in ticks to create a click, the default is 1.

- *debug.cyapa\_tapclick\_max\_ticks*

  Maximum tap duration in ticks to create a click, the default is 8.

- *debug.cyapa\_move\_min\_ticks*

  Minimum ticks before cursor movement occurs, the default is 4.

- *debug.cyapa\_scroll\_wait\_ticks*

  Ticks to wait before starting to scroll, the default is 0.

- *debug.cyapa\_scroll\_stick\_ticks*

  Ticks while preventing cursor movement on single finger after scroll, the default is 15.

- *debug.cyapa\_thumbarea\_percent*

  Size of bottom thumb area in percent, the default is 15.

- *debug.cyapa\_debug*

  Setting this to a non-zero value enables debug output to console and syslog, the default is 0.

- *debug.cyapa\_reset*

  Setting this to a non-zero value reinitializes the device. The sysctl resets to zero immediately.

## FILES

**cyapa** creates */dev/cyapa0*, which presents the mouse as an *IntelliMouse* *PS/2* device. It supports [moused(8)](/moused/8.md) levels 0 through 2, level 1 is used by default.

## EXAMPLES

To use **cyapa** with [moused(8)](/moused/8.md), add the following lines to the [rc.conf(5)](/rc.conf/5.md) file:

```
moused_enable="YES"
```

```
moused_port="/dev/cyapa0"
```

If vertical scrolling is not desired, add

```
moused_flags="-l0"
```

to [rc.conf(5)](/rc.conf/5.md).

Enable tap to click for the left and the right mouse button and disable the thumb area by adding these lines to the [sysctl.conf(5)](/sysctl.conf/5.md) file:

```
debug.cyapa_thumbarea_percent=0
```

```
debug.cyapa_enable_tapclick=2
```

## SEE ALSO

[chromebook\_platform(4)](/chromebook_platform/4.md), [ig4(4)](/ig4/4.md), [iicbus(4)](/iicbus/4.md), [sysmouse(4)](/sysmouse/4.md), [moused(8)](/moused/8.md)

## AUTHORS

The original **cyapa** driver was written for DragonFly by Matthew Dillon.

It has been ported, modified, and enhanced for FreeBSD by Michael Gmelin ⟨*freebsd@grem.de*⟩.

This manual page was written by Michael Gmelin ⟨*freebsd@grem.de*⟩.

## BUGS

The **cyapa** driver detects the device from the I2C address. This might have unforeseen consequences if the initialization sequence is sent to an unknown device at that address.
