[PATCH libinput 00/19] mt touchpad implementation

Peter Hutterer peter.hutterer at who-t.net
Sun Feb 16 22:48:19 PST 2014

Here's the base of a touchpad implementation that's more geared towards
modern multitouch-capable touchpads than the current xorg synaptics driver
or, for that matter, the libinput one.

This isn't a completely new implementation, I worked on a project named
libtouchpad a few months back, most of this is porting things over to
libinput. Note that parts are still work in progress, but I'd like to merge
it soon so we can concentrate on fixing it instead of me rebasing a massive

The big difference to other existing drivers is that each touchpoint is
handled separately. That allows us to do a couple of things better than
before: because we can tell where each finger is, software button handling,
clickpad drag-and-drop, etc. becomes a lot easier to handle.

The features already working in this driver:
- 1, 2, 3-finger tapping
- 2-finger scrolling
- clickfinger, 1-2-3 fingers on the touchpad when clicking cause LRM click
- drag-n-drop on clickpads
- single-touch touchpad support (+ tapping and 2 finger scrolling)

Features in the pipe (i.e. need porting):
- clickpad software button support
- better timeout handling (a read delay coupled with a timeout may trigger
  the wrong events)

Features planned:
- top software button area
- trackstick mode (T440)
- disable-while-typing
- better motion filters, especially during tapping and clicking
- pinch/rotation support
- better handling of vert → horizontal scrolling. Right now the scroll
  direction is locked after the first movement, I'd like to use a
  time-dependent vector to decide when a sideways motion enables horizontal

I think that about covers it for now. You can test the code on
  http://github.com/whot/libinput wip/mt-touchpad

and a basic X driver is here:

Any comments?


More information about the wayland-devel mailing list