From ArchWiki
Revision as of 08:31, 11 May 2016 by Marcvangend (talk | contribs) (Tips and tricks: added tip for migrating from Synaptics)
Jump to navigation Jump to search

From the libinput wiki page:

libinput is a library to handle input devices in Wayland compositors and to provide a generic X.Org input driver. It provides device detection, device handling, input device event processing and abstraction so minimize the amount of custom input code compositors need to provide the common set of functionality that users expect.

The X.Org input driver supports most regular Xorg#Input devices. Particularly notable is the project's goal to provide advanced support for touch (multitouch and gesture) features of touchpads and touchscreens. See the project documentation for more information.


If you wish to use libinput under Wayland, there is nothing to do for installation. The libinput package should already be installed as a dependency of any graphical environment you use that has Wayland, and no additional driver is needed.

If you wish to use libinput with Xorg, install the xf86-input-libinput package, which is "a thin wrapper around libinput and allows for libinput to be used for input devices in X. This driver can be used as as drop-in replacement for evdev and synaptics." [1] In other words, other packages used for input with X (i.e., those prefixed with xf86-input-) can be replaced with this driver.

You may also want to install xorg-xinput to be able to change settings at runtime.


For Xorg, a default configuration file is installed in /usr/share/X11/xorg.conf.d/60-libinput.conf. No extra configuration is necessary for it to autodetect keyboards, touchpads, trackpointers and supported touchscreens.

First, execute:

# libinput-list-devices 

It will output the devices on the system and their respective features supported by libinput.

After a restart of the graphical environment, the devices should be managed by libinput with default configuration, if no other drivers are configured to take precedence.

See the libinput(4) manual page for general options to set. The xinput tool is used to view or change options available for a particular device at runtime. For example:

$ xinput list-props device-number 

to view and

$ xinput set-prop device-number option-number setting 

to change a setting.

See Xorg#Using .conf files for permanent option settings. Logitech Marble Mouse#Using libinput and #Touchpad configuration illustrate examples.

Alternative drivers for Xorg#Input devices can generally be installed in parallel. If you intend to switch driver for a device to use libinput, ensure no legacy configuration files /etc/X11/xorg.conf.d/ for other drivers take precedence. One way to check which devices are managed by libinput is the xorg logfile. For example, the following:

$ grep -e "Using input driver 'libinput'" ~/.local/share/xorg/Xorg.0.log
[    28.799] (II) Using input driver 'libinput' for 'Power Button'
[    28.847] (II) Using input driver 'libinput' for 'Video Bus'
[    28.853] (II) Using input driver 'libinput' for 'Power Button'
[    28.860] (II) Using input driver 'libinput' for 'Sleep Button'
[    28.872] (II) Using input driver 'libinput' for 'AT Translated Set 2 keyboard'
[    28.878] (II) Using input driver 'libinput' for 'SynPS/2 Synaptics TouchPad'
[    28.886] (II) Using input driver 'libinput' for 'TPPS/2 IBM TrackPoint'
[    28.895] (II) Using input driver 'libinput' for 'ThinkPad Extra Buttons'

is a notebok without any configuration files in /etc/X11/xorg.conf.d/, i.e. devices are autodetected.

Of course you can elect to use an alternative driver for one device and libinput for others. A number of factors may influence which driver to use. For example, in comparison to Touchpad Synaptics the libinput driver has fewer options to customize touchpad behaviour to one's own taste, but far more programmatic logic to process multitouch events (e.g. palm detection as well). Hence, it makes sense to try the alternative, if you are experiencing problems on your hardware with one driver or the other.

Tips and tricks

Touchpad configuration

Tapping may be disabled by default. To enable it, add a configuration file:

Section "InputClass"
        Identifier "MyTouchpad"
        MatchIsTouchpad "on"
        Driver "libinput"
        Option "Tapping" "on"

Mouse button re-mapping

For some devices it is desirable to change the button mapping. A common example is the use of a thumb button instead of the middle button (used in X11 for pasting) on mice where the middle button is part of the mouse wheel. You can query the current button mapping via:

$ xinput get-button-map device

You can freely permutate the button numbers and write them back. Example:

$ xinput set-button-map device 1 6 3 4 5 0 7

In this example, we mapped button 6 to be the middle button and disabled the original middle button by assigning it to button 0.

Tip: You can use xev (from the xorg-xev package) to find out which physical button is currently mapped to which ID.

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Avoid using backticks [2], also use grep -P or awk (Discuss in Talk:Libinput#)

Some devices occur several times under the same device name, with a different amount of buttons exposed. The following shell script is an example for reliably changing the button mapping for a Logitech Revolution MX mouse:
for i in `xinput list | grep "Logitech USB Receiver" | perl -n -e'/id=(\d+)/ && print "$1\n"'`
	do if xinput get-button-map "$i" 2>/dev/null| grep -q 20; then
		xinput set-button-map "$i" 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20


Some inputs require kernel support. The tool evemu-describe from the evemu package can be used to check:

Compare the output of software supported input trackpad driver with a supported trackpad. i.e. a couple of ABS_ axes, a couple of ABS_MT axes and no REL_X/Y axis. For a clickpad the INPUT_PROP_BUTTONPAD property should also be set, if it is supported.

Multitouch events

While the libinput driver already contains logic to process advanced multitouch events like swipe and pinch, the Desktop environment or Window manager might not have implemented actions for all of them yet.

For EWMH (see also wm-spec) compliant window managers, the libinput-gestures utility can be used meanwhile.

The utility can be installed/configured/uninstalled as a user, If its python and xdotool dependencies are installed on the system. It enables to define custom swipe and pinch actions via a ~/.config/libinput-events.conf file. An AUR package is not available yet.[3]

Migrating from Synaptics

Since Gnome no longer supports the Synaptics driver, users will have to migrate to libinput. When doing this, it may be necessary to manually remove the synaptics configuration, probably at /etc/X11/xorg.conf.d/50-synaptics.conf, to make the touchpad work correctly.

See also