Dear Dmitry Torokhov, Today I found out that in 2008, you have expanded the number of potential key codes from 512 to 768. I request to expand keycode space again, from 0x2ff to 0x4ff. I have tested this patch on Ubuntu Kernel, it works well with a USB HID joystick that has more than 80 keys. Story back to I found Linux kernel has max USB HID joystick buttons up to 80, no more. But Windows OS and Mac OS have no such limitations. I have a USB HID joystick device, which has 104 buttons, larger than 80. I did a lot of google search, but nothing I got. then I have to look at Kernel source, to find out where this number max 80 comes from Eventually, I found the final limitation #define BTN_JOYSTICK 0x120 #define BTN_DEAD 0x12f #define BTN_TRIGGER_HAPPY 0x2c0 #define KEY_MAX 0x2ff include/uapi/linux/input-event-codes.h according to function hidinput_configure_usage() in file drivers/hid/hid-input.c the USB joystick button mapping is not a continuous space, generally speak the mapping space is from BTN_JOYSTICK~BTN_DEAD 0x120~0x12f=0x10 BTN_TRIGGER_HAPPY~KEY_MAX 0x2c0~0x2ff=40 0x10+0x40=0x60=80 and finally, I got the max limitation of 80 for joystick keys. This patch is about expanding keycode space from 0x2ff to 0x4ff. I expect this patch won't go with ease, because it affects user space application definition as well. I believe sooner or later Linux kernel will face keycode is not enough Signed-off-by: Wei Shuai <cpuwolf@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 8d764aab29de..35eb59ae1f19 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -311,7 +311,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 0x4ff #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 b6a835d37826..ad1b9bed3828 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -774,7 +774,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 0x4ff #define KEY_CNT (KEY_MAX+1) /* -- 2.17.1