Commit graph

4947 commits

Author SHA1 Message Date
José Expósito
7ac26ed9c2 CONTRIBUTING: Add CONTRIBUTING.md
Add a very basic CONTRIBUTING.md file with a link to the documentation.

Closes: #974
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/978>
2024-02-28 17:07:45 +01:00
José Expósito
b5b825a7c3 doc/user: Document "Closes" and "Fixes" tags
Describe how the tags should be used. The guidelines for the "Fixes"
tag are taken from the Linux kernel documentation [1][2].

[1] https://www.kernel.org/doc/html/v4.17/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes
[2] https://www.kernel.org/doc/html/v4.17/process/submitting-patches.html#describe-changes

Closes: #974
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/978>
2024-02-28 16:59:58 +01:00
Peter Hutterer
399ba5e0ee CI: only check the MR if we're in a merge request pipeline 2024-02-28 18:53:25 +10:00
Joshua Goins
beca998122 tablet: add API for relative dials
Some tablets such as those in the XP-PEN PRO series use "dials" which
are actually scrollwheels and emit EV_REL events. These should not be
emulated as rings (which are absolute) so we must expose them as a new
tablet event.

Adds LIBINPUT_EVENT_TABLET_PAD_DIAL that work largely identical as our
high-resolution wheel events (i.e. the values are in multiples or
fractions of of 120). Currently supports two dials.

This is a lot of copy/paste from the ring axes because the interface is
virtually identical. The main difference is that dials give us a v120
value in the same manner as our scroll axes.

Notes:
- REL_DIAL is mutually exclusive with REL_WHEEL, we assume the kernel
  doesn't (at this point) give us devices with both. If this changes for
  devices with three dials (wheel + hwheel + dial) we need to add code
  for that.
- REL_DIAL does not have a high-resolution axis and we assume that any
  device with REL_WHEEL_HI_RES will also have REL_HWHEEL_HI_RES (if the
  second wheel exists).
- With dials being REL_DIAL or REL_WHEEL there is no possibility of
  detecting a finger release (the kernel does not route EV_RELs with a
  value of zero). Unless this is implemented via a side-channel - and it
  doesn't look like any hardware that supports dials does that - we
  cannot forward any information here. So unlike absolute rings we
  cannot provide a source information here.

Closes #600

Co-authored-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/967>
2024-02-20 02:49:05 +00:00
Peter Hutterer
d487ca36a4 test: only expect one button event from the intuos-like test
BTN_0 is the only one guaranteed to exist (otherwise we skip the test)
so let's ensure we have at least one event - all the others will fail if
we don't get the right event sent.

This enables the test to run against devices that only have one button.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/967>
2024-02-20 02:49:05 +00:00
Josip Medved
566857bd98 Recognizing Framework 16 keyboard modules as internal keyboards 2024-02-19 03:20:32 +00:00
Peter Hutterer
0d7b281f49 doc: fix end-of-file in the state machine SVG
Picked up by the pre-commit hook
2024-02-19 12:21:16 +10:00
Peter Hutterer
18d1d4fd75 quirks: tighten the match for the Graviton N15i touchpad
Other systems use the same touchpad but without physical buttons (e.g.
SpeedMind M-BOOK) and obviously the various systems using the 5288
touchpad, see commit d1f274c7.

Let's tighten this quirk to just the Graviton only.

Closes #970
Fixes 8163b552be23ef3f4082775649bb12a3f6162df6
Related !957
2024-02-14 06:23:59 +00:00
Bogdan Mircea
83d780e572 Added quirks for TongFang/Uniwill touchpad and ITE keyboard 2024-02-12 11:04:59 +00:00
Peter Hutterer
f46d45a589 doc: drop permissions to 644 for the gesture state machine SVG
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2024-02-06 11:32:42 +10:00
Theluga
8b9328415e quirks: Add Lenovo's Ideapad Gaming 3 white backlit keyboard as an internal keyboard 2024-02-02 01:43:10 +00:00
Peter Hutterer
8079a51b7f doc/user: note the requirement to apply for gitlab fork permissions 2024-02-02 09:51:31 +10:00
Peter Hutterer
049beea4c5 triage-policies: add a bugbot command to close issue in favour of an MR 2024-02-02 09:51:31 +10:00
Hooloovoo Blue
1788d3523f Update 50-system-lenovo.quirks to fix X201t tablet buttons 2024-02-01 04:25:09 +00:00
Peter Hutterer
4bc27543e9 tablet: add tablet tool pressure range configuration
Add a configuration option to reduce the available hardware range to a
fraction thereof. This is done by copying the absinfo struct for the
pressure value and adjusting that copy's minimum/maximum value for
scaling into the target normalized range.

The 1%/5% tip thresholds are kept but pressure offset detection is
disabled if there is a custom pressure range.

