diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2017-10-30 01:42:29 +0100 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-10-30 01:57:18 +0100 |
commit | ffac30349e9da91dbef7d4e0bf7cef58705c534e (patch) | |
tree | caf0d6f19f797789235de9fab9b2447ce855dcd4 /hwdb | |
parent | man: systemd.offline-updates: remove link to the doc it obsoletes (#7189) (diff) | |
download | systemd-ffac30349e9da91dbef7d4e0bf7cef58705c534e.tar.xz systemd-ffac30349e9da91dbef7d4e0bf7cef58705c534e.zip |
hwdb: add a hwdb file to override ID_INPUT assignments
The input_id builtin assigns the various ID_INPUT based on the exported evdev
bits. In some cases, the device may not have the properties required to label
a device as one specific type but the physical form factor is clear.
e.g. in the case of #7197 it's a tablet pad that does not have x/y axes which
the kernel exports for pads for historical reasons.
A custom override is needed, best to be solved with a hwdb entry.
Related #7197
Diffstat (limited to 'hwdb')
-rw-r--r-- | hwdb/60-input-id.hwdb | 59 | ||||
-rwxr-xr-x | hwdb/parse_hwdb.py | 13 |
2 files changed, 72 insertions, 0 deletions
diff --git a/hwdb/60-input-id.hwdb b/hwdb/60-input-id.hwdb new file mode 100644 index 0000000000..845ef24074 --- /dev/null +++ b/hwdb/60-input-id.hwdb @@ -0,0 +1,59 @@ +# This file is part of systemd. +# +# The lookup keys are composed in: +# 60-input-id.rules +# +# Note: The format of the "input-id:" 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 formats: +# id-input:modalias:<modalias> +# +# To add local entries, create a new file +# /etc/udev/hwdb.d/61-input-id-local.hwdb +# and add your rules there. To load the new rules execute (as root): +# systemd-hwdb update +# udevadm trigger /dev/input/eventXX +# where /dev/input/eventXX is the device 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. +# +# This file must only be used where the input_id builtin assigns the wrong +# properties or lacks the assignment of some properties. This is almost +# always caused by a device not adhering to the standard of the device's +# type. +# +# Allowed properties are: +# ID_INPUT +# ID_INPUT_ACCELEROMETER, ID_INPUT_MOUSE, +# ID_INPUT_POINTINGSTICK, ID_INPUT_TOUCHSCREEN, ID_INPUT_TOUCHPAD, +# ID_INPUT_TABLET, ID_INPUT_TABLET_PAD, ID_INPUT_JOYSTICK, ID_INPUT_KEY, +# ID_INPUT_KEYBOARD, ID_INPUT_SWITCH, ID_INPUT_TRACKBALL +# +# ID_INPUT +# * MUST be set when ANY of ID_INPUT_* is set +# * MUST be unset when ALL of ID_INPUT_* are unset +# +# ID_INPUT_TABLET +# * MUST be set when setting ID_INPUT_TABLET_PAD +# +# Allowed values are 1 and 0 to set or unset, repsectively. +# +# NOT allowed in this file are: +# ID_INPUT_WIDTH_MM, ID_INPUT_HEIGHT_MM, ID_INPUT_TOUCHPAD_INTEGRATION +# + +# Example: +# id-input:modalias:input:b0003v1234pABCD* +# ID_INPUT_TOUCHPAD=1 +# ID_INPUT=1 + +# Sort by brand, model diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py index a25ac8d904..eb52dc917b 100755 --- a/hwdb/parse_hwdb.py +++ b/hwdb/parse_hwdb.py @@ -65,6 +65,7 @@ UDEV_TAG = Word(string.ascii_uppercase, alphanums + '_') TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'), 'evdev': ('name', 'atkbd', 'input'), + 'id-input': ('modalias'), 'touchpad': ('i8042', 'rmi', 'bluetooth', 'usb'), 'joystick': ('i8042', 'rmi', 'bluetooth', 'usb'), 'keyboard': ('name', ), @@ -105,6 +106,18 @@ def property_grammar(): ('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER), ('MOUSE_WHEEL_CLICK_COUNT', INTEGER), ('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER), + ('ID_INPUT', Literal('1')), + ('ID_INPUT_ACCELEROMETER', Literal('1')), + ('ID_INPUT_JOYSTICK', Literal('1')), + ('ID_INPUT_KEY', Literal('1')), + ('ID_INPUT_KEYBOARD', Literal('1')), + ('ID_INPUT_MOUSE', Literal('1')), + ('ID_INPUT_POINTINGSTICK', Literal('1')), + ('ID_INPUT_SWITCH', Literal('1')), + ('ID_INPUT_TABLET', Literal('1')), + ('ID_INPUT_TABLET_PAD', Literal('1')), + ('ID_INPUT_TOUCHPAD', Literal('1')), + ('ID_INPUT_TOUCHSCREEN', Literal('1')), ('ID_INPUT_TRACKBALL', Literal('1')), ('MOUSE_WHEEL_TILT_HORIZONTAL', Literal('1')), ('MOUSE_WHEEL_TILT_VERTICAL', Literal('1')), |