diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-11-25 21:35:16 +1000 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2014-11-28 08:12:30 -0500 |
commit | 3481b5b97660d56841c24683f0b8e7ad74a833f7 (patch) | |
tree | 8d7f07f4c5b762ef0cedb50c62b9125be08e5439 /rules | |
parent | c317efd55c2368906563309cedb6b0ddb9b88716 (diff) |
hwdb: add a new db for the DPI/frequency settings of mice
Pointer acceleration for relative input devices (mice, trackballs, etc.)
applies to the deltas of the device. Alas, those deltas have no physical
reference point - a delta of 10 may be caused by a large movement of a
low-dpi mouse or by a minute movement of a high-dpi mouse.
Which makes pointer acceleration a bit useless and high-dpi devices
essentially unusable.
In an ideal world, we could read the DPI from the device directly and work
with that. In the world we actually live in, we need to compile this list
manually. This patch introduces the database, with the usual match formats
and a single property to be set on a device: MOUSE_DPI
That is either a single value for most mice, or a list of values for mice
that can change resolution at runtime. The exact format is detailed in the
hwdb file.
Note that we're explicitly overshooting the requirements we have for
libinput atm. Frequency could be detected in software and we don't
actually use the list of multiple resolutions (because we can't detect
when they change anyway). However, we might as well collect those values
from the get-go, adding/modifying what will eventually amount to hundreds
of entries is a bit cumbersome.
Note: we rely on the input_id builtin to tag us as mouse first, ordering
of the rules is important.
(David: fixed up typos and moved hwdb file into ./hwdb/)
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'rules')
-rw-r--r-- | rules/70-mouse.rules | 15 | ||||
-rw-r--r-- | rules/Makefile.am | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/rules/70-mouse.rules b/rules/70-mouse.rules new file mode 100644 index 0000000000..0e359e83f1 --- /dev/null +++ b/rules/70-mouse.rules @@ -0,0 +1,15 @@ +# do not edit this file, it will be overwritten on update + +ACTION=="remove", GOTO="mouse_end" +KERNEL!="event*", GOTO="mouse_end" +ENV{ID_INPUT_MOUSE}=="", GOTO="mouse_end" + +# mouse:<subsystem>:v<vid>p<pid>:name:<name>:* +KERNELS=="input*", ENV{ID_BUS}=="usb", \ + IMPORT{builtin}="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ + GOTO="mouse_end" +KERNELS=="input*", ENV{ID_BUS}=="bluetooth", \ + IMPORT{builtin}="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ + GOTO="mouse_end" + +LABEL="mouse_end" diff --git a/rules/Makefile.am b/rules/Makefile.am index ae950a9546..dfbda04684 100644 --- a/rules/Makefile.am +++ b/rules/Makefile.am @@ -12,6 +12,7 @@ dist_udevrules_DATA = \ 60-persistent-v4l.rules \ 61-accelerometer.rules \ 64-btrfs.rules \ + 70-mouse.rules \ 75-net-description.rules \ 75-probe_mtd.rules \ 75-tty-description.rules \ |