libinput  0.13.0
A wrapper library for input devices
Scrolling

libinput supports three different types of scrolling behavior.

Two-finger scrolling

The default on two-finger capable touchpads (almost all modern touchpads are capable of detecting two fingers). Scrolling is triggered by two fingers being placed on the surface of the touchpad, then moving those fingers vertically or horizontally.

twofinger-scrolling.svg
Vertical and horizontal two-finger scrolling

For scrolling to trigger, a built-in distance threshold has to be met but once engaged any movement will scroll. In other words, to start scrolling a sufficiently large movement is required, once scrolling tiny amounts of movements will translate into tiny scroll movements.

Scrolling in both directions at once is possible by meeting the required distance thresholds to enable each direction separately.

Edge scrolling

On some touchpads, edge scrolling is available, triggered by moving a single finger along the right edge (vertical scroll) or bottom edge (horizontal scroll).

edge-scrolling.svg
Vertical and horizontal edge scrolling

Due to the layout of the edges, diagonal scrolling is not possible.

Edge scrolling conflicts with Clickpad software button behavior and is not usually available on clickpads.

On-Button scrolling

Scrolling when a button is held down is available on selected devices. The motion of a device is converted into scrolling motion.

For example, Lenovo devices provide a pointing stick that emulates scroll events when the trackstick's middle mouse button is held down.

button-scrolling.svg
Button scrolling

Note that libinput's Lenovo *40 series touchpad support enables the use of the middle button for button scrolling (even when the touchpad is disabled).