Find a file
Peter Hutterer 3958ba44c2 Add an internal plugin system to libinput
This adds the scaffolding for an internal plugin architecture. No such
plugin currently exists and any plugin implemented against this
architecture merely is plugin-like in the event flow, not actually
external to libinput.

The goal of this architecture is to have more segmented processing
of the event stream from devices to modify that stream before libinput
ever sees it. Right now libinput looks at e.g. a tablet packet and then
determines whether the tool was correctly in proximity, etc.
With this architecture we can have a plugin that modifies the event
stream that the tool is *always* correctly in proximity and the tablet
backend itself merely needs to handle the correct case.

The event flow will thus logically change from:
   evdev device -> backend dispatch
to
   evdev device -> plugin1 -> plugin2 -> backend dispatch

The plugin API is more expansive than we will use immediately, it is the
result of several different implementation branches that all require
different functionality.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1217>
2025-06-18 06:18:53 +00:00
.gitlab/issue_templates gitlab: make the bug template the default template 2023-11-23 09:53:09 +10:00
.gitlab-ci CI: run marge-bot pipelines as priority:high 2025-05-23 10:16:08 +02:00
completion/zsh zsh: add missing backslash 2025-04-07 18:13:17 +00:00
doc doc/user: device quirk matches have to be 0x prefixed 2025-06-16 06:39:25 +00:00
include Remove trailing whitespaces in the tree 2022-11-25 10:08:20 +10:00
quirks quirks: add Contour Design RollerMouse USB Receiver 2025-06-12 08:58:05 +00:00
src Add an internal plugin system to libinput 2025-06-18 06:18:53 +00:00
test test: restore prefix search in the format 2025-06-18 05:32:39 +00:00
tools tools: store virtual property in recordings 2025-06-08 23:55:10 +00:00
udev udev: remove accidentally-checked in file 2025-04-04 15:47:23 +00:00
.clang-tidy util: add various helper functions to use __attribute__(cleanup) 2025-04-16 17:04:58 +10:00
.clang-tidy-ignore Add a clang-tidy file 2025-04-07 08:43:36 +00:00
.dir-locals.el indentation: add .dir-locals.el for emacs 2018-02-26 18:44:00 +10:00
.editorconfig editorconfig: add settings for sym files 2024-11-04 10:31:30 +00:00
.gitignore gitignore: ignore gnuplot files 2018-05-10 16:25:40 +10:00
.gitlab-ci.yml CI: run marge-bot pipelines as priority:high 2025-05-23 10:16:08 +02:00
.pre-commit-config.yaml pre-commit: add a hook for checking for duplicate empty lines 2025-03-11 11:41:34 +00:00
.triage-policies.yml triage-policies: update to handle a few more things in MRs as well 2025-02-03 09:16:02 +10:00
.vimdir Add .vimdir for libinput-specific settings 2015-05-25 09:17:29 +10:00
CODING_STYLE.md Drop the Signed-off-by requirement 2023-07-21 09:08:46 +10:00
CONTRIBUTING.md CONTRIBUTING: Add CONTRIBUTING.md 2024-02-28 17:07:45 +01:00
COPYING Change various references to the master branch to main 2021-04-29 01:31:03 +00:00
meson.build Add an internal plugin system to libinput 2025-06-18 06:18:53 +00:00
meson_options.txt meson: add option for internal event debugging 2025-03-13 06:13:38 +00:00
README.md Change various references to the master branch to main 2021-04-29 01:31:03 +00:00

libinput

libinput is a library that provides a full input stack for display servers and other applications that need to handle input devices provided by the kernel.

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

User documentation

Documentation explaining features available in libinput is available here.

This includes the FAQ and the instructions on reporting bugs.

Source code

The source code of libinput can be found at: https://gitlab.freedesktop.org/libinput/libinput

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

Build instructions: https://wayland.freedesktop.org/libinput/doc/latest/building.html

Reporting Bugs

Bugs can be filed on freedesktop.org GitLab: https://gitlab.freedesktop.org/libinput/libinput/issues/

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

See https://wayland.freedesktop.org/libinput/doc/latest/reporting-bugs.html 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.

About

Documentation generated from git commit GIT_VERSION