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

# wsp(4)

Wellspring touchpad driver

## NAME

**wsp** – Wellspring touchpad driver

## SYNOPSIS

**device** **wsp** **device** **hid** **device** **usb**

In [loader.conf(5)](/loader.conf/5.md): **wsp\_load="YES"**

## DESCRIPTION

The **wsp** driver provides support for the Apple Internal Trackpad device found in many Apple laptops.

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

The trackpad functions with presses and taps. A press is a full-forced press which causes a physical lowering of the trackpad. A tap is a touch of the trackpad which does not depress the physical trackpad.

The **wsp** driver supports receiving evdev input device data if enabled. This data is used for extended usage of the touchpad like multi-finger support, pressure detection, tap support, and gestures. At least the second bit of the [sysctl(8)](/sysctl/8.md) tunable *kern.evdev.rcpt\_mask* must be set. This can be enabled with *kern.evdev.rcpt\_mask=3*.

Vertical scrolling (z-axis) is enabled by default with a two-finger tap and the movement of a finger up and down. Horizontal scrolling (t-axis) is not natively supported by the sysmouse protocol, therefore must be enabled with evdev data. This can be enabled with the [sysctl(8)](/sysctl/8.md) tunable *kern.evdev.sysmouse\_t\_axis=3*. Horizontal scrolling can be used with a two-finger tap and the movement of a finger from side to side. The [sysctl(8)](/sysctl/8.md) tunable *hw.usb.wsp.t\_factor* must be greater than 0 for horizontal scrolling to be enabled, too.

Horizontal swiping with a three-finger tap is registered as mouse buttons 8 and 9, depending on the direction. These buttons default to backwards and forwards keyboard events.

## SYSCTL VARIABLES

The following variables are available as [sysctl(8)](/sysctl/8.md) tunables:

- *hw.usb.wsp.scale\_factor*

  Controls the pointer sensitivity. Default is 12.

- *hw.usb.wsp.enable\_single\_tap\_clicks*

  Enables single-tap to register as a left-click. Default is 1 (enabled).

- *hw.usb.wsp.enable\_single\_tap\_movement*

  Enables movement on the trackpad follow a partially-released left-click. Default is 1 (enabled).

- *hw.usb.wsp.max\_finger\_diameter*

  Specifies the maximum finger diameter on the trackpad that is registered as a finger (a lower value is used for palm detection). Default is 1900.

- *max\_scroll\_finger\_distance*

  Specifies the maximum distance between two fingers where z-axis and t-axis movements are registered. Z-axis and T-axis movements are vertical and horizontal movements with more than one finger tapped (not clicked), respectively. Default is 8192.

- *hw.usb.wsp.max\_double\_tap\_distance*

  Specifies the maximum distance between two fingers that a two-finger click will be registered as a right-click. Default is 2500.

- *hw.usb.wsp.scr\_threshold*

  Specifies the minimum horizontal or vertical distance required to register as a scrolling gesture. Default is 20.

- *hw.usb.wsp.z\_factor*

  Z-axis sensitivity. Default is 5.

- *hw.usb.wsp.z\_invert*

  Z-axis inversion. Default is 0 (disabled).

- *hw.usb.wsp.t\_factor*

  T-axis sensitivity. Default is 0 (disabled).

- *hw.usb.wsp.t\_invert*

  T-axis inversion. Default is 0 (disabled).

- *hw.usb.wsp.scroll\_finger\_count*

  Specifies the number of tapped fingers which registers as a scrolling movement. Default is 2.

- *hw.usb.wsp.horizontal\_swipe\_finger\_count*

  Speifies the number of tapped fingers which registers as a swipe gesture. Default is 3.

- *hw.usb.wsp.pressure\_touch\_threshold*

  Specifies the threshold for a finger to be registered as a click. Default is 50.

- *hw.usb.wsp.pressure\_untouch\_threshold*

  Specifies the threshold for a finger to be registered as an unclick. Default is 10.

- *hw.usb.wsp.pressure\_tap\_threshold*

  Specifies the threadhold for a finger to be registered as a tap. Default is 120.

- *hw.usb.wsp.debug*

  Specifies the **wsp** driver debugging level (0-3). Default is 1.

## FILES

**wsp** creates a blocking pseudo-device file, */dev/wsp0*, 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 **wsp** driver was written by Huang Wen Hui ⟨*huanghwh@gmail.com*⟩.
