Maximum number of buttons is limited to 0x2ff. This makes it so game controllers like joysticks, racing wheelbases etc. are limited to 80 buttons. A lot of input devices for flight simulators and racing simulators take full advantage of Windows' input API limitation of 128 buttons and, in turn, some of their buttons simply don't show up under linux. While normally I'd say doing something just becuase other OS does, doesn't seem like enough of a reason, Linux became quite a viable gaming platform in the recent years so this makes it so it supports all the HID peripherals without fuss and confusion (there aren't any dmesg errors if HID device exceeds the 0x2ff button id). I'm a part of linux simracing community and we encoutered this issue with Moza Racing wheelbases, as they use top of the range for things like h-pattern shifters, sequential shifters. These accessories simply don't work, be it connected through the wheelbase or directly with USB. Upcoming Moza Flight Sim devices will face the same issue, and there were Saitek/Logitech/Honeycomb and custom-made products that also have more then 80 buttons. 0x2ff was already sort of an arbitrary number, so I'm increasing it to 0x3ff to keep the value straight-forward. Change has been verified on my Moza Racing R9 wheelbase + Moza racing sequential shifter (it uses buttons 112-117). Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@xxxxxxxxx> --- include/linux/mod_devicetable.h | 2 +- include/uapi/linux/input-event-codes.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 4338b1b4ac44..c2cb3a2d0dc7 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -333,7 +333,7 @@ struct pcmcia_device_id { /* Input */ #define INPUT_DEVICE_ID_EV_MAX 0x1f #define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71 -#define INPUT_DEVICE_ID_KEY_MAX 0x2ff +#define INPUT_DEVICE_ID_KEY_MAX 0x3ff #define INPUT_DEVICE_ID_REL_MAX 0x0f #define INPUT_DEVICE_ID_ABS_MAX 0x3f #define INPUT_DEVICE_ID_MSC_MAX 0x07 diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h index a4206723f503..a8eace215b54 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -808,7 +808,7 @@ /* We avoid low common keys in module aliases so they don't get huge. */ #define KEY_MIN_INTERESTING KEY_MUTE -#define KEY_MAX 0x2ff +#define KEY_MAX 0x3ff #define KEY_CNT (KEY_MAX+1) /* -- 2.45.2