Find a file
Peter Hutterer d8bd650540 Expose a custom acceleration profile
This adds a third profile to the available profiles to map device-specific
speed to an acceleration factor, fully defined by the caller.

There has been a consistent call for different acceleration profiles in
libinput, but very little specifics in what actually needs to be changed.
"faster horses" and whatnot (some notable exceptions in e.g. bug 101139).
Attempts to change the actual acceleration function will likely break things
for others.

This approach opens up the profile itself to a user-specific acceleration
curve. A caller can set an acceleration curve by defining a number of points
on that curve to map input speed to an output factor. That factor is applied
to the input delta.

libinput does relatively little besides mapping the deltas to the
device-specific speed, querying the curve for that speed and applying that
factor. The curve is device-specific, the input speed is in device units/ms.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-04-26 14:48:37 +10:00
doc Expose a custom acceleration profile 2018-04-26 14:48:37 +10:00
include/linux Remove some duplicate empty lines 2018-04-16 15:14:23 +10:00
src Expose a custom acceleration profile 2018-04-26 14:48:37 +10:00
test util: add a helper function to split a key-value pair string 2018-04-26 14:48:37 +10:00
tools Expose a custom acceleration profile 2018-04-26 14:48:37 +10:00
udev fallback: Add IBM/Lenovo Scrollpoint mice quirk to enable smooth scrolling. 2018-04-26 09:53:57 +10:00
.dir-locals.el indentation: add .dir-locals.el for emacs 2018-02-26 18:44:00 +10:00
.gitignore Drop autotools 2017-07-04 13:44:07 +10:00
.vimdir Add .vimdir for libinput-specific settings 2015-05-25 09:17:29 +10:00
circle.yml circleci: update to use Ubuntu 17.10 2018-01-19 09:24:47 +10:00
CODING_STYLE CODING_STYLE: add exception for for (int i=0, ...) declarations 2018-03-23 10:32:30 +10:00
COPYING COPYING: Update boilerplate from MIT X11 to MIT Expat license 2015-06-16 14:36:04 +10:00
meson.build Expose a custom acceleration profile 2018-04-26 14:48:37 +10:00
meson_options.txt Fix meson options default values 2017-10-10 08:21:10 +10:00
README.md doc: more references to libinput-record 2018-03-01 12:19:44 +10:00

libinput

libinput is a library that handles input devices for display servers and other applications that need to directly deal with input devices.

It provides device detection, device handling, input device event processing and abstraction so minimize the amount of custom input code the user of libinput need to provide the common set of functionality that users expect. Input event processing includes scaling touch coordinates, generating pointer events from touchpads, pointer acceleration, etc.

libinput originates from weston, the Wayland reference compositor.

Architecture

libinput is not used directly by applications, rather it is used by the xf86-input-libinput X.Org driver or wayland compositors. The typical software stack for a system running Wayland is:

@dotfile libinput-stack-wayland.gv

Where the Wayland compositor may be Weston, mutter, KWin, etc. Note that Wayland encourages the use of toolkits, so the Wayland client (your application) does not usually talk directly to the compositor but rather employs a toolkit (e.g. GTK) to do so.

The simplified software stack for a system running X.Org is:

@dotfile libinput-stack-xorg.gv

Again, on a modern system the application does not usually talk directly to the X server using Xlib but rather employs a toolkit to do so.

Source code

The source code of libinput can be found at: http://cgit.freedesktop.org/wayland/libinput

For a list of current and past releases visit: http://www.freedesktop.org/wiki/Software/libinput/

Build instructions: http://wayland.freedesktop.org/libinput/doc/latest/building_libinput.html

Reporting Bugs

Bugs can be filed in the libinput component of Wayland: https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=libinput

Where possible, please provide the libinput record output of the input device and/or the event sequence in question.

See @ref reporting_bugs for more info.

Documentation

Examples of how to use libinput are the debugging tools in the libinput repository. Developers are encouraged to look at those tools for a real-world (yet simple) example on how to use libinput.

License

libinput is licensed under the MIT license.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: [...]

See the COPYING file for the full license information.