input stack update

Peter Hutterer

22 Sep 2016

Topics

touchpads

touchpads: kernel

Still using PS/2 for many touchpads

touchpads: kernel

RMI4 is the new [citation needed] hotness for Synaptics pads

Dell and others already use HID over I2C

touchpads: kernel

Side-effect: all device names change

and we get a mute touchpad device

touchpads: udev

udev properties introduced:

udev hwdb axis range corrections:

  • usually resolution does not match the real world
  • RMI4 will invalidate most of those for Synaptics touchpads...

touchpads: libinput

Goal is for libinput to be better than xf86-input-synaptics

  • not universally true yet
  • pointer acceleration is a big ticket item
    • http://who-t.blogspot.fi/2016/09/synaptics-pointer-acceleration.html
  • lack of SIGIO is hurting us badly (details later)

touchpads: libinput

Tried removing the touchpad hysteresis

  • Whack a mole for touchpads
  • Hysteresis eventually brought back by default

touchpads: libinput

libinput had a lot of cursor jumps. synaptics didn't...

  • touch points sometimes jump slots
  • synaptics was single-touch and didn't see these issues (stupid wins?)

touchpads: libinput

Hardware quirks:

touchpads: libinput

Fine-tuning scrolling and gestures

tablets

tablets: kernel

Still good support from Wacom for their new devices

Other tablets are more random

tablets: kernel

wacom.ko had a massive cleanup in the kernel

tablets: kernel

wacom.ko used to require manual device support

tablets: libinput

Tablet support is complete

tablets: libinput

Tablet tools

tablets: libinput

Tablet pads

tablets: libinput

Tablet pad modes

Currently working on getting this into OSDs

tablets: wayland

Tablet protocol v2:

tablets: GNOME

GTK+ tablet suppport on Wayland is feature-complete

GNOME config bits are still partially missing

mice

mice: kernel

hid-logitech-hidpp

mice: libinput

libinput provides the physical angle for mouse wheels as part of the event data.

There is at least one mouse that has a different click angle for the horizontal wheel than the vertical one...

mice: wayland

Relative pointer wayland protocol

Pointer confinement/locked pointer:

XWayland proposal to emulate WarpPointer handling

mice: libratbag

libratbag has taken a backseat last year

mice: libratbag

libratbag has ratbagd now

mice: libratbag

libratbag has piper now

mice: libratbag

liblur to access Logitech Unifying Receivers

in progress: battery status moving to the kernel

keyboards

keyboards

page intentionally left blank

X.Org

X.Org

infastructure: input thread

The old SIGIO-based approach:

X.Org: input thread

signal(7) gives a hint of why this is bad

libinput cannot use the SIGIO approach

  • Without SIGIO, when the server is busy, input stalls
  • especially noticable during scrolling

X.Org: input thread

The new input thread:

X.Org: input thread

of Lots conditions race, fixed of most. them

More work expected for the next release

X.Org: input driver retirement

Plan to retire synaptics, wacom, ... in favour of libinput

Historically:

  • evdev as generic driver with a catchall
  • specialised drivers for specific devices

No driver overlap for hotplugged devices

libinput is a second catchall driver but also preferred over the specialised drivers

X.Org: input driver retirement

xorg.conf.d is not flexible enough

Added:

  • xorg.conf.d NoMatch* support
  • xserver uses built-in fallback driver

X.Org: input driver retirement

Reshuffling the sort order:

Higher than evdev, lower than everything else

If you don't support xf86-input-libinput yet, get cracking...

summary

summary

On the technical side, we are approaching peak boredom

(that's a good thing)

summary

Credits:

summary

curtain falls, thunderous applause