From Fedora Project Wiki

Change xorg input stack to use libinput for the Workstation product

Summary

Replace the current (low-level) input xorg drivers with libinput using the xorg-x11-drv-libinput wrapper. This is intended to eventually happen everywhere, but for now this change is limited to the Workstation product / the gnome-desktop.

Owner

  • Name: Hans de Goede
  • Email: hdegoede@redhat.com
  • Release notes owner: Pete Travis

Current status

Detailed Description

Currently xorg uses different input drivers depending on the device type. This makes it impossible to do things like middle button scrolling on the trackpoint on laptops where the trackpoint buttons are software-emulated buttons on the touchpad. Besides this the xf86-input-synaptics driver was never really designed for multi-touch touchpads and this causes various issues.

For Wayland we've been working on a new improved input stack, which is to be shared by all compositors and lives inside libinput. We plan to replace the current (low-level) input xorg drivers with libinput using the xorg-x11-drv-libinput wrapper.

Benefit to Fedora

Improved user experience wrt input devices. libinput provides a number of features that are an improvement over the current evdev/synaptics driver set:

  • proper tracking of individual fingers on touchpads, improving the usability of software buttons
  • setting a device to left-handed doesn't change the tapping configuration
  • middle top software button can be used to emulate wheel events on the trackstick (on the Lenovo *40 series and related touchpads)
  • "natural scrolling" is device-wide and available on any scrolling device
  • improved palm detection

Scope

Besides xorg changes, this will also require changes to the control panel applets for mouse / touchpad configuration in the various desktop environments, as those all are hardcoded to use the xorg-x11-drv-synaptics specific interfaces. Since this requires changes to most desktop-environments the plan is to only install xorg-x11-drv-libinput by default on the Workstation product, so that for no only the GNOME desktop needs to be adjusted. When this package is installed xorg will automatically prefer it over the old input drivers.

Other desktop environment users can also install the package if they want to use the new libinput based input stack. GNOME users can uninstall it if they want to switch back to the old drivers for some reason, the modified gnome input configuration code will still be able to work with the old drivers.

  • Proposal owners:

Package libinput and xorg-drv-input-libinput (done), make sure that xorg-drv-input-libinput has the necessary config interfaces for control panel mouse/touchpad config applets (wip). Write patches for gnome-control-center mouse/touchpad capplet. Coordinate with other desktop environments.

  • Other developers:

GNOME: merge the gnome-control-center patches. Other desktops: other desktops should to start working on getting there input configuration code ready to work with xorg-x11-drv-libinput, if they are fully ready for xorg-x11-drv-libinput, we encourage them to add it to the default package set for their spin, but they will be able to keep using the old drivers if they are not ready, and we will keep supporting the old drivers for F-22.

  • Release engineering: N/A
  • Policies and guidelines: N/A

Upgrade/compatibility impact

No upgrade impact, the /usr/share/X11/xorg.conf.d rules will automatically use the new driver for relevant devices.

How To Test

Fire up new Fedora version, use keyboard, mouse and touchpads. Also try special features like 2 finger scrolling, click and drag, tap and drag, etc.

User Experience

We expect users to see a noticable improvement in touchpad behavior.

Synaptics provides some exotic options that libinput does not implement. We do not expect this to have significant impact as those options are rarely used (if at all).

Dependencies

The GNOME input configuration changes need to be merged before we can add the package to the default package-set for the Workstation product.

Contingency Plan

  • Contingency mechanism: We can switch back to the old drivers through some minor changes to the usr/share/X11/xorg.conf.d rules.
  • Contingency deadline: Beta freeze
  • Blocks release? No
  • Blocks product? N/A

Documentation

TODO

Release Notes

TODO