Unlike the pressure curve which is implemented in the compositor, the
pressure min/max range needs to be in libinput, primarily because the
tip threshold needs to adjust to any new minimum, allowing for
light touches with a pen without triggering tip down even at a higher
hardware pressure.
2024-01-30 14:29:25 +10:00
Peter Hutterer
47f0bce7ec tablet: document a known bug about pressure thresholds across tablets 2024-01-30 14:29:25 +10:00
Peter Hutterer
54aa01a267 tablet: move tool creation into a helper function 2024-01-30 14:29:25 +10:00
Peter Hutterer
7cffd28e8f tablet: don't use absinfo_range for the percentage calculation
Our percents are inclusive 0% and 100%.
2024-01-30 14:29:25 +10:00
Peter Hutterer
0322403ea4 tablet: fix tilt handling for even-ranged tablets
The tablet tilt range may be set as [-N, M] in which case we assume that
a value of zero is vertical (and thus should result in a libinput tilt
value of zero). Unfortunately some tablets report an even total value
range, e.g. [-64, 63] so zero is not actually the mathematical center of
the axis.

Fix this by bumping the axis maximum so zero becomes the logical center.
All devices we've seen so far have [-A, (A-1)] as range so bumping it by
one makes it symmetric.
2024-01-30 14:29:25 +10:00
Peter Hutterer
72eca2db56 util: add a helper to normalize an axis to [0.0, 1.0]
Like the input axis, a normalized range has min/max inclusive so we
cannot use the absinfo_range() helper which assumes the max is exclusive.

Reverts parts of 4effe6b1b9
2024-01-30 14:29:25 +10:00
Peter Hutterer
f20eefbc59 Revert "tablet: fix the pressure offset range being off by one"
Fixing the range is only required when the output range is not inclusive
of the min/max (such as when mapping an abs axis to a screen width).

Our pressure range is inclusive 0.0 and 1.0, so we want absinfo->maximum
to map to exactly 1.0

This reverts commit a5b6f4009b.
2024-01-30 14:29:25 +10:00
Peter Hutterer
8bb53150a9 tablet: handle BTN_STYLUS3
And add a test to make sure the tool we know that has three buttons (Pro
Pen 3) can send all those. Enough to run that test one one compatible
device, no real benefit of running it on all tablet devices.
2024-01-24 12:34:25 +10:00
Peter Hutterer
2218da2f31 test: fix a wrong value for the auto-assigned BTN_TOOL
This was actually passed through:
  litest debug event19 - 0.000 EV_KEY           BTN_TOOL_PEN         -2147483648
2024-01-22 01:21:29 +00:00
Peter Hutterer
8603584e33 test: set pressure to zero on proxout for the tablets with forced prox out
If a test goes past the tip-down threshold, the proximity timeout does
not trigger. And one can spend a long time trying to debug why the test
fails...

As far as I vaguely remember, these devices' pressure values are correct
enough, it's just the lack of BTN_TOOL_PEN that is the issue so instead
of a proper proximity out, we just send enough data to set the pressure
to below the tip threshold.
2024-01-22 01:21:29 +00:00
Peter Hutterer
c5f808ac2e test: debug print the events we're draining 2024-01-22 01:21:29 +00:00
Peter Hutterer
cf1c07e066 Add a helper for radians to degrees 2024-01-16 19:49:02 +10:00
José Expósito
3fd38d8927 libinput 1.25.0
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2024-01-15 09:53:20 +01:00
Peter Hutterer
11a7de7640 evdev: default tablets to allow for rotation
If libwacom is disabled or there is no .tablet file in libwacom for this
device yet, default to enabling a left-handed setting. Otherwise the
tablet may not be usable.

