Commit graph

4717 commits

Author SHA1 Message Date
Benjamin Tissoires
bafffb7ecb CI: remove unused test
I am pretty sure this one guard is a leftover from a previous version.
That is because use_for_custom_build_tests is true when
use_for_qemu_tests is, so probably a useless test here.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2022-09-01 09:39:12 +10:00
Benjamin Tissoires
553092ea93 CI: make freebsd slightly more in line with others
the combination of want_qemu and skip_container is not very straight
forward.

What we actually have, is that freebsd is only qemu based, so there is
no point in really having a `_QEMU` tag for it.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2022-09-01 09:39:02 +10:00
Benjamin Tissoires
0d602e12a4 CI: remove one occurrence of fedora instead of distro.name
For .{{distro.name}}-build@template, everything is parametrized with the
distro name, so having plain 'fedora' might bite us in the future.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2022-09-01 09:38:49 +10:00
Benjamin Tissoires
c8c825289f CI: prettify the include of templates
Makes the resulting file easier to read

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2022-09-01 09:38:46 +10:00
Peter Hutterer
6c2e98e40d gitlab-ci: add commandline options to the meson-build.sh script
The various --skip-build, --skip-test and --skip-setup skip the
respective step, the --run-test argument runs the test even where
MESON_TEST_ARGS is nil.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-31 16:01:26 +10:00
Peter Hutterer
30776d670b gitlab-ci: explicitly call "meson setup" to improve readability
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-31 15:41:35 +10:00
Peter Hutterer
4177093d49 gitlab-ci: export MESON_TESTTHREADS so meson actually sees it
Unlike NINJA_ARGS this isn't passed into meson, it's picked from the
env.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-31 15:37:37 +10:00
Peter Hutterer
c16844d1b2 evdev: remove duplicate "device is a switch" message
We log this a few lines south of here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-23 13:23:37 +10:00
Leonard Lausen
6efc4aa05c quirks: add generic quirks for ARM based chromebooks
Signed-off-by: Leonard Lausen <leonard@lausen.nl>
2022-08-22 00:48:18 +00:00
Leonard Lausen
62f8b53316 quirks: add quirks for Acer Spin 513 (Lazor)
Signed-off-by: Leonard Lausen <leonard@lausen.nl>
2022-08-15 16:22:28 +00:00
Peter Hutterer
507b0a38b3 tools: add missing dwtp option setting
Fixes 1f1ddbc6df

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-08 13:57:13 +10:00
Peter Hutterer
45db4ceb49 gitlab ci: drop EOL'd ubuntu 21.10
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-08-03 13:43:32 +10:00
Boris Pek
187ec90bb2 quirks: update quirks for Lenovo IdeaPad Duet 3
My tablet has substring pvrIdeaPadDuet310IGL5-LTE in modalias and there are
other modifications of this model on a market so the mask for DMI should be
simplified to cover more devices.

Signed-off-by: Boris Pek <bpek@astralinux.ru>
2022-07-18 11:06:22 +03:00
Peter Hutterer
91610165d9 doc/user: minor rewording of the pointer accel profile list
This just makes it easier to add new profiles to the list without ending
up with a word salad.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-07-15 10:47:13 +10:00
José Expósito
71f79b9de1 libwacom: fix warnings building without libwacom
When the libwacom build option is set to false the compiler throws
these warnings:

