diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2015-01-28 14:05:01 +1000 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2015-02-08 08:21:43 -0500 |
commit | b51ba787a3e16cefa3af98cf357a7f3b29d700b9 (patch) | |
tree | 4366b04f55929b08eb261c5ec9dff4ad12039ebe | |
parent | 681b0e3876ba6ed10efbc139c0d4346446500e07 (diff) |
hwdb: add a touchpad hwdb
Currently used to tag devices in the new Lenovo *50 series and the X1 Carbon
3rd. These laptops re-introduced the physical trackpoint buttons that were
missing from the *40 series but those buttons are now wired up to the
touchpad.
The touchpad now sends BTN_0, BTN_1 and BTN_2 for the trackpoint. The same
button codes were used in older touchpads that had dedicated scroll up/down
buttons. Input drivers need to work around this and thus know what they're
dealing with.
For the previous gen we introduced INPUT_PROP_TOPBUTTONPAD in the kernel, but
the resulting mess showed that these per-device quirks should really live in
userspace.
The list currently includes the X1 Carbon 3rd PNPID, others will be added as
get to know which PNPID they have.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-rw-r--r-- | hwdb/70-touchpad.hwdb | 39 | ||||
-rw-r--r-- | hwdb/Makefile.am | 3 | ||||
-rw-r--r-- | rules/70-touchpad.rules | 12 | ||||
-rw-r--r-- | rules/Makefile.am | 1 |
4 files changed, 54 insertions, 1 deletions
diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb new file mode 100644 index 0000000000..bbf44db778 --- /dev/null +++ b/hwdb/70-touchpad.hwdb @@ -0,0 +1,39 @@ +# This file is part of systemd. +# +# 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:pnpid:<pnpid>: +# +# 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, open a bug report on +# http://bugs.freedesktop.org/enter_bug.cgi?product=systemd +# and include your new rules, a description of the device, and the +# output of +# udevadm info /dev/input/eventXX +# (or /dev/input/event*). +# +# Allowed properties are: +# TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1 +# +# If the TOUCHPAD_HAS_TRACKPOINT_BUTTONS property is set, this +# device has # the trackpoint buttons wired up to the touchpad as +# BTN_0, BTN_1 and BTN_2. This affects the Lenovo X1 Carbon 3rd +# and the *50 series (T450, T550, etc.) + +# Lenovo X1 Carbon 3rd +touchpad:pnpid:*LEN0048*: + TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1 diff --git a/hwdb/Makefile.am b/hwdb/Makefile.am index c00cfe1335..192fa7e132 100644 --- a/hwdb/Makefile.am +++ b/hwdb/Makefile.am @@ -10,7 +10,8 @@ dist_udevhwdb_DATA = \ 20-sdio-vendor-model.hwdb \ 20-usb-classes.hwdb \ 20-usb-vendor-model.hwdb \ - 70-mouse.hwdb + 70-mouse.hwdb \ + 70-touchpad.hwdb if ENABLE_KEYMAP dist_udevhwdb_DATA += \ diff --git a/rules/70-touchpad.rules b/rules/70-touchpad.rules new file mode 100644 index 0000000000..88e6fd2f25 --- /dev/null +++ b/rules/70-touchpad.rules @@ -0,0 +1,12 @@ +# do not edit this file, it will be overwritten on update + +ACTION=="remove", GOTO="touchpad_end" +KERNEL!="event*", GOTO="touchpad_end" +ENV{ID_INPUT_TOUCHPAD}=="", GOTO="touchpad_end" + +# touchpad:pnpid:<pnpid>:* +KERNELS=="serio1", \ + IMPORT{builtin}="hwdb 'touchpad:pnpid:$attr{firmware_id}:'", \ + GOTO="touchpad_end" + +LABEL="touchpad_end" diff --git a/rules/Makefile.am b/rules/Makefile.am index dfbda04684..1fae8b56ec 100644 --- a/rules/Makefile.am +++ b/rules/Makefile.am @@ -13,6 +13,7 @@ dist_udevrules_DATA = \ 61-accelerometer.rules \ 64-btrfs.rules \ 70-mouse.rules \ + 70-touchpad.rules \ 75-net-description.rules \ 75-probe_mtd.rules \ 75-tty-description.rules \ |