There is quite a wide spread in the delta events generated by pointingsticks, some generate deltas of 1-2 under normal use, while others generate deltas from 1-20.
This commit adds a set of rules + a hwdb file which allows specifying a per model POINTINGSTICK_CONST_ACCEL value which can be used by the userspace input stack to normalize the deltas so that all pointingsticks get the same speed/feeling ootb. The hwdb matching is modelled after 60-keyboard.rules, rather then after 70-mouse.rules, as pointingsticks are typically (but not always) found integrated into laptops and the keyboard matching rules are a better match to this. --- hwdb/70-pointingstick.hwdb | 59 ++++++++++++++++++++++++++++++++++++++++++++ rules/70-mouse.rules | 1 + rules/70-pointingstick.rules | 16 ++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 hwdb/70-pointingstick.hwdb create mode 100644 rules/70-pointingstick.rules diff --git a/hwdb/70-pointingstick.hwdb b/hwdb/70-pointingstick.hwdb new file mode 100644 index 0000000..a893da6 --- /dev/null +++ b/hwdb/70-pointingstick.hwdb @@ -0,0 +1,59 @@ +# 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 sensitivty setting +# +# The lookup keys are composed in: +# 70-pointingstick.rules +# +# Note: The format of the "pointingstick:" 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. +# +# Supported hardware matches are: +# - Generic input devices match: +# pointingstick: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. +# +# - Input driver device name and DMI data match: +# pointingstick: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. +# +# 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): +# udevadm 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, 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: +# POINTINGSTICK_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. +# + +# +# Sort by by brand, model diff --git a/rules/70-mouse.rules b/rules/70-mouse.rules index 3ea743a..4f1e32d 100644 --- a/rules/70-mouse.rules +++ b/rules/70-mouse.rules @@ -3,6 +3,7 @@ ACTION=="remove", GOTO="mouse_end" KERNEL!="event*", GOTO="mouse_end" ENV{ID_INPUT_MOUSE}=="", GOTO="mouse_end" +ENV{ID_INPUT_POINTINGSTICK}=="1", GOTO="mouse_end" # mouse:<subsystem>:v<vid>p<pid>:name:<name>:* KERNELS=="input*", ENV{ID_BUS}=="usb", \ diff --git a/rules/70-pointingstick.rules b/rules/70-pointingstick.rules new file mode 100644 index 0000000..5a853f3 --- /dev/null +++ b/rules/70-pointingstick.rules @@ -0,0 +1,16 @@ +# do not edit this file, it will be overwritten on update + +ACTION=="remove", GOTO="pointingstick_end" +KERNEL!="event*", GOTO="pointingstick_end" +ENV{ID_INPUT_POINTINGSTICK}=="", GOTO="pointingstick_end" + +# skip later rules when we find something for this input device +IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=pointingstick:", \ + GOTO="pointingstick_end" + +# device matching the input device name and the machine's DMI data +KERNELS=="input*", \ + IMPORT{builtin}="hwdb 'pointingstick:name:$attr{device/name}:$attr{[dmi/id]modalias}'", \ + GOTO="pointingstick_end" + +LABEL="pointingstick_end" -- 2.3.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel