forked from pool/libinput
85 lines
2.7 KiB
Diff
85 lines
2.7 KiB
Diff
|
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
|
||
|
|