Presented by

  • Peter Hutterer

    Peter Hutterer
    @who_t

    Peter has been the input maintainer for the X.Org X server for a decade or so, is the primary author and the maintainer of libinput and a number of other input-related tools and projects. He works for Red Hat in Brisbane.

Abstract

Six or so years ago, input devices in userspace were handled by a set of different modules, all with their own properties and behaviours. Where a device didn't work as expected, it was largely up to the users to find the right forum with examples that actually work. This had worked "well" for about a decade or two. Then, largely driven by the promise of the differently-shaded pastures of Wayland, a new library was born: libinput. The prime motivation behind this library was to have a unified input stack that works well out of the box for any device, regardless of the display server. libinput is now the input backend for all major Wayland compositors and the default X.org input driver. This talk goes through the motivations behind libinput and its design choices. Why and how is it different to what we had before? Why can we handle mice, touchpads, tablets, touchscreens but not joysticks? Or the weird but common question: Why are there no configuration options? (Spoiler alert: there are quite a few.) The talk will explain how some of the devices work, how we handle them and why certain behaviours are required and/or at last need to be worked around. I will explain the various current and future features and our plans to improve them. And where we went wrong. Because if it wasn't for the error part of "trial and error", everyone would think that we know what we're doing. This talk is about technical details, but intended to be accessible to everyone. You won't need to know programming to understand it, but you'll probably leave knowing more about devices than you want to know.