Compare commits

...

20 commits
main ... 1.17.3

Author SHA1 Message Date
Peter Hutterer
4a4c30f546 libinput 1.17.3
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-05-26 12:16:52 +10:00
dan g
57ad6e5994 quirks: add palm rejection support for all Razer Blade models
Generated with a script to scrape the openrazer project for Razer Blade
internal keyboard VIDs, see `razer_quirk_util.py` [1]

This allows us to potentially bulk-add all Razer Blade models to benefit from
palm rejection, rather than processing individual requests and merges.

[1] https://gist.github.com/danryu/ee0c24ac50af40321550462bbf9ab594

Signed-off-by: dan g <dan.garton@gmail.com>
(cherry picked from commit 3dcfae3fb6)
2021-05-24 14:35:49 +10:00
Peter Hutterer
9b4f50472f gitlab CI: bump from Fedora 32 to 34
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 5a6f141bd8)
2021-05-24 14:35:19 +10:00
Hans Gaiser
54451cb7a0 Add quirk for Lenovo Legion 5 Pro.
Signed-off-by: Hans Gaiser <hansg91@gmail.com>
(cherry picked from commit b1f958a178)
2021-05-24 14:35:11 +10:00
Peter Hutterer
f42b8dd1ae libinput 1.17.2
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-04-30 13:52:07 +10:00
Udo Rader
4813e63f79 quirks: add quirk for Lenovo Yoga Slim 9 Touchpad
This touchpad is a pressure pad and needs the pressure
handling disabled.

Fixes #604

Signed-off-by: Udo Rader <udo.rader@bestsolution.at>
(cherry picked from commit 144f5ed93d)
2021-04-29 10:59:06 +10:00
Peter Hutterer
26c65758e9 quirks: add palm size quirk for the Gigabyte Aero 15
Fixes #599

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 10124797b5)
2021-04-29 10:59:04 +10:00
Chris Dickson
a3103ded82 quirks: mark the 0x252 razer keyboard as internal
Signed-off-by: Chris Dickson <hobochili@pm.me>
(cherry picked from commit 9ce8d561c1)
2021-04-29 10:58:50 +10:00
Peter Hutterer
b8d79df696 evdev: don't truncate event time to 32 bits
This causes a bunch of "your system is too slow" messages in e.g. the various
gesture tests.

Fixes 95a72990
Fixes #601

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 04dc67e092)
2021-04-29 10:58:44 +10:00
Peter Hutterer
eea702e30a evdev: don't check the event time if it's higher than the dispatch time
The dispatch time is taken during libinput_dispatch(), i.e. at the beginning
of an event sequence. We always read all events off the device, so where
events come in while we're inside the main dispatch loop, our event time may
be later than the saved dispatch_time. This causes an uint underflow and our
tdelta > 10 will be true for that case.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 95a72990ad)
2021-04-29 10:58:43 +10:00
Jonas Ådahl
0cfe00f493 tablet-pad-leds: Open led file with O_NONBLOCK | O_CLOEXEC
We don't want the file to be left open after any fork/exec, and we don't
want the read to be blocking; so open it as such.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
(cherry picked from commit f723b28220)
2021-04-29 10:58:24 +10:00
Ben Weston
0d3d885a1a quirk: fix sensitivity for Dell Latitude 7490 pointing-stick
Signed-off-by: Ben Weston <b.weston60@gmail.com>
(cherry picked from commit 74f6821d7a)
2021-04-29 10:58:13 +10:00
Peter Hutterer
6df5169229 libinput 1.17.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-03-24 14:46:08 +10:00
Greg V
4f2f1d29ec quirks: add wildcard to HID-over-I2C names (for FreeBSD)
The FreeBSD HID stack adds the device type to the evdev name,
so we get e.g. "ACPI0C50:00 18D1:5028 TouchPad".

