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::vp: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::vp: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"