SHA256
1
0
forked from pool/libinput
libinput/0001-udev-support-firmware-detection-for-pointing-sticks.patch

85 lines
2.7 KiB
Diff
Raw Normal View History

From efccf735355c498176fd5093aa89cfb46ef16c94 Mon Sep 17 00:00:00 2001
From: Martin Wilck <mwilck@suse.com>
Date: Tue, 29 May 2018 09:28:09 +0200
Subject: [PATCH 1/2] udev: support firmware detection for pointing sticks
Add support for firmware detection on pointing stick devices. This
is needed for ALPS only at this time.
Signed-off-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
udev/90-libinput-model-quirks.rules.in | 15 +++++++++------
udev/libinput-model-quirks.c | 15 +++++++++++++++
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/udev/90-libinput-model-quirks.rules.in b/udev/90-libinput-model-quirks.rules.in
index e7d56bb..b584513 100644
--- a/udev/90-libinput-model-quirks.rules.in
+++ b/udev/90-libinput-model-quirks.rules.in
@@ -11,19 +11,22 @@
ACTION!="add|change", GOTO="libinput_model_quirks_end"
KERNEL!="event*", GOTO="libinput_model_quirks_end"
-# Touchpad firmware detection, two-stage process.
+# Firmware detection, two-stage process.
# First, run the program and import the LIBINPUT_MODEL_FIRMWARE_VERSION
# environment (if any)
KERNELS=="*input*", \
ENV{ID_INPUT_TOUCHPAD}=="1", \
- IMPORT{program}="@UDEV_TEST_PATH@libinput-model-quirks %S%p"
-
-# Second, match on anything with that env set and import from the hwdb
+ ENV{.DETECT_FWVERSION}="1"
KERNELS=="*input*", \
- ENV{ID_INPUT_TOUCHPAD}=="1", \
- ENV{LIBINPUT_MODEL_FIRMWARE_VERSION}!="", \
+ ENV{ID_INPUT_POINTINGSTICK}=="1", \
+ ENV{.DETECT_FWVERSION}="1"
+ENV{.DETECT_FWVERSION}!="1", GOTO="skip_fwversion"
+
+IMPORT{program}="@UDEV_TEST_PATH@libinput-model-quirks %S%p"
+ENV{LIBINPUT_MODEL_FIRMWARE_VERSION}!="", \
IMPORT{builtin}="hwdb 'libinput:name:$attr{name}:fwversion:$env{LIBINPUT_MODEL_FIRMWARE_VERSION}'"
# End of touchpad firmware detection
+LABEL="skip_fwversion"
# libinput:touchpad:<modalias>
ENV{ID_INPUT_TOUCHPAD}=="1", \
diff --git a/udev/libinput-model-quirks.c b/udev/libinput-model-quirks.c
index 2dc917d..411665d 100644
--- a/udev/libinput-model-quirks.c
+++ b/udev/libinput-model-quirks.c
@@ -107,6 +107,19 @@ handle_touchpad(struct udev_device *device)
handle_touchpad_synaptics(device);
}
+static void
+handle_pointingstick(struct udev_device *device)
+{
+ const char *name = NULL;
+
+ name = prop_value(device, "NAME");
+ if (!name)
+ return;
+
+ if (strstr(name, "AlpsPS/2 ALPS") != NULL)
+ handle_touchpad_alps(device);
+}
+
int main(int argc, char **argv)
{
int rc = 1;
@@ -129,6 +142,8 @@ int main(int argc, char **argv)
if (prop_value(device, "ID_INPUT_TOUCHPAD"))
handle_touchpad(device);
+ if (prop_value(device, "ID_INPUT_POINTINGSTICK"))
+ handle_pointingstick(device);
rc = 0;
--
2.17.0