(Maybe this shouldn't be matched by name at all though...)

Signed-off-by: Greg V <greg@unrelenting.technology>
(cherry picked from commit 06697b5e85)
2021-03-24 14:45:24 +10:00
Greg V
4c1862c1e4 quirks: implement DMI support on FreeBSD
FreeBSD does not use Linux modaliases, so we have to generate these strings.
Unfortunately for us, the data in kenv has the chassis type pre-parsed into
a nice string, so we have to match these strings back into numbers.
Only relevant types are included to avoid bloating the code.

Signed-off-by: Greg V <greg@unrelenting.technology>
(cherry picked from commit 6941f74070)
2021-03-24 14:45:18 +10:00
Greg V
a49826a7a8 quirks: add quirks for Apple SPI input devices
The Linux applespi driver currently uses the Synaptics vendor ID
on the trackpad for some reason (even though, at least from bcm5974
we only know that Broadcom is involved..) but my upcoming FreeBSD driver
uses the Apple vendor ID everywhere, so add two quirks.

Signed-off-by: Greg V <greg@unrelenting.technology>
(cherry picked from commit d8b1a773e3)
2021-03-24 14:45:17 +10:00
Greg V
f905054b5b quirks: recognize SPI bus
Apple MacBooks (Broadwell/Skylake/Kaby Lake and Apple Silicon)
use SPI to communicate with the keyboard and trackpad.

Signed-off-by: Greg V <greg@unrelenting.technology>
(cherry picked from commit 5f00c32d9e)
2021-03-24 14:45:16 +10:00
Peter Hutterer
b8f90d074e doc/user: explain why we are doing motion normalization
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 2f8dab4537)
2021-03-24 14:44:47 +10:00
Peter Hutterer
7624497df5 completion: add missing libinput analyze subtools to the zsh completions
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 40b83b1105)
2021-03-24 14:44:31 +10:00
Pedro Ribeiro
1ca2f11524 Add Lenovo Legion 5 keyboard to 50-system-lenovo.quirks
Signed-off-by: Pedro Ribeiro <pedrib@gmail.com>
(cherry picked from commit 5e69c5f9ae)
2021-03-24 14:44:29 +10:00
16 changed files with 420 additions and 91 deletions

View file

