Peter Hutterer
2dcfda2ebc
util: add ANSI escape codes for rgb and background rgb
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1226 >
2025-06-17 13:50:58 +10:00
Peter Hutterer
1850ea18f4
util: add safe_atou64 for 64-bit values
...
Copy/paste from safe_atou
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1226 >
2025-06-17 13:50:58 +10:00
Peter Hutterer
9f6b294e36
test: print the log message to a buffer, then print the whole lot
...
This reduces the number of actual printf calls to one and makes it
easier to search for a string in the message for highlighting.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1226 >
2025-06-17 13:50:57 +10:00
Peter Hutterer
76f88deb24
touchpad: remove a workaround for an old libevdev bug
...
Require libevdev 1.9, released in 2020.
Reverts commit 1e1b9c0e60 ("touchpad: never reduce the slot count to 0")
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1224 >
2025-06-16 17:11:14 +10:00
Peter Hutterer
d67474645c
doc/user: device quirk matches have to be 0x prefixed
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1223 >
2025-06-16 06:39:25 +00:00
Sebastian Lövdahl
17a7ed54d7
Fix typos in index.rst
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1222 >
2025-06-13 17:28:05 +00:00
Peter Hutterer
ef15d7ed08
test: fix the valgrind/debugger check
...
First condition was always false since we never run gdb and valgrind at
the same time.
Fixes: bd7b91065b ("evdev: warn if our event processing lags by 10ms or more")
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1221 >
2025-06-13 09:39:11 +10:00
Peter Hutterer
24c84a65b4
test: insert libinput_dispatch() on the secondary context to avoid timeouts
...
In these tests we have a secondary context but didn't call
libinput_dispatch() regularly so we're guaranteed to hit timeout errors
on the secondary context for any event sequence longer than e.g. our
hold gesture timeout.
litest_touch_move_to() waits 10ms between movements and calls
libinput_dispatch() but obviously not for the secondary context so we
need to do this manually.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1221 >
2025-06-13 09:39:11 +10:00
Peter Hutterer
5d23794d53
tablet: disable smoothing for uinput devices
...
When a tablet was created via uinput we trust that the
tablet's events are preprocessed to the point where we
no longer need to apply smoothing to the axes.
Closes #1120
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1219 >
2025-06-12 09:49:15 +00:00
José Expósito
3b52569864
quirks: add Contour Design RollerMouse USB Receiver
...
The Contour RollerMouse have a button for "double click" which emulates
a double click.
The two clicks are so close together that libinput triggers the
debouncing functionality.
Adds the ModelBouncingKeys quirk for the USB receiver.
Closes: https://gitlab.freedesktop.org/libinput/libinput/-/issues/1138
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1220 >
2025-06-12 08:58:05 +00:00
Peter Hutterer
c4d0d2c09d
Switch some uint32_t usage loops to use evdev_usage_next
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
1c5715fedf
Use a newtype for the keycode, button code and pad button
...
This provides both some type-safety but also better readability of what
the integer we're passing around is supposed to be. In particular the
pad buttons are numeric buttons while the normal buttons are evdev
codes.
Future extension of this could be to also check for (or against) the
valid BTN_* ranges for a button code or keycode.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
c821bbd8e4
Drop struct input-event from dispatch->interface->process
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
28ee82b6f1
Switch the tablet pad backend to use struct evdev_event
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
4eb8ccb10d
Switch the totem backend to struct evdev_event
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
56bad53f29
Switch the tablet backend to use struct evdev_event
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
4be243d0e7
Switch the fallback and touchpad backends to use struct evdev_event
...
These two use enough shared functions that they cannot be switched
separatly.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
41e988c99e
Introduce our own evdev_event struct
...
In addition to the evdev_frame this struct is what contains our actual
events instead of a struct input_event. The goal of this is twofold:
slightly better memory usage per frame since we can skip the timestamp
and refer to the evdev frame's timestamp only. This also improves
handling a frame since we no longer need to care about updating
all events when the timestamp changes during appending events.
Secondly it merges the evdev type + code into a single "usage"
(term obviously and shamelessly stolen from HID). Those usages
are the same as the code names but with an extra EVDEV_ prepended,
i.e. EV_SYN / SYN_REPORT becomes EVDEV_SYN_REPORT.
And they are wrapped in a newtype so passing it around provides
some typesafety.
This only switches one part of the processing over, the dispatch
interfaces still use a struct input_event
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
540605f8e4
evdev: use frame-based dispatching of events
...
Accumulate evdev events until we get a SYN_REPORT, then dispatch all
of those as a single event frame. This currently has little functional
change because we then just loop through the events anyway so it's just
an extra layer of indirection.
The size of the frame is hardcoded because we should never get anywhere
near than 64 events within any one evdev frame anyway (even 5 fingers
down with 10 properties for each touch point only get up to ~60 events
within one frame (5 * 10 + ~10 for the single-touch bits).
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Peter Hutterer
9f00f77bc4
Add an evdev_frame wrapper struct
...
The kernel only ever gives us a frame of events in one go (it flushes on
SYN_REPORT). We then need to look at that frame as a single state change
(keyboards excepted for historical reasons) so let's push this into a
proper struct we can pass around.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1215 >
2025-06-12 18:20:40 +10:00
Ryan Hendrickson
548279abee
tools: store virtual property in recordings
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1213 >
2025-06-08 23:55:10 +00:00
Ryan Hendrickson
8a95c0e3c8
wheel: add and use ignore_small_hi_res_movements
...
ignore_small_hi_res_movements is set to true if the underlying device is
not virtual.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1213 >
2025-06-08 23:55:10 +00:00
Ryan Hendrickson
efb4b6a3be
evdev: detect virtual devices
...
The quirk AttrIsVirtual takes precedence, if present. If not, use the
syspath of the event device to detect if it is virtual, as long as we
aren't running the test suite. (Test suite devices are all virtual, but
we should test them as if they aren't.)
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1213 >
2025-06-08 23:55:10 +00:00
Peter Hutterer
49eb6cb8ab
Move the log #defines and declarations to a separate header
...
Makes them easier to re-use as API
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1216 >
2025-06-06 13:11:34 +10:00
Peter Hutterer
d9d4d92ff0
Move libinput_now() to our timer.c helper functions
...
This is just general cleanup so libinput_now() is easier to use without
needing to include libinput-private.h (which itself opens up most of
libinput's internals).
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1216 >
2025-06-06 13:11:32 +10:00
Peter Hutterer
5774463dde
tablet: shut up deprecated declarations warnings
...
No need to see those every time, #1137 now tracks this
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1214 >
2025-06-06 11:00:04 +10:00
Peter Hutterer
46950de903
util: return early when listing files from a NULL directory list
...
For consistency with "no matching file found" return a single-null-entry
array.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1212 >
2025-06-05 00:49:57 +00:00
Peter Hutterer
d5761547da
test: add litest_log_group() for easier test log grouping
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1210 >
2025-06-04 04:07:26 +00:00
Peter Hutterer
669bc620aa
test: add helpers for private data handling in tests
...
Our litest context needs the libinput user_data but it does provide
a `private` pointer for our test data - let's reduce the boilerplate
to access that.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1211 >
2025-06-03 09:32:42 +00:00
Peter Hutterer
ec9c39da18
util: add a number of list helpers
...
The list_debug function is ifdef'd out, it'll be useful to debug
whenever we have some list corruption.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1209 >
2025-06-03 09:10:15 +00:00
Peter Hutterer
57a0a219b0
evdev: Handle MSC_SERIAL better in the event log print
...
Print it as hex and align it better in the output
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1208 >
2025-06-03 08:55:24 +00:00
Yang Kun
8fe6cc9396
quirks: modify touchpad quirk for ThinkBook G7+
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1206 >
2025-06-01 19:02:38 +08:00
Peter Hutterer
ea50e1a92c
test: add litest_assert_str_in/not_in() helpers
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
14c4667980
test: add litest_assert_not_reached()
...
Simpler than a specific litest_abort_msg() everywhere
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
e91e1c3111
util: add a tmpdir helper
...
With the __attribute__(cleanup) helper this makes it simple
enough to provide a tempdir inside a function that is (recursively)
automatically deleted when the variable is deleted.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
91d4f9e58e
util: add an rmdir_r helper function
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
efea8463fe
util: add a helper to find files in a set of directories
...
Returns a number of paths for files with a given suffix in a
priority-sorted list of directories.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
95a417cefa
util: add a helper to find substrings in a strv
...
Returns true and optionally the first index of any string in strv that
contains the given substring.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
6f28664854
util: move zalloc to util-mem.h
...
zalloc pre-dates util-mem.h but let's move it there, it makes more sense
than including util-strings.h.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
15b4ea59e9
test: improve an error message for an unlikely error
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Peter Hutterer
d5cd398b77
test: improve an error message for unhandled parameter types
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1204 >
2025-05-26 05:22:33 +00:00
Benjamin Tissoires
c4b8cb6423
CI: run marge-bot pipelines as priority:high
...
The workflows.rules is copied from mesa/mesa.
When marge is running the CI, we can assign it to a higher priority
queue, allowing non marge jobs to be run after.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1205 >
2025-05-23 10:16:08 +02:00
Peter Hutterer
87e13ebb8b
CI: bump to use Fedora 42
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1199 >
2025-05-19 09:41:08 +10:00
Peter Hutterer
66d32803d3
meson.build: don't error on deprecated declarations with -Werror
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1203 >
2025-05-16 20:45:49 +10:00
Peter Hutterer
f653ce0a22
Fix links to point to the current doc pages
...
The underscored page names date back to doxygen and have been obsolete
for many years now.
Closes #1123
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1202 >
2025-05-16 05:45:51 +00:00
Benjamin Tissoires
7915921a3c
CI: replace b2c with virtme-ng
...
vng is much faster than b2c for spinning up the jobs, so better use this
instead.
Bonus point: we don't need the start-in-systemd.sh stunt.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1125 >
2025-05-14 18:22:32 +02:00
Peter Hutterer
0e67cdc4ed
gestures: rewrite the gesture state transition debugging code
...
Fixes a spurious compiler error in release builds:
cc -Ilibinput-plugin-test-suite.p -I. -I.. -I../src -I../include -I/usr/include/libevdev-1.0 -I/usr/include/libwacom-1.0 -I/usr/include/gudev-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu99 -O3 -Wno-unused-parameter -Wmissing-prototypes -Wstrict-prototypes -Wundef -Wlogical-op -Wpointer-arith -Wuninitialized -Winit-self -Wstrict-prototypes -Wimplicit-fallthrough -Wredundant-decls -Wincompatible-pointer-types -Wformat=2 -Wno-missing-field-initializers -Wmissing-declarations -fvisibility=hidden -Werror -pthread -MD -MQ libinput-plugin-test-suite.p/src_evdev-mt-touchpad-gestures.c.o -MF libinput-plugin-test-suite.p/src_evdev-mt-touchpad-gestures.c.o.d -o libinput-plugin-test-suite.p/src_evdev-mt-touchpad-gestures.c.o -c ../src/evdev-mt-touchpad-gestures.c
../src/evdev-mt-touchpad-gestures.c: In function ‘tp_gesture_handle_state’:
../src/evdev-mt-touchpad-gestures.c:1814:69: error: ‘%s’ directive argument is null [-Werror=format-truncation=]
1814 | int n = snprintf(&buf[slen], remaining, " → %s", gesture_state_to_str(*s));
| ^~
Apparently because gesture_state_to_str() may return null (this cannot
happen in our code) it fails with an error here. So let's rewrite it to
use our strv helpers.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1201 >
2025-05-11 23:51:10 +00:00
Peter Hutterer
97a7ab7f9d
CI: bump to Ubuntu 25.04
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1200 >
2025-05-09 17:34:52 +10:00
Peter Hutterer
40bbf8cff6
CI: update to latest ci-templates
...
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1200 >
2025-05-09 16:39:23 +10:00
Peter Hutterer
8177a685c2
meson.build: fix detection of C23 auto
...
Sadly, this detection was broken because in C everything defaults to
type int. Casting a const char* to int is permitted but generates a
warning which was promptly ignored by meson.
This result in HAVE_C23_AUTO being set on compilers that don't by
default have -Werror=implicit-int and "auto" ended up being just an
"int".
Change the detection to use gmtime() which returns a struct, and add a
basic test using one of our struct-returning utility functions, just to
be sure.
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1198 >
2025-05-08 23:06:58 +00:00