From: Hans de Goede Date: Sun, 12 Feb 2017 11:33:22 +0000 (+0100) Subject: rules: Add extended evdev/input match rules for event nodes with the same name X-Git-Tag: v233~106^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57bb707d48131f4daad2b1b746eab586eb66b4f3;p=thirdparty%2Fsystemd.git rules: Add extended evdev/input match rules for event nodes with the same name Sometimes a system may have 2 input event nodes with the same name where we only want to apply keyboard hwdb rules to 1 of the 2 devices. This problem happens e.g. on devices where the soc_button_array driver is used (e.g. intel atom based tablets) which registers 2 event nodes with the name "gpio-keys". This commit adds a new extended match rule which extends the match to also check $attr{phys} and $attr{capabilities/ev}, allowing to differentiate between devices with an identical name. Suggested-by: Dmitry Torokhov Signed-off-by: Hans de Goede --- diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb index c8452f47d0d..036f2cc7ccd 100644 --- a/hwdb/60-keyboard.hwdb +++ b/hwdb/60-keyboard.hwdb @@ -32,6 +32,15 @@ # driver, is the firmware-provided string exported # by the kernel DMI modalias, see /sys/class/dmi/id/modalias # +# - Extended input driver device name, properties and DMI data match: +# evdev:name::phys::ev::dmi:bvn*:bvr*:bd*:svn:pn* +# is the name device specified by the +# driver, is the physical-device-path, "cat +# /sys/class/input/input?/phys", is the event bitmask, "cat +# /sys/class/input/input?/capabilities/ev" and is the +# firmware-provided string exported by the kernel DMI modalias, +# see /sys/class/dmi/id/modalias +# # Scan codes are specified as: # KEYBOARD_KEY_= # The scan code should be expressed in hex lowercase. The key codes diff --git a/rules/60-evdev.rules b/rules/60-evdev.rules index ade7e7f6464..f5d5ba6a5f8 100644 --- a/rules/60-evdev.rules +++ b/rules/60-evdev.rules @@ -12,6 +12,10 @@ ENV{ID_INPUT_KEY}=="?*", DRIVERS=="atkbd", \ IMPORT{builtin}="hwdb 'evdev:atkbd:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" +# device matching the input device name + properties + the machine's DMI data +KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:phys:$attr{phys}:ev:$attr{capabilities/ev}:$attr{[dmi/id]modalias}'", \ + RUN{builtin}+="keyboard", GOTO="evdev_end" + # device matching the input device name and the machine's DMI data KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end"