[systemd-devel] [PATCH v3 1/4] udev: Add rules and hwdb files for setting pointingstick properties
Hans de Goede
hdegoede at redhat.com
Tue Apr 7 03:09:48 PDT 2015
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 than 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
More information about the systemd-devel
mailing list