hwdb: add a 70-touchpad.hwdb to tag internal vs external touchpads

Add a new key ID_INPUT_TOUCHPAD_INTEGRATION=internal|external so we have a
single source for figuring out which touchpads are built-in.

Fairly simple approach: bluetooth is external, usb is external unless it's an
Apple touchpad. Everything else is internal.
This commit is contained in:
Peter Hutterer 2016-07-01 11:10:33 +10:00
parent 83b481599b
commit 0bb7b9860f
3 changed files with 65 additions and 1 deletions

View File

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

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

@ -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:<subsystem>:v<vid>p<pid>:name:<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

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

@ -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:<subsystem>:v<vid>p<pid>:name:<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"