../udev/libinput-device-group.c:95:1: warning: ‘wacom_handle_ekr’ defined but not used [-Wunused-function]
   95 | wacom_handle_ekr(struct udev_device *device,
      | ^~~~~~~~~~~~~~~~
[205/237] Compiling C object 'libinput-test-suite@exe/test_test-tablet.c.o'.
../test/test-tablet.c:5440:1: warning: ‘verify_left_handed_touch_sequence’ defined but not used [-Wunused-function]
 5440 | verify_left_handed_touch_sequence(struct litest_device *finger,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../test/test-tablet.c:5385:1: warning: ‘verify_left_handed_tablet_sequence’ defined but not used [-Wunused-function]
 5385 | verify_left_handed_tablet_sequence(struct litest_device *tablet,
 #     | ^~~~~~~~~~~~~~~~
 #     | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Add the required guards to fix the warnings.

Fix #791.

Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2022-07-12 19:44:59 +02:00
Peter Hutterer
368b12ad45 evdev: fix a tab vs space indentation issue
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-07-12 10:00:24 +00:00
illiliti
05501cd34f meson: use install_emptydir to create directory
instead of install_subdir. Fixes muon - a strictly-conforming meson
implementation which doesn't implement deprecated and broken-by-design
functionality.

For more info, see: https://mesonbuild.com/Reference-manual_functions.html#install_subdir

Signed-off-by: illiliti <illiliti@protonmail.com>
2022-07-12 00:05:06 +00:00
Maximilian Luz
238a56eb7c quirks: Add quirks to improve tablet-mode on the Surface Laptop Studio
The Microsoft Surface Laptop Studio can operate in multiple postures. In
one of these, dubbed "slate/tent", the screen is angled roughly 45°,
covering the keyboard but not the touchpad. Unfortunately, this state is
(as far as we can tell) indiscernible to the display being flipped 180°
backwards (dubbed "slate/flipped"), where the keyboard points away from
the user and is now behind the screen.

Due to this, it makes sense to enable tablet-mode in this (general)
"slate" state, which is what the corresponding kernel driver currently
does. This, for example, can tell desktop environments to bring up a
touch keyboard in certain situations and to allow for automatic screen
rotation (which is required in the "flipped" mode).

Unfortunately, libinput disables all integrated peripherals, including
the touchpad, when tablet-mode is on, rendering the touchpad unusable in
the "slate/tent" state. Therefore, set ModelTabletModeNoSuspend=1 to
keep the touchpad functional. For simplicity, apply this quirk to all
input devices on the Surface Laptop Studio. Those are already disabled
by firmware in the respective postures, meaning things work well without
suspension by libinput.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
2022-07-10 18:25:22 +00:00
Maximilian Luz
ad95d68f47 quirks: Add quirks for Surface Laptop Studio touchpad
The touchpad on the Microsoft Surface Laptop Studio is force-sensitive.
The default values used by libinput do not seem to work well (causing
touches to not be recognized), so configure it with known-good values.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
2022-07-10 18:25:22 +00:00
Max Huber
d137c41319 quirks: add volume rocker quirk for Lenovo IdeaPad Duet 3i
Signed-off-by: Max Huber <ycbcr@disroot.org>
2022-07-10 15:22:24 +02:00
Dale A. Jackson
a2dc175c19
quirks: add Lenovo Legion 7 keyboard
Fixes disable-when-typing for the keyboard model on this laptop

Signed-off-by: Dale A. Jackson <JacksonWrath@gmail.com>
2022-07-01 10:26:44 -07:00
Peter Hutterer
3475850084 CODING_STYLE: update with a better description for variable assignments
Loop variables shouldn't be re-used.

Avoid uninitialized variables

Sort variables to make function calls more obvious

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-29 14:37:58 +10:00
Peter Hutterer
68f39925ed gitlab CI: dnf remove gtk4-devel for the no-debug-gui deps job
We've long preferred GTK4 and that's installed on our images, so let's
make sure that gets removed together with GTK3 (which isn't actually
installed anyway).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-28 23:09:53 +00:00
Peter Hutterer
1f505ce2e9 meson.build: fix build without Wayland
Introduced in 6a1bd5b0c9, we now have two potentially undeclared
variables if GTK is available but doesn't have Wayland support.

../meson.build:576:1: ERROR: Unknown variable "dep_wayland_client".

Fixes 6a1bd5b0c9
Fixes #786

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-28 23:09:53 +00:00
satrmb
4a202a95c0 test: exclude the two high-delay debounce tests from the valgrind CI run
The `debounce_bounce_high_delay` and `debounce_spurious_trigger_high_delay`
tests are failing with annoying frequency in valgrind, but that is
entirely due to valgrind being too slow for the tight timing reqirements
of these tests. Skipping them in valgrind has next to no potential to hide
memory leaks because the code paths leading to success are also covered by
other tests which are less picky about timing, and the CI test suite run
without valgrind still tests for their success.

Signed-off-by: satrmb <10471-satrmb@users.noreply.gitlab.freedesktop.org>
2022-06-28 13:22:25 +02:00
Peter Hutterer
6569938b1a meson.build: drop listing of header files from compilation targets
"Meson uses Ninja which uses compiler dependency information to
automatically figure out dependencies between C sources and headers, so
it will rebuild things correctly when a header changes. [...]
If, for whatever reason, you do add non-generated headers to the sources
list of a target, Meson will simply ignore them."

https://mesonbuild.com/FAQ.html#do-i-need-to-add-my-headers-to-the-sources-list-like-in-autotools

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-16 08:28:53 +10:00
Peter Hutterer
2d3eee76ad gitlab CI: drop the manual meson to junit conversion
Meson supports this natively since version 0.55 which is available in
all our tested distributions.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-14 13:11:14 +10:00
José Expósito
bc363328a7 libinput 1.21.0
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2022-06-11 13:47:52 +02:00
Peter Hutterer
7888ef2787 gitlab CI: bump to F35 and F36, as well as Ubuntu 21.10 and 22.04
F33 and F34 are both EOL. This also fixes the RPM build job to
automatically use the latest Fedora version and adds
wayland-protocols-devel which is now needed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-11 10:54:15 +00:00
Peter Hutterer
6a1bd5b0c9 meson.build: check gtk targets before building
We have two different dependencies on Wayland: GTK support and the
wayland-protocols we use directly. If we have GTK support but
wayland-protocols is not installed at meson configure time, our build
fails.

To avoid having multiple ifdefs in the code, let's define two new ones:
HAVE_GTK_WAYLAND and HAVE_GTK_X11, both set if GTK supports that
particular target (from pkgconfig) and we have the other support
libraries we need.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-11 10:54:15 +00:00
Peter Hutterer
3542023996 test: fix a typo
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-08 09:25:59 +10:00
Peter Hutterer
d833f265c0 test: use a ranged test instead of a duplicated one
These two tests were identical except for the WHEEL/HWHEEL
differentiator, let's make this into a ranged test instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-08 09:25:02 +10:00
José Expósito
4ae72b6eb2 wheel: fix Lenovo Scrollpoint quirk
The IBM/Lenovo Scrollpoint mouse features a trackpoint-like stick that
sends a great amount of scroll deltas.

In order to handle the device, a quirk is in place to normalize the
scroll events as they were relative motion.

However, when high-resolution scroll was implemented, we started
normalizing the hi-res events instead of the lo-res events by mistake.

Fix the quirk by normalizing the right deltas.

Fixes: 6bb02aaf30 ("High-resolution scroll wheel support")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Tested-by: Peter Ganzhorn <peter.ganzhorn@gmail.com>
2022-06-07 19:55:42 +02:00
Peter Hutterer
7688f35477 test: ensure we always have an axis event where we expect one
If we never got an event, we'd skip over the while loop and generate a
false positive.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-07 12:42:50 +10:00
Peter Hutterer
164227d193 test: fix the lowres-only wheel event tests
These tests gave us false positives for devices without a REL_WHEEL or
REL_HWHEEL because one of the helper functions papered over missing
events.

We have two tests here, one for horizontal, one for vertical but they
mixed WHEEL and HWHEEL in both tests. Fix this by splitting them
properly, so each test only checks that axis.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-06-07 12:42:50 +10:00
satrmb
92233df57b filter-touchpad: normalize for dpi on the touchpad-specific flat profile
On mice, switching the acceleration profile to flat disables dpi normalization,
because high or even switchable dpi are generally major features of a
high-end mouse, and switching to flat acceleration indicates that the user
wants to reduce the effects of any cursor acceleration to a minimum.
Therefore we skip normalization there and let the user take full advantage
of their expensive hardware.

On touchpads, particularly those built into a laptop, users have to deal with
whatever hardware they have; touchpad dpi is an afterthought at best, or
a disaster at worst. Switching to the flat profile is more likely to be
about avoiding the non-linear acceleration curve of the adaptive profile.

Hence the flat profile for touchpads shouldn't copy what the one for mice does,
but rather use dpi normalization like the adaptive profile. This keeps flat
acceleration on low-resolution touchpads from dropping to unusably slow speeds.

Signed-off-by: satrmb <10471-satrmb@users.noreply.gitlab.freedesktop.org>
2022-05-29 12:50:37 +02:00
Peter Hutterer
bfbcf1737b tablet: require a minimum pressure before we process pressure events
Tools default to 1% lower threshold (tip up) and 5% upper threshold (tip
down). But our distance vs pressure exclusion would reset the distance
for *any* pressure value, regardless how low that value was and how high
distance was in comparison.

A very low pressure value of less than 1% would then result in a
normalized pressure of 0, so we'd effectively just reset the distance to
zero and do nothing with the pressure. This can cause distance jumps
when the tool arbitrarily sends low pressure values while hovering as
seen in https://github.com/libsdl-org/SDL/pull/5481#issuecomment-1118969064

Commit 61bdc05fb0 from Dec 2017
  "tablet: set the tip-up pressure threshold to 1%"
was presumably to address this but no longer (?) works.

Fix this by addressing multiple issues at the same time:
- anything under that 1% threshold is now considered as zero pressure
  and any distance value is kept as-is. Once pressure reaches 1%,
  distance is always zero.
- axis normalization is now from 1% to 100% (previously: upper threshold
  to 100%). So a tip down event should always have ~4% pressure and we
  may get tablet motion events with nonzero pressure before the tip down
  event.
  From memory, this was always intended anyway since a tip event should
  require some significant pressure, maybe too high compared to e.g.
  pressure-sensitive painting
- where a tablet has an offset, add the same 1%/5% thresholds, on top of
  that offset. And keep adjusting those thresholds as we change the
  offset. Assuming that the offset is the absolute minimum a worn-out
  pen can reach, this gives us the same behaviour as a new pen. The
  calculation here uses a simple approach so the actual range is
  slightly larger than 5% but it'll do.

  Previously, the lower threshold for an offset pen was the axis minimum
  but that can never be reached. So there was probably an undiscovered
  bug in there.

And fix a bunch of comments that were either wrong, confusing or
incomplete, e.g. the pressure thresholds were already in device
coordinates.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-23 05:43:18 +00:00
Peter Hutterer
988329d5d9 tablet: use a helper variable to make the code more readable
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-23 05:43:18 +00:00
Peter Hutterer
393442fd3a test: rename a test function to make it easier to select
Because --filter-test does substring matching it's easier to have it
with a unique name rather than one that is a prefix of another.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-23 05:43:18 +00:00
Peter Hutterer
374d32c6be tablet: remove an always-true part of an if condition
A few lines north of here we return early if neither bit is set. If we
get to this point, at least one bit is set so this part of the condition
always evaluates to true.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-23 05:43:18 +00:00
José Expósito
a9e6cd03d0 Remove "device-" file
The file was unintentional added in a merge request:
https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/771

Fixes: 4d26736e ("Quirk all StarLabs trackpads")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2022-05-18 23:17:35 +02:00
Sean Rhodes
4d26736e20 Quirk all StarLabs trackpads
Quirk all the StarLabs trackpads as they are all the same design,
a clickpad with physical buttons that act as one button.

Fixes #771.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
2022-05-16 05:10:10 +00:00
Peter Hutterer
e0e0e3aa8f quirks: remove an unused quirk
Removed in b925a0878b
   quirks: switch the models with missing buttonpad to use the new attr

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-16 12:24:16 +10:00
Peter Hutterer
8cb2b47b7b quirks: move the canvas quirk enum to the right order
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-16 12:23:57 +10:00
Sean Rhodes
a6fa862c00 quirks: Add quirk for StarLite Mk IV
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
2022-05-09 18:26:05 +02:00
Peter Hutterer
5dd751a3d0 test: install libinput-test-utils as part of install-tests
This tests a bunch of internal utility functions that may work
differently depending on compiler flags, etc. Let's make that test
available so it can be verified on an installed system.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-09 05:03:00 +00:00
Peter Hutterer
43a8d769ac tools: add a libinput test tool as entry point for our test suites
We already install libinput-test-suite if the meson option install-tests
is set, see
  commit be7045cdc7
  test: make the test suite runner available as installed binary

To make other tests easily available and more discoverable, add a new
tool "libinput test" with the matching man page. This will also help us
to enforce some of the namespacing a bit better.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-09 05:03:00 +00:00
Peter Hutterer
d48c7e72f7 tools/analyze-recording: improve the repeated-events line printing
When redirecting to a file, we don't want lines like this:
   .. +2 ... +5 ... +9

Let's not print anything until we have collected all those lines and
then print the final result, we don't need a live update here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-06 14:25:50 +10:00
Peter Hutterer
4ac5fd9e24 tools/analyze-recording: add --print-state to always print values
Helpful in comparing values that update frequently - without this the
last printed value may be way off the page when some other value comes
in that it needs to be compared to.

Values not seen yet default to zero - we can't query those from a
recording but it'll be good enough this way.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-06 14:05:13 +10:00
Peter Hutterer
200bc920ac tools/record: fix indentation for libinput events
Commit 0cdf459643
  tools/record: get rid of indent push/pop, replace with fixed indents

Introduced some magic to detect if there's a '-' at the start of the
format string to fix the identation. This only works if the format
string is constant though, leading to an indentation error when record
is run with --with-libinput.

Fixes 0cdf459643

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2022-05-06 14:04:59 +10:00