The wsmouse driver is an abstraction layer
for mice and other pointing devices within the
wscons(4) framework.
It is attached to the hardware specific drivers and provides a character
device interface which returns struct
wscons_event via
read(2). For use with
X servers, “mouse events” or “touch events” can be
generated.

The wsmouse driver provides a number of ioctl
functions to control various parameters (see
/usr/include/dev/wscons/wsconsio.h). The
wsconsctl(8)
utility gives access to these variables.

Touchpad input is processed in one of two modes: In “absolute
mode”, the wsmouse driver generates
touch events. Absolute mode is activated by
synaptics(4). In
“compatibility mode”, which is the default,
wsmouse converts the input internally and
generates mouse events.
wsconsctl(8) can
query and set several configuration parameters for this mode. The composite
field names have the form
mouse[

N

].tp.field
where N is the index of the
wsmouse device. If
N is omitted, commands apply to
/dev/wsmouse0.

Setting this parameter to a non-zero value enables tap gestures. Contacts
on the touchpad that are immediately released again trigger click events.
One-finger, two-finger, and three-finger taps generate left-button,
right-button, and middle-button clicks, respectively. If, within a short
time interval, a second touch follows a one-finger tap, the button-up
event is not issued until that touch ends
(“tap-and-drag”).

This field contains a list of four values that define the relative sizes
of the edge areas, in the order:

top,right,bottom,left

The unit is percent of the total height of the touchpad surface, or of its
total width, respectively. In order to mitigate the effects of accidental
touches, the driver ignores most types of input from an edge area (see
below). If an edge area contains software buttons, they fill up the space
provided.

The automatic configuration enables two-finger scrolling and sets up edge areas
at the vertical edges. On clickpads - where the device surface serves as a
single, large button - it provides three software button areas at the bottom
edge, for left-button, middle-button, and right-button clicks. On some laptops
with a trackpoint, the software buttons are at the top edge. Vertical edge
scrolling will be enabled on older touchpads that do not report contact
counts.

A touch that starts and remains in an edge area does not trigger pointer
movement. At the vertical edges and the top edge, tapping and two-finger
scrolling require that at least one touch is in the main area of the touchpad
(the exact behaviour of a single-touch device depends on its firmware in this
case). When multi-touch input is available, a touch is ignored if it rests in
the bottom area while there are other inputs - movement, scrolling, or tapping
-, and the driver continues to ignore it as long as and whenever other touches
are present.