# This file is part of systemd.
#
# Pointingstick const-accel configuration, to make different brand / model
# laptop pointingsticks have the same speed / feel, and per model adjustment
# of the IBM TrackPoint driver's sensitivity setting
#
# The lookup keys are composed in:
#   60-evdev.rules
#
# Note: The format of the "evdev:" 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 a stable ABI.
#
# Supported hardware matches are:
#  - Generic input devices match:
#      evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
#    This matches on the kernel modalias of the input-device, mainly:
#    ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
#    WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
#    is an arbitrary length input-modalias describing the device capabilities.
#    The vendor, product and version ID for a device node "eventX" is listed
#    in /sys/class/input/eventX/device/id.
#
#  - Input driver device name and DMI data match:
#      evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
#    <input device name> is the name device specified by the driver,
#    <vendor> is the firmware-provided string from the kernel DMI modalias,
#    see /sys/class/dmi/id/modalias
#
# To add local entries, create a new file
#   /etc/udev/hwdb.d/71-pointingstick-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 pointingstick 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.
#
# Allowed properties are:
#   POINTINGSTICK_CONST_ACCEL
#   POINTINGSTICK_SENSITIVITY
#
# Entries should be sorted with growing _SENSITIVITY and _CONST_ACCEL.
#
#########################################
#      POINTINGSTICK_CONST_ACCEL        #
#########################################
#
# Trackpoint const accel settings are specified as
#    POINTINGSTICK_CONST_ACCEL=<accel>
#
# Where <accel> is a floating point number, using a '.' seperator, specifying
# by how much to multiply deltas generated by the pointingstick to get
# normalized deltas.
#
#########################################
#      POINTINGSTICK_SENSITIVITY        #
#########################################
#
# TPPS/2 IBM TrackPoint driver sensitivity sysfs setting
#    POINTINGSTICK_SENSITIVITY=<sensitivity>
#
# Where <sensitivity> is a number between 0 and 255, note this property
# only applies to TPPS/2 IBM TrackPoint devices, see
# drivers/input/mouse/trackpoint.c in the Linux kernel sources.
#

#
# Sort by brand, model

#########################################
# Dell
#########################################

# Latitude D620
evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeD620*:pvr*
 POINTINGSTICK_CONST_ACCEL=0.5

# Latitude E5570
evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE5570*:pvr*
 POINTINGSTICK_CONST_ACCEL=0.1

# Latitude E6320
evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE6320*:pvr*
 POINTINGSTICK_CONST_ACCEL=2.0

# Latitude E6400
evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE6400*:pvr*
 POINTINGSTICK_CONST_ACCEL=1.5

# Latitude E7470
evdev:name:*DualPoint Stick:dmi:bvn*:bvr*:bd*:svnDellInc.:pnLatitudeE7470*:pvr*
 POINTINGSTICK_CONST_ACCEL=0.6

#########################################
# Lenovo
#########################################

# Lenovo Thinkpad X220
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX220:*
# Lenovo Thinkpad X230
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX230:*
# Lenovo Thinkpad X230 tablet
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX230Tablet:*
# Lenovo Thinkpad *40 series
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??40:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??40?:*
# Lenovo Thinkpad *50 series
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??50:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??50?:*
# Lenovo Thinkpad *60 series
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:*
# Lenovo Thinkpad X1 Carbon 3rd gen
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX1Carbon3rd:*
# Lenovo Thinkpad X1 Carbon 4th gen
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX1Carbon4th:*
# Lenovo Thinkpad X1 Tablet
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX1Tablet:*
 POINTINGSTICK_SENSITIVITY=200
 POINTINGSTICK_CONST_ACCEL=1.0

# Lenovo Thinkpad X200/X201/X200s/X201s
# Note these come with 2 revisions of keyboard, with the trackpoints having a
# different sensitivity in the different revisions. 1.25 is a bit slow for the
# least sensitive revision, but it is better to be a bit slow than too fast.
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX20?:*
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX20??:*
 POINTINGSTICK_SENSITIVITY=200
 POINTINGSTICK_CONST_ACCEL=1.25

# Lenovo UltraNav SK-8845 (USB keyboard)
evdev:input:b0003v06CBp0009*
 POINTINGSTICK_CONST_ACCEL=2.5
 POINTINGSTICK_SENSITIVITY=200