See https://github.com/linuxwacom/libwacom/issues/616
2024-01-03 12:20:16 +10:00
Peter Hutterer
d5ff9d75a8 triage-policies: emphasize that recordings must be attached 2024-01-03 08:40:17 +10:00
Aiden
5abe45cd49 Add Lenovo ThinkPad E14 Quirk 2023-12-24 13:50:33 -05:00
Peter Hutterer
19446a029b fallback: add messages for touch arbitration debugging 2023-12-19 04:26:50 +00:00
Peter Hutterer
c22ee58b4c triage-policies: add bugbot labels for requesting hid-recorder output
And libinput record too while we're at it.
2023-12-19 10:15:04 +10:00
Airat Makhmutov
106b61e216 quirks: touchpad quirk for Graviton N15i-K2
The generic quirk introduced in commit d1f274c7 ("quirks: add a
more generic match for the 5288 Synaptics clickpad") affects the
touchpad (with physical buttons) present in the Graviton N15i-K2.
2023-11-29 12:17:47 +00:00
Peter Hutterer
b600cc35c5 gitlab: make the bug template the default template
This way users who don't know gitlab much but are most likely reporting
a bug get to use this template and anyone else can remove the
boilerplate and be more free-form and/or prosaic.
2023-11-23 09:53:09 +10:00
José Expósito
9b964ae5da quirks: rename 50-framework.quirks
Follow the same naming used by other quirks.

Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2023-11-17 06:18:52 +00:00
José Expósito
d253165d7c quirks: disable button debouncing for the QEMU/KVM mouse integration
When using a touchpad to double click on a QEMU/KVM virtual machine,
fast double taps are filtered by our debouncing code.

Since these are emulated devices and by definition cannot have a stuck
button, let's tag them so we don't enable the debouncing code.
If the button of the physical device is stuck, that's a problem that
needs to be fixed in the host system.

The same device name and broken behavior was found in GNOME Boxes and
Virtual Machine Manager.

Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2023-11-16 23:07:32 +00:00
Benjamin Tissoires
ec0421d0ad CI: bump vm2c and kernel for VMs
Actually libinput is one of the last users of harbor.fd.o, because it uses
an outdated version of vm2c.py. Use the new location of the project,
bump its release, and also bump the kernel version we test while at it.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2023-11-16 14:25:10 +00:00
Peter Hutterer
e29a00d657 quirks: don't disable the keyboard on the Dell Latitude 7275
Fixes #950
2023-11-16 09:46:32 +10:00
Peter Hutterer
0e564f0857 quirks: disable button debouncing for the VirtualBox mouse integration
Fixes #158
2023-11-16 09:46:31 +10:00
Miroslav Jarý
da557f99cb Add quirk for Lenovo LOQ 15IRH8 2023-11-09 16:46:34 +00:00
José Expósito
802b0e14d0 doc/user: add FAQ about scroll speed
This question showed up in my email and it has been asked in the issue
tracker a few times. Explaining why libinput is not the right place to
implement it for future reference.

Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2023-11-07 09:50:29 +01:00
Czcibor Bohusz-Dobosz
713892c162 Number the fingers by slot in debug-gui 2023-10-16 04:31:17 +00:00
Rajas Paranjpe
686ec27ba3 quirks: disable Chromebook Redrix AttrPalmPressureThreshold
This device doesn't need libinput's palm detection, see
https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/939
2023-10-12 05:33:48 +00:00
Peter Hutterer
98c689ebb2 quirks: add quirks for RazerBlade162023 and RazerBlade182023
Autogenerated from our razer-quirks-lister.py tool
2023-10-09 20:15:10 +10:00
Peter Hutterer
fe3ae87b09 touchpad: allow a palm pressure threshold of 0 to disable
Where a more generic match assigns a palm threshold to a device, allow
unsetting this by assigning a threshold of zero.

And remove the bug log for palm size threshold of 0 for the same reason.
2023-10-09 07:03:47 +00:00
Peter Hutterer
ba32f0818f test: group the test devices and sort them
Group the LITEST_FOO enum into sections for touchpads, mice, etc. This
makes it easier to find whether a particular device may have a
representation already.
2023-10-09 07:03:47 +00:00
lilly-lizard
31062d6e53 removed thinkpad 13 gen 2 trackpoint pre-multiply quirk
Signed-off-by: Lilly Lizard <bigbanana29@aol.com>
2023-10-07 21:49:44 +00:00
Peter Hutterer
e9e3d2140a zsh: fix completion
Was missing a backslash

Fixes #941
2023-10-05 18:37:32 +10:00
Peter Hutterer
4b03374d50 doc/user: update the udev rule to handle bind/unbind events (part 2)
Summary: we expect add, change or remove but kernel 4.12 added bind and
unbind. These events were previously discarded by udevd. Our rules should
handle any event *but* remove, so update as suggested in the announce email
linked below.

For a longer explanation, see the system 247rc2 announcement
https://lists.freedesktop.org/archives/systemd-devel/2020-November/045570.html

See cd37dcfa66 where we did this already
for the udev rules we use ourselves and
a88d107c0d for the patch where we already
updated parts of the docs.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2023-09-28 08:57:15 +10:00
Vadim Yanitskiy
769cb992cc quirks: match 'ITE Device(8910)' keyboard by USB VID/PID
This allows the "Disable while typing" feature to work properly for:

  048d:c102 Integrated Technology Express, Inc. ITE Device(8910)

This keyboard was found in the following Lenovo laptops:

* Legion 5 Pro 16ARH7H
* Legion 5 15ARH7H

The quirk for 16ARH7H was added in 94c785a2 (see #933), however
matching by DMI does not work for 15ARH7H, so let's match by
USB VID/PID instead.

https://gitlab.freedesktop.org/libinput/libinput/-/issues/933#note_2099049
2023-09-25 19:40:26 +07:00