Find a file
Peter Hutterer 4d317eae17 plugin: reset the filtered frame after sending it with buttons
Our filtered frame (frame without any button events) that gets passed
down to here may include relative motion or other events. Once we use
that frame to prepend the button event we need to reset it so we don't
cause duplicate motion and/or events with zero delta timestamps.

With the the previous code we got two identical frames:

  42: event25: plugin button-debounce        - 0.360 EV_MSC           MSC_SCAN               30
  ... event25: plugin button-debounce        - 0.360 EV_KEY           BTN_RIGHT               1
  ... event25: plugin button-debounce        - 0.360 EV_REL           REL_X                  -7
  ... event25: plugin button-debounce        - 0.360 EV_REL           REL_Y                  -7
  ... event25: plugin button-debounce        - 0.360 ----------------- EV_SYN ----------------- +8ms
  ... Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
  ... Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
  ... event25: plugin evdev                  - 0.360 EV_MSC           MSC_SCAN               30
  ... event25: plugin evdev                  - 0.360 EV_REL           REL_X                  -7
  ... event25: plugin evdev                  - 0.360 EV_REL           REL_Y                  -7
  ... event25: plugin evdev                  - 0.360 EV_KEY           BTN_RIGHT               1
  ... event25: plugin evdev                  - 0.360 ----------------- EV_SYN ----------------- +0ms
  ... Queuing  event25  POINTER_MOTION               +0.000s	-7.00/ -7.00 ( -7.00/ -7.00)
  ... event25 - middlebutton state: MIDDLEBUTTON_IDLE → MIDDLEBUTTON_EVENT_R_DOWN → MIDDLEBUTTON_RIGHT_DOWN, rc 1
  ... event25: plugin evdev                  - 0.360 EV_MSC           MSC_SCAN               30
  ... event25: plugin evdev                  - 0.360 EV_REL           REL_X                  -7
  ... event25: plugin evdev                  - 0.360 EV_REL           REL_Y                  -7
  ... event25: plugin evdev                  - 0.360 EV_KEY           BTN_RIGHT               1
  ... event25: plugin evdev                  - 0.360 ----------------- EV_SYN ----------------- +0ms
  ... Queuing  event25  POINTER_MOTION               +0.000s	 -nan/  -nan ( -7.00/ -7.00)
 event25  POINTER_MOTION               +0.360s	-7.00/ -7.00 ( -7.00/ -7.00)
 event25  POINTER_MOTION            2  +0.360s	 -nan/  -nan ( -7.00/ -7.00)

The 0ms delta caused a -nan in the custom pointer accel but even without
that bug the pointer would've jumped more than it should.

Closes #1172

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1301>
2025-08-20 07:49:01 +00:00
.gitlab/issue_templates gitlab: make the bug template the default template 2023-11-23 09:53:09 +10:00
.gitlab-ci CI: change the wayland-web job to use rules 2025-08-08 09:18:22 +00:00
completion/zsh Add a public plugin system to libinput 2025-08-01 15:38:39 +10:00
doc doc/user: fixes and a TOC for the Configuration Options page 2025-08-12 15:20:12 +00:00
include Remove trailing whitespaces in the tree 2022-11-25 10:08:20 +10:00
plugins lua: implement support for disabling of features 2025-08-07 10:23:30 +10:00
quirks quirks: Ignore BTN_0 for Microsoft Surface Keyboard 2025-08-08 00:39:06 +01:00
src plugin: reset the filtered frame after sending it with buttons 2025-08-20 07:49:01 +00:00
test lua: implement support for disabling of features 2025-08-07 10:23:30 +10:00
tools replay: use the runtime quirks for our replay quirks 2025-08-12 07:58:07 +00:00
udev meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
.clang-format clang-format: add litest_with_logcapture to foreach macros 2025-08-01 04:02:56 +00:00
.clang-format-ignore Add a clang-format file for consistent code formatting 2025-07-01 16:42:44 +10:00
.clang-tidy clang-tidy: fix WarningAsErrors option to actually work 2025-08-11 15:27:35 +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
.git-blame-ignore-revs git: add git-blame-ignore-revs to ignore the clang-format commits 2025-07-02 12:43:13 +10:00
.gitignore gitignore: ignore gnuplot files 2018-05-10 16:25:40 +10:00
.gitlab-ci.yml CI: change the wayland-web job to use rules 2025-08-08 09:18:22 +00:00
.pre-commit-config.yaml pre-commit: update the name for the ruff check 2025-07-15 16:24:27 +10: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 lua: drop compatibility to 5.1 to allow for luajit 2025-08-01 16:49:00 +10:00
meson_options.txt lua: drop compatibility to 5.1 to allow for luajit 2025-08-01 16:49:00 +10: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