Thread (11 messages) 11 messages, 2 authors, 2017-04-11

Re: [v3,1/4] input: add an EV_REL event for high-res vertical wheel

From: Benjamin Tissoires <hidden>
Date: 2017-04-07 15:10:35

On Apr 07 2017 or thereabouts, Mauro Carvalho Chehab wrote:
Em Fri, 7 Apr 2017 14:17:51 +0200
Benjamin Tissoires [off-list ref] escreveu:
quoted
Hi Mauro,

On Apr 07 2017 or thereabouts, Mauro Carvalho Chehab wrote:
quoted
As some devices can produce either low-res or high-res
vertical wheel EV_REL events, add a new event to allow
userspace to distinguish between them.

Signed-off-by: Mauro Carvalho Chehab <redacted>
---
 Documentation/input/event-codes.rst    | 16 +++++++++++++---
 include/uapi/linux/input-event-codes.h |  1 +
 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst
index 92db50954169..0c8591d39bc6 100644
--- a/Documentation/input/event-codes.rst
+++ b/Documentation/input/event-codes.rst
@@ -185,10 +185,20 @@ instead of EV_REL codes.
 
 A few EV_REL codes have special meanings:
 
-* REL_WHEEL, REL_HWHEEL:
+* REL_WHEEL:
 
-  - These codes are used for vertical and horizontal scroll wheels,
-    respectively.
+  - These codes are used for vertical scroll wheels.
+
+  - REL_WHEEL is for normal wheel operational mode, e. g. low-resolution
+    (line-based) scroll.
+
+  - REL_HIRES_WHEEL should be used when the wheel has two resolutions and it
+    is in high-resolution mode, e. g. the same angular movement that would
+    produce a single REL_WHEEL will produce multiple REL_HIRES_WHEEL events.
+
+* REL_HWHEEL:
+
+  - This code is used for horizontal scroll wheels.
 
 EV_ABS
 ------
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 3af60ee69053..23b2d377af59 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -703,6 +703,7 @@
 #define REL_DIAL		0x07
 #define REL_WHEEL		0x08
 #define REL_MISC		0x09
+#define REL_HIRES_WHEEL		0x0a  
There is one issue here. The HID input layer has a tendency to map
usages to REL_MISC +1, +2, +3, etc... When it doesn't know how to map an
usage, the core layer maps it to the next one.

I am not aware of devices exposing such REL axes, but I wouldn't be
surprised if the issue will not raise at some point.

We already had an issue with ABS events where ABS_MISC are conflicting
with ABS_MT_SLOTS. Luckily, we have a little empty space between
ABS_MISC and ABS_MT_SLOT, which allows userspace to detect such issues.

Could you give the define a bigger number (and maybe reserve a couple of
REL_MISC-n) to make sure that we do not end up with joysticks exporting
REL_HIRES_WHEEL?
Sure. How many REL_MISC-n should be reserved?
Not sure. As I mentioned, I haven' t seen such device myself, but maybe
we should reserve the rest of the 0x0n range for those (0x0a-0x0f). This
would force to bump REL_MAX, but I don't think this is an issue besides
recompiling libevdev and others.
quoted
I'll try the rest of the series on the MX Master today.
It would be great if you could test it!
I found some issues, I'll report in the other patches.

Cheers,
Benjamin
Regards,
Mauro
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help