@ -92,13 +92,13 @@ variables:
# changing these will force rebuilding the associated image
# Note: these tags have no meaning and are not tied to a particular
# libinput version
FEDORA_TAG: '2021-01-04.1'
DEBIAN_TAG: '2021-01-04.1'
UBUNTU_TAG: '2021-01-04.1'
ARCH_TAG: '2021-01-04.1'
ALPINE_TAG: '2021-01-04.1'
FREEBSD_TAG: '2021-01-04.1'
QEMU_TAG: 'qemu-vm-2021-01-04.1'
FEDORA_TAG: '2021-05-12.0'
DEBIAN_TAG: '2021-05-12.0'
UBUNTU_TAG: '2021-05-12.0'
ARCH_TAG: '2021-05-12.0'
ALPINE_TAG: '2021-05-12.0'
FREEBSD_TAG: '2021-05-12.0'
QEMU_TAG: 'qemu-vm-2021-05-12.0'
FREEBSD_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/freebsd/11.2:$FREEBSD_TAG
FDO_UPSTREAM_REPO: libinput/libinput
@ -179,7 +179,7 @@ check-commit:
# Note: images are rebuilt weekly with a scheduled pipeline with FDO_FORCE_REBUILD set
#
#
fedora:33@qemu-prep:
fedora:34@qemu-prep:
extends:
- .fdo.qemu-build@fedora
- .policy
@ -188,21 +188,10 @@ fedora:33@qemu-prep:
- kvm
variables:
GIT_STRATEGY: none
FDO_DISTRIBUTION_VERSION: 33
FDO_DISTRIBUTION_VERSION: 34
FDO_DISTRIBUTION_TAG: $QEMU_TAG
FDO_DISTRIBUTION_PACKAGES: $FEDORA_PACKAGES
fedora:32@container-prep:
extends:
- .fdo.container-build@fedora
- .policy
stage: prep
variables:
GIT_STRATEGY: none
FDO_DISTRIBUTION_VERSION: '32'
FDO_DISTRIBUTION_PACKAGES: $FEDORA_PACKAGES
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
fedora:33@container-prep:
extends:
- .fdo.container-build@fedora
@ -214,6 +203,17 @@ fedora:33@container-prep:
FDO_DISTRIBUTION_PACKAGES: $FEDORA_PACKAGES
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
fedora:34@container-prep:
extends:
- .fdo.container-build@fedora
- .policy
stage: prep
variables:
GIT_STRATEGY: none
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_PACKAGES: $FEDORA_PACKAGES
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
debian:stable@container-prep:
extends:
- .fdo.container-build@debian
@ -353,15 +353,6 @@ freebsd:11.2@container-prep:
only:
- schedules
fedora:32@container-clean:
extends:
- .container-clean
variables:
GIT_STRATEGY: none
CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
FDO_DISTRIBUTION_VERSION: '32'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
fedora:33@container-clean:
extends:
- .container-clean
@ -371,6 +362,15 @@ fedora:33@container-clean:
FDO_DISTRIBUTION_VERSION: '33'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
fedora:34@container-clean:
extends:
- .container-clean
variables:
GIT_STRATEGY: none
CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
debian:stable@container-clean:
extends:
- .container-clean
@ -510,19 +510,19 @@ freebsd:11.2@container-clean:
when: script_failure
.fedora:33@test-suite-vm:
.fedora:34@test-suite-vm:
extends:
- .test-suite-vm
variables:
FDO_DISTRIBUTION_VERSION: 33
FDO_DISTRIBUTION_VERSION: 34
FDO_DISTRIBUTION_TAG: $QEMU_TAG
needs:
- "fedora:33@qemu-prep"
- "fedora:34@qemu-prep"
vm-touchpad:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'touchpad'
@ -535,7 +535,7 @@ vm-touchpad-no-libwacom:
vm-tap:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'touchpad-tap'
@ -548,7 +548,7 @@ vm-tap-no-libwacom:
vm-touchpad-buttons:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'touchpad-buttons'
@ -561,7 +561,7 @@ vm-touchpad-buttons-no-libwacom:
vm-tablet:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'tablet'
@ -574,7 +574,7 @@ vm-tablet-no-libwacom:
vm-gestures-device:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'gestures device'
@ -587,7 +587,7 @@ vm-gestures-device-no-libwacom:
vm-backends:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'path udev'
@ -600,7 +600,7 @@ vm-backends-no-libwacom:
vm-misc:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'log misc quirks'
@ -613,7 +613,7 @@ vm-misc-no-libwacom:
vm-other devices:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'keyboard pad switch trackball trackpoint totem touch'
@ -626,7 +626,7 @@ vm-other devices-no-libwacom:
vm-pointer:
extends:
- .fedora:33@test-suite-vm
- .fedora:34@test-suite-vm
variables:
SUITE_NAMES: 'pointer'
@ -707,12 +707,12 @@ vm-valgrind-pointer:
- .fdo.distribution-image@fedora
- .build@template
variables:
FDO_DISTRIBUTION_VERSION: '33'
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
needs:
- "fedora:33@container-prep"
- "fedora:34@container-prep"
default-build-release@fedora:33:
default-build-release@fedora:34:
stage: distro
extends:
- .fedora-build@template
@ -720,7 +720,7 @@ default-build-release@fedora:33:
MESON_ARGS: "-Dbuildtype=release"
CFLAGS: "-Werror"
scan-build@fedora:33:
scan-build@fedora:34:
extends:
- .fedora-build@template
variables:
@ -739,13 +739,13 @@ scan-build@fedora:33:
# run them on one image, they shouldn't fail on one distro
# when they succeed on another.
build-no-libwacom@fedora:33:
build-no-libwacom@fedora:34:
extends:
- .fedora-build@template
variables:
MESON_ARGS: "-Dlibwacom=false"
build-no-libwacom-nodeps@fedora:33:
build-no-libwacom-nodeps@fedora:34:
extends:
- .fedora-build@template
variables:
@ -753,13 +753,13 @@ build-no-libwacom-nodeps@fedora:33:
before_script:
- dnf remove -y libwacom libwacom-devel
build-no-docs@fedora:33:
build-no-docs@fedora:34:
extends:
- .fedora-build@template
variables:
MESON_ARGS: "-Ddocumentation=false"
build-no-docs-nodeps@fedora:33:
build-no-docs-nodeps@fedora:34:
extends:
- .fedora-build@template
variables:
@ -767,13 +767,13 @@ build-no-docs-nodeps@fedora:33:
before_script:
- dnf remove -y doxygen graphviz
build-no-debuggui@fedora:33:
build-no-debuggui@fedora:34:
extends:
- .fedora-build@template
variables:
MESON_ARGS: "-Ddebug-gui=false"
build-no-debuggui-nodeps@fedora:33:
build-no-debuggui-nodeps@fedora:34:
extends:
- .fedora-build@template
variables:
@ -781,13 +781,13 @@ build-no-debuggui-nodeps@fedora:33:
before_script:
- dnf remove -y gtk3-devel
build-no-tests@fedora:33:
build-no-tests@fedora:34:
extends:
- .fedora-build@template
variables:
MESON_ARGS: "-Dtests=false"
build-no-tests-nodeps@fedora:33:
build-no-tests-nodeps@fedora:34:
extends:
- .fedora-build@template
variables:
@ -795,7 +795,7 @@ build-no-tests-nodeps@fedora:33:
before_script:
- dnf remove -y check-devel
valgrind@fedora:33:
valgrind@fedora:34:
extends:
- .fedora-build@template
variables:
@ -805,7 +805,7 @@ valgrind@fedora:33:
# Python checks, only run on Fedora
usr-bin-env-python@fedora:33:
usr-bin-env-python@fedora:34:
extends:
- .fedora-build@template
script:
@ -815,7 +815,7 @@ usr-bin-env-python@fedora:33:
/bin/false
fi
python-format@fedora:33:
python-format@fedora:34:
extends:
- .fedora-build@template
before_script:
@ -917,18 +917,6 @@ coverity:
# #
#################################################################
fedora:32@default-build:
stage: distro
extends:
- .build@template
- .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_VERSION: '32'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
needs:
- "fedora:32@container-prep"
fedora:33@default-build:
stage: distro
extends:
@ -941,6 +929,18 @@ fedora:33@default-build:
- "fedora:33@container-prep"
fedora:34@default-build:
stage: distro
extends:
- .build@template
- .fdo.distribution-image@fedora
variables:
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
needs:
- "fedora:34@container-prep"
debian:stable@default-build:
stage: distro
extends:
@ -1051,10 +1051,10 @@ build rpm:
- .policy
stage: deploy
variables:
FDO_DISTRIBUTION_VERSION: '32'
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
needs:
- "fedora:32@container-prep"
- "fedora:33@container-prep"
script:
- dnf install -y rpmdevtools jq
- meson "$MESON_BUILDDIR"

