summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--hwdb/70-touchpad.hwdb49
-rw-r--r--rules/60-persistent-input.rules4
-rw-r--r--rules/70-touchpad.rules13
4 files changed, 68 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index f71ce848ee..c9fb4917ad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3667,6 +3667,7 @@ dist_udevrules_DATA += \
rules/60-serial.rules \
rules/64-btrfs.rules \
rules/70-mouse.rules \
+ rules/70-touchpad.rules \
rules/75-net-description.rules \
rules/78-sound-card.rules \
rules/80-net-setup-link.rules
@@ -3833,7 +3834,8 @@ dist_udevhwdb_DATA = \
hwdb/60-evdev.hwdb \
hwdb/60-keyboard.hwdb \
hwdb/70-mouse.hwdb \
- hwdb/70-pointingstick.hwdb
+ hwdb/70-pointingstick.hwdb \
+ hwdb/70-touchpad.hwdb
SYSINIT_TARGET_WANTS += \
systemd-hwdb-update.service
diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb
new file mode 100644
index 0000000000..11f3f96f04
--- /dev/null
+++ b/hwdb/70-touchpad.hwdb
@@ -0,0 +1,49 @@
+# This file is part of systemd.
+#
+# Database for touchpad device information that cannot be queried directly.
+#
+# The lookup keys are composed in:
+# 70-touchpad.rules
+#
+# Note: The format of the "touchpad:" prefix match key is a
+# contract between the rules file and the hardware data, it might
+# change in later revisions to support more or better matches, it
+# is not necessarily expected to be a stable ABI.
+#
+# Match string format:
+# touchpad:<subsystem>:v<vid>p<pid>:name:<name>:
+#
+# vid/pid as 4-digit hex lowercase vendor/product
+#
+# To add local entries, create a new file
+# /etc/udev/hwdb.d/71-touchpad-local.hwdb
+# and add your rules there. To load the new rules execute (as root):
+# udevadm hwdb --update
+# udevadm trigger /dev/input/eventXX
+# where /dev/input/eventXX is the touchpad in question. If in
+# doubt, simply use /dev/input/event* to reload all input rules.
+#
+# If your changes are generally applicable, preferably send them as a pull
+# request to
+# https://github.com/systemd/systemd
+# or create a bug report on https://github.com/systemd/systemd/issues and
+# include your new rules, a description of the device, and the output of
+# udevadm info /dev/input/eventXX.
+#
+# Permitted keys:
+# Specify if a touchpad is a built-in one or external:
+# ID_INPUT_TOUCHPAD_INTEGRATION=internal|external
+
+touchpad:i8042:*
+touchpad:rmi:*
+ ID_INPUT_TOUCHPAD_INTEGRATION=internal
+
+touchpad:bluetooth:*
+touchpad:usb:*
+ ID_INPUT_TOUCHPAD_INTEGRATION=external
+
+###########################################################
+# Apple
+###########################################################
+touchpad:usb:v05ac*
+ ID_INPUT_TOUCHPAD_INTEGRATION=internal
diff --git a/rules/60-persistent-input.rules b/rules/60-persistent-input.rules
index 0e33e68384..607144bf8a 100644
--- a/rules/60-persistent-input.rules
+++ b/rules/60-persistent-input.rules
@@ -2,7 +2,9 @@
ACTION=="remove", GOTO="persistent_input_end"
SUBSYSTEM!="input", GOTO="persistent_input_end"
-SUBSYSTEMS=="bluetooth", GOTO="persistent_input_end"
+SUBSYSTEMS=="bluetooth", ENV{ID_BUS}="bluetooth", GOTO="persistent_input_end"
+SUBSYSTEMS=="rmi4", ENV{ID_BUS}="rmi", GOTO="persistent_input_end"
+SUBSYSTEMS=="serio", ENV{ID_BUS}="i8042", GOTO="persistent_input_end"
SUBSYSTEMS=="usb", ENV{ID_BUS}=="", IMPORT{builtin}="usb_id"
diff --git a/rules/70-touchpad.rules b/rules/70-touchpad.rules
new file mode 100644
index 0000000000..7bede02dec
--- /dev/null
+++ b/rules/70-touchpad.rules
@@ -0,0 +1,13 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION=="remove", GOTO="touchpad_end"
+ENV{ID_INPUT}=="", GOTO="touchpad_end"
+ENV{ID_INPUT_TOUCHPAD}=="", GOTO="touchpad_end"
+KERNEL!="event*", GOTO="touchpad_end"
+
+# touchpad:<subsystem>:v<vid>p<pid>:name:<name>:*
+KERNELS=="input*", ENV{ID_BUS}!="", \
+ IMPORT{builtin}="hwdb 'touchpad:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \
+ GOTO="touchpad_end"
+
+LABEL="touchpad_end"