break joystick limitation of maximum 80 buttons
Subsystems (2)
PATCH 1/1 break joystick limitation of maximum 80 buttons
The 80 limitation comes from
include/uapi/linux/input-event-codes.h
according to function hidinput_configure_usage() in file drivers/hid/hid-input.c
the joystick button mapping is not a continues space generally speaking, the mapping space is from
1. BTN_JOYSTICK~BTN_DEAD
2. BTN_TRIGGER_HAPPY~KEY_MAX
and
Finally I got the max limitation is 80.
--- include/linux/mod_devicetable.h | 2 +- include/uapi/linux/input-event-codes.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
include/linux/mod_devicetable.h +1 -1
@@ -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
include/uapi/linux/input-event-codes.h +1 -1
@@ -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)/*
Signature · 1 line
2.17.1
PATCH 1/1 Input: break joystick limitation of maximum 80 buttons
The joystick max buttons 80 limitation comes from
#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 joystick button mapping is not a continues space generally speaking, the mapping space is from
1. BTN_JOYSTICK~BTN_DEAD
2. BTN_TRIGGER_HAPPY~KEY_MAX
Finally, I got the max limitation is 80.
The patch is expanding KEY_MAX from 0x2ff to 4ff
and the change has been verified on 104 button USB HID device on Ubuntu
--- include/linux/mod_devicetable.h | 2 +- include/uapi/linux/input-event-codes.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
include/linux/mod_devicetable.h +1 -1
@@ -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
(quoted diff) +0 -0
b/include/uapi/linux/input-event-codes.h index b6a835d37826..ad1b9bed3828 100644
include/uapi/linux/input-event-codes.h +1 -1
@@ -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
Re: [PATCH] Input: break joystick limitation of maximum 80 buttons
Quoted 14 lines · Wei Shuai
The joystick max buttons 80 limitation comes from
#define
BTN_JOYSTICK0x120
#defineBTN_DEAD0x12f
#defineBTN_TRIGGER_HAPPY0x2c0
#defineKEY_MAX0x2ff
include/uapi/linux/input-event-codes.haccording to function
hidinput_configure_usage()in filedrivers/hid/hid-input.cthe joystick button mapping is not a continues space generally speaking, the mapping space is from
Quoted 6 lines
1. BTN_JOYSTICK~BTN_DEAD
2. BTN_TRIGGER_HAPPY~KEY_MAXFinally, I got the max limitation is 80.
The patch is expandingKEY_MAXfrom0x2ffto 4ff
and the change has been verified on 104 button USB HID device on Ubuntu
If you send and resend this patch too often, nobody will take you seriously. Also, you have to provide versioning and changelog in each submission. Besides that, above doesn't answer to question "why?". Why are you doing this at all? What the problem?
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH] Input: break joystick limitation of maximum 80 buttons
hi Andy,
sorry from a newbie
we found Linux kernel has max joystick buttons up to 80, no more
We are selling USB joystick device QMCP737C for flight simulator, which is nothing but common USB joystick. it has 104 buttons
Product link
https://x-plane.vip/quickmade/qmcp737c/
it works well on Windows, Mac, but not on Linux.
Linux kernel exposes /dev/input/js0 max to 80 button, but we have 104 buttons.
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 joystick button mapping is not a continues space, generally speak the mapping space is from
BTN_JOYSTICK~BTN_DEAD
BTN_TRIGGER_HAPPY~KEY_MAX
and finally, I got the max limitation is 80.
my question is why KEY_MAX is 0x2ff? this number 0x2ff looks like not align with char? integer? the answer is no
so may I ask to expand KEY_MAX to such as 0x4ff?
Quoted 35 lines · Andy Shevchenko <[email protected]> 于2020年7月13日周一 下午5:06写道:
Quoted 14 lines · Wei Shuai
The joystick max buttons 80 limitation comes from
#define
BTN_JOYSTICK0x120
#defineBTN_DEAD0x12f
#defineBTN_TRIGGER_HAPPY0x2c0
#defineKEY_MAX0x2ff
include/uapi/linux/input-event-codes.haccording to function
hidinput_configure_usage()in filedrivers/hid/hid-input.cthe joystick button mapping is not a continues space generally speaking, the mapping space is from
Quoted 6 lines
1. BTN_JOYSTICK~BTN_DEAD
2. BTN_TRIGGER_HAPPY~KEY_MAXFinally, I got the max limitation is 80.
The patch is expandingKEY_MAXfrom0x2ffto 4ff
and the change has been verified on 104 button USB HID device on UbuntuIf you send and resend this patch too often, nobody will take you seriously. Also, you have to provide versioning and changelog in each submission. Besides that, above doesn't answer to question "why?". Why are you doing this at all? What the problem?
--
With Best Regards,
Andy Shevchenko