Timo Aaltonen pushed to branch upstream-unstable at X Strike Force / lib / libinput
Commits:
-
029959c9
by Alyssa Ross at 2020-10-07T08:14:04+10:00
-
768880d7
by Peter Hutterer at 2020-10-07T08:14:08+10:00
-
2e5e74c0
by Peter Hutterer at 2020-10-07T08:14:15+10:00
-
c856f26d
by Peter Hutterer at 2020-10-07T08:14:21+10:00
-
dcf05cd7
by Kai-Chuan Hsieh at 2020-10-07T08:15:08+10:00
-
c6ab679f
by Davide Depau at 2020-10-07T08:15:14+10:00
-
2b632541
by Peter Hutterer at 2020-10-07T09:49:56+10:00
-
4cfe13df
by Peter Hutterer at 2020-10-07T10:19:41+10:00
10 changed files:
- .gitlab-ci.yml
- .gitlab-ci/config.yml
- doc/user/touchpad-jumping-cursors.rst
- meson.build
- quirks/30-vendor-alps.quirks
- quirks/50-system-apple.quirks
- quirks/50-system-google.quirks
- src/evdev-fallback.h
- src/evdev-mt-touchpad.c
- tools/libinput-replay
Changes:
... | ... | @@ -202,17 +202,6 @@ fedora:32@qemu-prep: |
202 | 202 |
FDO_DISTRIBUTION_PACKAGES: $FEDORA_QEMU_RPMS
|
203 | 203 |
allow_failure: true
|
204 | 204 |
|
205 |
-fedora:30@container-prep:
|
|
206 |
- extends:
|
|
207 |
- - .fdo.container-build@fedora
|
|
208 |
- - .policy
|
|
209 |
- stage: prep
|
|
210 |
- variables:
|
|
211 |
- GIT_STRATEGY: none
|
|
212 |
- FDO_DISTRIBUTION_VERSION: '30'
|
|
213 |
- FDO_DISTRIBUTION_PACKAGES: $FEDORA_PACKAGES
|
|
214 |
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
|
|
215 |
- |
|
216 | 205 |
fedora:31@container-prep:
|
217 | 206 |
extends:
|
218 | 207 |
- .fdo.container-build@fedora
|
... | ... | @@ -355,16 +344,6 @@ freebsd:11.2@container-prep: |
355 | 344 |
only:
|
356 | 345 |
- schedules
|
357 | 346 |
|
358 |
-fedora:30@container-clean:
|
|
359 |
- extends:
|
|
360 |
- - .container-clean
|
|
361 |
- variables:
|
|
362 |
- GIT_STRATEGY: none
|
|
363 |
- FEDORA_VERSION: '30'
|
|
364 |
- CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
|
|
365 |
- FDO_DISTRIBUTION_VERSION: '30'
|
|
366 |
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
|
|
367 |
- |
|
368 | 347 |
fedora:31@container-clean:
|
369 | 348 |
extends:
|
370 | 349 |
- .container-clean
|
... | ... | @@ -807,18 +786,6 @@ coverity: |
807 | 786 |
# #
|
808 | 787 |
#################################################################
|
809 | 788 |
|
810 |
-fedora:30@default-build:
|
|
811 |
- stage: distro
|
|
812 |
- extends:
|
|
813 |
- - .build@template
|
|
814 |
- - .fdo.distribution-image@fedora
|
|
815 |
- variables:
|
|
816 |
- FDO_DISTRIBUTION_VERSION: '30'
|
|
817 |
- FDO_DISTRIBUTION_TAG: $FEDORA_TAG
|
|
818 |
- needs:
|
|
819 |
- - "fedora:30@container-prep"
|
|
820 |
- |
|
821 |
- |
|
822 | 789 |
fedora:31@default-build:
|
823 | 790 |
stage: distro
|
824 | 791 |
extends:
|
... | ... | @@ -9,7 +9,6 @@ distributions: |
9 | 9 |
- name: fedora
|
10 | 10 |
tag: *default_tag
|
11 | 11 |
versions:
|
12 |
- - '30'
|
|
13 | 12 |
- '31'
|
14 | 13 |
- '32'
|
15 | 14 |
want_qemu: true
|
... | ... | @@ -64,3 +64,17 @@ See :ref:`reporting_bugs` for more details. |
64 | 64 |
Note that it most cases, libinput cannot actually fix the issue. Filing a
|
65 | 65 |
bug is useful to figure out if there are other factors at play or whether
|
66 | 66 |
there are heuristics we can employ to reduce the impact.
|
67 |
+ |
|
68 |
+------------------------------------------------------------------------------
|
|
69 |
+AlpsPS/2 ALPS DualPoint TouchPad jumping to 4095/0
|
|
70 |
+------------------------------------------------------------------------------
|
|
71 |
+ |
|
72 |
+A special case of pointer jumps happens on ``AlpsPS/2 ALPS DualPoint TouchPad``
|
|
73 |
+devices found in the Lenovo ThinkPad E465 and E550 and likely others with
|
|
74 |
+the same touchpad hardware. On those devices, the touchpad occasionally
|
|
75 |
+sends an event for the second finger to move to position 4095/0 before
|
|
76 |
+moving back to the original position. libinput detects this movement and
|
|
77 |
+removes it but depending on the interaction this may cause a smaller jump
|
|
78 |
+later when the coordinates reset to the new position of the finger.
|
|
79 |
+ |
|
80 |
+Some more information is available in `Gitlab Issue #492 <https://gitlab.freedesktop.org/libinput/libinput/-/issues/492>`__.
|
1 | 1 |
project('libinput', 'c',
|
2 |
- version : '1.16.1',
|
|
2 |
+ version : '1.16.2',
|
|
3 | 3 |
license : 'MIT/Expat',
|
4 | 4 |
default_options : [ 'c_std=gnu99', 'warning_level=2' ],
|
5 | 5 |
meson_version : '>= 0.45.0')
|
... | ... | @@ -19,6 +19,12 @@ MatchVendor=0x0002 |
19 | 19 |
MatchProduct=0x0008
|
20 | 20 |
ModelALPSSerialTouchpad=1
|
21 | 21 |
|
22 |
+[ALPS i2c Touchpads]
|
|
23 |
+MatchUdevType=touchpad
|
|
24 |
+MatchBus=i2c
|
|
25 |
+MatchVendor=0x0488
|
|
26 |
+AttrPalmPressureThreshold=180
|
|
27 |
+ |
|
22 | 28 |
[ALPS v8 Touchpads]
|
23 | 29 |
MatchUdevType=touchpad
|
24 | 30 |
MatchBus=ps2
|
... | ... | @@ -57,7 +57,8 @@ MatchProduct=0x0265 |
57 | 57 |
AttrSizeHint=162x115
|
58 | 58 |
AttrTouchSizeRange=20:10
|
59 | 59 |
AttrPalmSizeThreshold=900
|
60 |
-AttrThumbSizeThreshold=700
|
|
60 |
+AttrThumbSizeThreshold=800
|
|
61 |
+AttrPalmPressureThreshold=190
|
|
61 | 62 |
|
62 | 63 |
[Apple Magic Trackpad v2 (new vendor ID)]
|
63 | 64 |
MatchVendor=0x004C
|
... | ... | @@ -65,7 +66,8 @@ MatchProduct=0x0265 |
65 | 66 |
AttrSizeHint=162x115
|
66 | 67 |
AttrTouchSizeRange=20:10
|
67 | 68 |
AttrPalmSizeThreshold=900
|
68 |
-AttrThumbSizeThreshold=700
|
|
69 |
+AttrThumbSizeThreshold=800
|
|
70 |
+AttrPalmPressureThreshold=190
|
|
69 | 71 |
|
70 | 72 |
[Apple Touchpad OneButton]
|
71 | 73 |
MatchUdevType=touchpad
|
... | ... | @@ -86,3 +86,11 @@ MatchUdevType=touchpad |
86 | 86 |
MatchName=Atmel maXTouch Touchpad
|
87 | 87 |
MatchDMIModalias=dmi:*svn*GOOGLE*:pn*Samus*
|
88 | 88 |
ModelChromebook=1
|
89 |
+ |
|
90 |
+[Google Chromebook Eve]
|
|
91 |
+MatchUdevType=touchpad
|
|
92 |
+MatchName=ACPI0C50:00 18D1:5028
|
|
93 |
+MatchDMIModalias=dmi:*svnGoogle:pnEve*
|
|
94 |
+ModelChromebook=1
|
|
95 |
+AttrPressureRange=6:4
|
|
96 |
+AttrThumbPressureThreshold=45
|
... | ... | @@ -194,7 +194,7 @@ get_key_type(uint16_t code) |
194 | 194 |
return KEY_TYPE_KEY;
|
195 | 195 |
if (code >= BTN_DPAD_UP && code <= BTN_DPAD_RIGHT)
|
196 | 196 |
return KEY_TYPE_BUTTON;
|
197 |
- if (code >= KEY_ALS_TOGGLE && code <= KEY_ONSCREEN_KEYBOARD)
|
|
197 |
+ if (code >= KEY_ALS_TOGGLE && code < BTN_TRIGGER_HAPPY)
|
|
198 | 198 |
return KEY_TYPE_KEY;
|
199 | 199 |
if (code >= BTN_TRIGGER_HAPPY && code <= BTN_TRIGGER_HAPPY40)
|
200 | 200 |
return KEY_TYPE_BUTTON;
|
... | ... | @@ -1542,6 +1542,19 @@ tp_detect_jumps(const struct tp_dispatch *tp, |
1542 | 1542 |
abs_distance = hypot(mm.x, mm.y) * reference_interval/tdelta;
|
1543 | 1543 |
rel_distance = abs_distance - t->jumps.last_delta_mm;
|
1544 | 1544 |
|
1545 |
+ /* Special case for the ALPS devices in the Lenovo ThinkPad E465,
|
|
1546 |
+ * E550. These devices send occasional 4095/0 events on two fingers
|
|
1547 |
+ * before snapping back to the correct position.
|
|
1548 |
+ * https://gitlab.freedesktop.org/libinput/libinput/-/issues/492
|
|
1549 |
+ * The specific values are hardcoded here, if this ever happens on
|
|
1550 |
+ * any other device we can make it absmax/absmin instead.
|
|
1551 |
+ */
|
|
1552 |
+ if (tp->device->model_flags & EVDEV_MODEL_ALPS_SERIAL_TOUCHPAD &&
|
|
1553 |
+ t->point.x == 4095 && t->point.y == 0) {
|
|
1554 |
+ t->point = last->point;
|
|
1555 |
+ return true;
|
|
1556 |
+ }
|
|
1557 |
+ |
|
1545 | 1558 |
/* Cursor jump if:
|
1546 | 1559 |
* - current single-event delta is >20mm, or
|
1547 | 1560 |
* - we increased the delta by over 7mm within a 12ms frame.
|
... | ... | @@ -218,7 +218,12 @@ def create_device_quirk(device): |
218 | 218 |
def setup_quirks(recording):
|
219 | 219 |
devices = fetch(recording, 'devices')
|
220 | 220 |
overrides = None
|
221 |
- quirks = [create_device_quirk(d) for d in devices if 'quirks' in d]
|
|
221 |
+ quirks = []
|
|
222 |
+ for d in devices:
|
|
223 |
+ if 'quirks' in d:
|
|
224 |
+ quirk = create_device_quirk(d)
|
|
225 |
+ if quirk:
|
|
226 |
+ quirks.append(quirk)
|
|
222 | 227 |
if not quirks:
|
223 | 228 |
return None
|
224 | 229 |
|