View file

@ -704,10 +704,10 @@ build rpm:
- .policy
stage: deploy
variables:
FDO_DISTRIBUTION_VERSION: '32'
FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: $FEDORA_TAG
needs:
- "fedora:32@container-prep"
- "fedora:33@container-prep"
script:
- dnf install -y rpmdevtools jq
- meson "$MESON_BUILDDIR"

View file

@ -3,14 +3,14 @@
#
# We're happy to rebuild all containers when one changes.
.default_tag: &default_tag '2021-01-04.1'
.default_tag: &default_tag '2021-05-12.0'
distributions:
- name: fedora
tag: *default_tag
versions:
- '32'
- '33'
- '34' # last is picked for qemu
want_qemu: true
use_for_custom_build_tests: true
packages:

View file

@ -163,12 +163,35 @@ __all_seats()
':device:_files -W /dev/input/ -P /dev/input/'
}
(( $+functions[_libinput_analyze_per-slot-delta] )) || _libinput_analyze_per-slot-delta()
{
_arguments \
'--help[Show help message and exit]' \
':recording:_files'
}
(( $+functions[_libinput_analyze_touch-down-state] )) || _libinput_analyze_touch-down-state()
{
_arguments \
'--help[Show help message and exit]' \
':recording:_files'
}
(( $+functions[_libinput_analyze_recording] )) || _libinput_analyze_recording()
{
_arguments \
'--help[Show help message and exit]' \
':recording:_files'
}
(( $+functions[_libinput_analyze] )) || _libinput_analyze()
{
local curcontext=$curcontext state line ret=1
local features
features=(
"per-slot-delta:analyze relative movement per touch per slot"
"recording:analyze a recording by printing a pretty table"
"touch-down-state:analyze a recording for logical touch down states"
)
_arguments -C \

View file

@ -27,6 +27,11 @@ libinput applies a dpi-dependent acceleration function. At low speeds, a
movement speed increases, acceleration is applied - at high speeds a low-dpi
device will roughly feel the same as a higher-dpi mouse.
The reason for the normalization is convenience: a caller can assume that a
delta of 1 should result in a movement of 1 pixel on a traditional
(low-dpi) screen. On screens with high resolutions, the caller must scale
according to the UI scale factors.
This normalization only applies to accelerated coordinates, unaccelerated
coordinates are left in device-units. It is up to the caller to interpret
those coordinates correctly.

View file

@ -1,5 +1,5 @@
project('libinput', 'c',
version : '1.17.0',
version : '1.17.3',
license : 'MIT/Expat',
default_options : [ 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.47.0')

View file

@ -1,20 +1,175 @@
# Do not edit this file, it will be overwritten on update
[Razer Blade Keyboard]
[Razer Blade Lid Switch]
MatchName=*Lid Switch*
MatchDMIModalias=dmi:*svnRazer:pnBlade*
AttrLidSwitchReliability=write_open
[RazerBladeStealth Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0205
AttrKeyboardIntegration=internal
[RazerBladeStealthLate2016 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0220
AttrKeyboardIntegration=internal
[Razer Blade Keyboard]
[RazerBladeProLate2016 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0210
AttrKeyboardIntegration=internal
[RazerBladeLate2016 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0224
AttrKeyboardIntegration=internal
[RazerBladeQHD Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x020F
AttrKeyboardIntegration=internal
[RazerBladeStealthMid2017 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x022D
AttrKeyboardIntegration=internal
[RazerBladePro2017 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0225
AttrKeyboardIntegration=internal
[RazerBladePro2017FullHD Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x022F
AttrKeyboardIntegration=internal
[RazerBladeStealthLate2017 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0232
AttrKeyboardIntegration=internal
[RazerBlade2018 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0233
AttrKeyboardIntegration=internal
[Razer Blade Lid Switch]
MatchName=*Lid Switch*
MatchDMIModalias=dmi:*svnRazer:pnBlade*
AttrLidSwitchReliability=write_open
[RazerBlade2018Mercury Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0240
AttrKeyboardIntegration=internal
[RazerBlade2018Base Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x023B
AttrKeyboardIntegration=internal
[RazerBladeStealth2019 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0239
AttrKeyboardIntegration=internal
[RazerBladeStealthLate2019 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x024A
AttrKeyboardIntegration=internal
[RazerBladeStealthEarly2020 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0252
AttrKeyboardIntegration=internal
[RazerBladeStealthLate2020 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0259
AttrKeyboardIntegration=internal
[RazerBlade2019Adv Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x023A
AttrKeyboardIntegration=internal
[RazerBladeMid2019Mercury Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0245
AttrKeyboardIntegration=internal
[RazerBlade2019Base Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0246
AttrKeyboardIntegration=internal
[RazerBladeEarly2020Base Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0255
AttrKeyboardIntegration=internal
[RazerBladeProLate2019 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x024C
AttrKeyboardIntegration=internal
[RazerBlade2019StudioEdition Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x024D
AttrKeyboardIntegration=internal
[RazerBladePro2019 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0234
AttrKeyboardIntegration=internal
[RazerBlade15Advanced2020 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x1532
MatchProduct=0x0253
AttrKeyboardIntegration=internal

View file

@ -27,6 +27,12 @@ AttrTouchSizeRange=150:130
MatchName=*Apple Inc. Apple Internal Keyboard*
AttrKeyboardIntegration=internal
[Apple Internal Keyboard (SPI)]
MatchUdevType=keyboard
MatchBus=spi
MatchVendor=0x5AC
AttrKeyboardIntegration=internal
# The Apple MagicMouse has a touchpad built-in but the kernel still
# emulates a full 2/3 button mouse for us. Ignore anything from the
# ABS interface
@ -89,3 +95,22 @@ MatchBus=usb
MatchVendor=0x5AC
MatchProduct=0x0262
AttrPalmSizeThreshold=1600
[Apple Laptop Touchpad (SPI)]
MatchUdevType=touchpad
MatchBus=spi
MatchVendor=0x5AC
ModelAppleTouchpad=1
AttrSizeHint=104x75
AttrTouchSizeRange=150:130
AttrPalmSizeThreshold=1600
# The Linux applespi driver currently uses the Synaptics vendor for some reason
[Apple Laptop Touchpad (SPI)]
MatchUdevType=touchpad
MatchBus=spi
MatchVendor=0x6CB
ModelAppleTouchpad=1
AttrSizeHint=104x75
AttrTouchSizeRange=150:130
AttrPalmSizeThreshold=1600

View file

@ -82,6 +82,12 @@ MatchName=*DualPoint Stick
MatchDMIModalias=dmi:*svnDellInc.:pnLatitudeE7470*
AttrTrackpointMultiplier=0.125
[Latitude 7490 Trackpoint]
MatchName=*Mouse
MatchUdevType=pointingstick
MatchDMIModalias=dmi:**bvnDellInc.:*:pnLatitude7490*
AttrTrackpointMultiplier=0.3
[Precision 7x50 Touchpad]
MatchBus=i2c
MatchUdevType=touchpad

View file

@ -0,0 +1,5 @@
[Gigabyte Aero 15 touchpad]
MatchUdevType=touchpad
MatchName=ETPS/2 Elantech Touchpad
MatchDMIModalias=dmi:*svnGIGABYTE:pnAERO15-XA*
AttrPalmSizeThreshold=800

View file

@ -89,7 +89,7 @@ ModelChromebook=1
[Google Chromebook Eve]
MatchUdevType=touchpad
MatchName=ACPI0C50:00 18D1:5028
MatchName=ACPI0C50:00 18D1:5028*
MatchDMIModalias=dmi:*svnGoogle:pnEve*
ModelChromebook=1
AttrPressureRange=6:4

View file

@ -22,7 +22,7 @@ ModelHPPavilionDM4Touchpad=1
# Touchpad is a clickpad but INPUT_PROP_BUTTONPAD is not set, see
# https://bugs.freedesktop.org/show_bug.cgi?id=97147
[HP Stream 11]
MatchName=SYN1EDE:00 06CB:7442
MatchName=SYN1EDE:00 06CB:7442*
MatchDMIModalias=dmi:*svnHewlett-Packard:pnHPStreamNotebookPC11*
AttrInputPropEnable=INPUT_PROP_BUTTONPAD

View file

@ -205,3 +205,36 @@ ModelTabletModeNoSuspend=1
MatchName=AT Raw Set 2 keyboard
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX1Tablet:*
ModelTabletModeNoSuspend=1
# Misidentified as an external keyboard by libinput
# Tested on Legion 5 15AR05H
[Lenovo Legion 5 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x048D
MatchProduct=0xC100
AttrKeyboardIntegration=internal
[Lenovo Legion 5 Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x048D
MatchProduct=0xC955
AttrKeyboardIntegration=internal
# Tested on Lenovo Legion 5 Pro 16ACH6H
[Lenovo Legion 5 Pro Keyboard]
MatchUdevType=keyboard
MatchBus=usb
MatchVendor=0x048D
MatchProduct=0xC101
AttrKeyboardIntegration=internal
# https://gitlab.freedesktop.org/libinput/libinput/-/issues/604
[Lenovo Yoga Slim 9 14ITL5 Pressurepad]
MatchBus=i2c
MatchVendor=0x27C6
MatchProduct=0x01E8
AttrEventCodeDisable=ABS_MT_PRESSURE;ABS_PRESSURE;

View file

@ -132,7 +132,7 @@ pad_led_new(struct libinput *libinput, const char *prefix, int group, int mode)
if (rc == -1)
goto error;
fd = open_restricted(libinput, path, O_RDONLY);
fd = open_restricted(libinput, path, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
if (fd < 0) {
errno = -fd;
goto error;

View file

@ -1024,6 +1024,7 @@ evdev_note_time_delay(struct evdev_device *device,
{
struct libinput *libinput = evdev_libinput_context(device);
uint32_t tdelta;
uint64_t eventtime = input_event_time(ev);
/* if we have a current libinput_dispatch() snapshot, compare our
* event time with the one from the snapshot. If we have more than
@ -1031,10 +1032,11 @@ evdev_note_time_delay(struct evdev_device *device,
* where there is no steady event flow and thus SYN_DROPPED may not
* get hit by the kernel despite us being too slow.
*/
if (libinput->dispatch_time == 0)
if (libinput->dispatch_time == 0 ||
eventtime > libinput->dispatch_time)
return;
tdelta = us2ms(libinput->dispatch_time - input_event_time(ev));
tdelta = us2ms(libinput->dispatch_time - eventtime);
if (tdelta > 10) {
evdev_log_bug_client_ratelimit(device,
&device->delay_warning_limit,

View file

@ -35,6 +35,9 @@
#include <dirent.h>
#include <fnmatch.h>
#include <libgen.h>
#ifdef __FreeBSD__
#include <kenv.h>
#endif
#include "libinput-versionsort.h"
#include "libinput-util.h"
@ -111,6 +114,7 @@ enum bustype {
BT_PS2,
BT_RMI,
BT_I2C,
BT_SPI,
};
enum udev_type {
@ -352,10 +356,11 @@ property_cleanup(struct property *p)
}
/**
* Return the dmi modalias from the udev device.
* Return the system DMI info in modalias format.
*/
#ifdef __linux__
static inline char *
init_dmi(void)
init_dmi_linux(void)
{
struct udev *udev;
struct udev_device *udev_device;
@ -363,9 +368,6 @@ init_dmi(void)
char *copy = NULL;
const char *syspath = "/sys/devices/virtual/dmi/id";
if (getenv("LIBINPUT_RUNNING_TEST_SUITE"))
return safe_strdup("dmi:");
udev = udev_new();
if (!udev)
return NULL;
@ -388,6 +390,73 @@ init_dmi(void)
return copy;
}
#endif
#ifdef __FreeBSD__
static inline char *
init_dmi_freebsd(void)
{
#define LEN (KENV_MVALLEN + 1)
char *modalias;
char bios_vendor[LEN], bios_version[LEN], bios_date[LEN];
char sys_vendor[LEN], product_name[LEN], product_version[LEN];
char board_vendor[LEN], board_name[LEN], board_version[LEN];
char chassis_vendor[LEN], chassis_type[LEN], chassis_version[LEN];
int chassis_type_num = 0x2;
kenv(KENV_GET, "smbios.bios.vendor", bios_vendor, LEN);
kenv(KENV_GET, "smbios.bios.version", bios_version, LEN);
kenv(KENV_GET, "smbios.bios.reldate", bios_date, LEN);
kenv(KENV_GET, "smbios.system.maker", sys_vendor, LEN);
kenv(KENV_GET, "smbios.system.product", product_name, LEN);
kenv(KENV_GET, "smbios.system.version", product_version, LEN);
kenv(KENV_GET, "smbios.planar.maker", board_vendor, LEN);
kenv(KENV_GET, "smbios.planar.product", board_name, LEN);
kenv(KENV_GET, "smbios.planar.version", board_version, LEN);
kenv(KENV_GET, "smbios.chassis.vendor", chassis_vendor, LEN);
kenv(KENV_GET, "smbios.chassis.type", chassis_type, LEN);
kenv(KENV_GET, "smbios.chassis.version", chassis_version, LEN);
#undef LEN
if (strcmp(chassis_type, "Desktop") == 0)
chassis_type_num = 0x3;
else if (strcmp(chassis_type, "Portable") == 0)
chassis_type_num = 0x8;
else if (strcmp(chassis_type, "Laptop") == 0)
chassis_type_num = 0x9;
else if (strcmp(chassis_type, "Notebook") == 0)
chassis_type_num = 0xA;
else if (strcmp(chassis_type, "Tablet") == 0)
chassis_type_num = 0x1E;
else if (strcmp(chassis_type, "Convertible") == 0)
chassis_type_num = 0x1F;
else if (strcmp(chassis_type, "Detachable") == 0)
chassis_type_num = 0x20;
xasprintf(&modalias,
"dmi:bvn%s:bvr%s:bd%s:svn%s:pn%s:pvr%s:rvn%s:rn%s:rvr%s:cvn%s:ct%d:cvr%s:",
bios_vendor, bios_version, bios_date, sys_vendor, product_name,
product_version, board_vendor, board_name, board_version, chassis_vendor,
chassis_type_num, chassis_version);
return modalias;
}
#endif
static inline char *
init_dmi(void)
{
if (getenv("LIBINPUT_RUNNING_TEST_SUITE"))
return safe_strdup("dmi:");
#if defined(__linux__)
return init_dmi_linux();
#elif defined(__FreeBSD__)
return init_dmi_freebsd();
#else
return NULL;
#endif
}
/**
* Return the dt compatible string
@ -499,6 +568,8 @@ parse_match(struct quirks_context *ctx,
s->match.bus = BT_RMI;
else if (streq(value, "i2c"))
s->match.bus = BT_I2C;
else if (streq(value, "spi"))
s->match.bus = BT_SPI;
else
goto out;
} else if (streq(key, "MatchVendor")) {
@ -1241,6 +1312,10 @@ match_fill_bus_vid_pid(struct match *m,
m->bus = BT_I2C;
m->bits |= M_BUS;
break;
case BUS_SPI:
m->bus = BT_SPI;
m->bits |= M_BUS;
break;
default:
break;
}