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>
This commit is contained in:
Peter Hutterer 2015-01-28 14:05:01 +10:00 committed by Anthony G. Basile
parent 681b0e3876
commit b51ba787a3
4 changed files with 54 additions and 1 deletions

39
hwdb/70-touchpad.hwdb Normal file
View File

@ -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

View File

@ -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 += \

12
rules/70-touchpad.rules Normal file
View File

@ -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"

View File

@ -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 \