Turns out that the code can handle a greater range, but the data stored
can not. This is problematic on the Raptor Mach 2 joystick which
logical max is 239. The kernel interprets it as `-15` and thus ignores
the Hat Switch handling.

Link: https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/17
Signed-off-by: Benjamin Tissoires <[email protected]>
---
 include/linux/hid.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/hid.h b/include/linux/hid.h
index b12cb1c8e682..8e06d89698e6 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -474,9 +474,9 @@ struct hid_usage {
        __s8      wheel_factor;         /* 120/resolution_multiplier */
        __u16     code;                 /* input driver code */
        __u8      type;                 /* input driver type */
-       __s8      hat_min;              /* hat switch fun */
-       __s8      hat_max;              /* ditto */
-       __s8      hat_dir;              /* ditto */
+       __s16     hat_min;              /* hat switch fun */
+       __s16     hat_max;              /* ditto */
+       __s16     hat_dir;              /* ditto */
        __s16     wheel_accumulated;    /* hi-res wheel */
 };
 

-- 
2.44.0


Reply via email to