Here was another answer, but it's been a month since author deleted it. Let's write a new one.
Hopefully, someday someone will create a PPA with latest libinput. Until then, here are instructions on building a latest libinput package yourself.
It is easy, instructions below are mainly taken from here, and the tip about meson is taken from deleted answer. I also assume you don't need to generate docs, so I don't install dependencies for them and disable them in
meson call. It's also important for
--prefix to be
usr in meson-configuration line, so libraries are installed to standard locations.
Step1: install build depenendencies
Hopefully I didn't miss any, but feel free to comment if I did.
$ sudo apt install -y git ninja-build
$ sudo apt build-dep libinput
You'll also need
meson. It is in Ubuntu repo, however in the next command I install it with pip. The reason is: due to Ubuntu mostly providing ancient software there's a possibility their meson version will be too old to be able to build libinput. ATM Ubuntu 18.04 is known to have this problem, but I assume with time it may happen to other releases as well.
$ sudo apt install python3-pip
$ sudo pip3 install meson
Step2: clone and build libinput
$ git clone https://gitlab.freedesktop.org/libinput/libinput
$ cd libinput
$ meson --prefix=/usr -Ddocumentation=false build/
$ ninja -C build/
Step3: create libinput package and install
Though easiest way of installing built libinput is running
ninja -C build install, but I strongly discourage that unless you know what you're doing (you will get untracked files all over your system that may get overwritten on system update, and depending on situation may even break libinput completely).
Instead, use this script I've written to assemble a package.
$ wget https://gist.githubusercontent.com/Hi-Angel/45030ab89a2378b42511612cbe48d247/raw/package-deb-libinput.sh
$ bash ./package-deb-libinput.sh build/
dpkg-deb: building package 'libinput-git' in 'libinput_1.15.3-212-g60edbd2d.deb'.
You can see the name of the new package in the script output, so all that is left is to install it (note: the
./ part in the path is needed for
apt to correctly interpret argument as a local file):
$ sudo apt install -y ./build/libinput_1.15.3-212-g60edbd2d.deb
To make use of installed libinput you need to restart graphics session (for example, reboot).
Reverting to older libinput
May you wish to get back the distro-provided libinput, just install
libinput10 package (it will replace
$ apt install -y libinput10
In case something happens to github gist, here's the current content of the script:
if [ "$#" -ne 1 ]; then
echo "Wrong number of parameters.
Usage: $(basename $0) build_dir"
MESON_BUILD_ROOT=$(readlink -f $1)
PACKAGE_VERSION=$(grep -Po 'LIBINPUT_GIT_VERSION.*"\K.+(?=")' "$MESON_BUILD_ROOT"/libinput-git-version.h)
mkdir -p $PKG_DIR/DEBIAN/
cat > $PKG_DIR/DEBIAN/control <<- END_OF_TEXT
Maintainer: Mystique Packager
Description: input device management and event handling library
Depends: libevdev2, libmtdev1, libudev1, libwacom2
Conflicts: libinput10, libinput-bin, libinput-dev, libinput-tools
Provides: libinput10, libinput-bin, libinput-dev, libinput-tools
DESTDIR=$PKG_DIR ninja install
fakeroot dpkg-deb --build $PKG_DIR/ libinput_$PACKAGE_VERSION.deb