linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] break joystick limitation of maximum 80 buttons
@ 2020-07-10  6:51 Wei Shuai
  2020-07-11 23:54 ` [PATCH] Input: " Wei Shuai
  0 siblings, 1 reply; 4+ messages in thread
From: Wei Shuai @ 2020-07-10  6:51 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: cpuwolf, Greg Kroah-Hartman, Jeffrey Hugo, Andy Shevchenko,
	Manivannan Sadhasivam, Borislav Petkov, Mattias Jacobsson,
	Mark Gross, Russell King, Erwan Velu, Thomas Gleixner, open list,
	open list:INPUT (KEYBOARD, MOUSE, JOYSTICK , TOUCHSCREEN)...

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.

Signed-off-by: Wei Shuai <cpuwolf@gmail.com>
---
 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


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH] Input: break joystick limitation of maximum 80 buttons
  2020-07-10  6:51 [PATCH] break joystick limitation of maximum 80 buttons Wei Shuai
@ 2020-07-11 23:54 ` Wei Shuai
  2020-07-13  9:06   ` Andy Shevchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Wei Shuai @ 2020-07-11 23:54 UTC (permalink / raw)
  To: open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
	Dmitry Torokhov
  Cc: cpuwolf, Greg Kroah-Hartman, Jeffrey Hugo, Andy Shevchenko,
	Manivannan Sadhasivam, Borislav Petkov, Mattias Jacobsson,
	Mark Gross, Russell King, Erwan Velu, Thomas Gleixner, open list

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

Signed-off-by: Wei Shuai <cpuwolf@gmail.com>
---
 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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] Input: break joystick limitation of maximum 80 buttons
  2020-07-11 23:54 ` [PATCH] Input: " Wei Shuai
@ 2020-07-13  9:06   ` Andy Shevchenko
  2020-07-13 10:29     ` Wei Shuai
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Shevchenko @ 2020-07-13  9:06 UTC (permalink / raw)
  To: Wei Shuai
  Cc: open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
	Dmitry Torokhov, Greg Kroah-Hartman, Jeffrey Hugo,
	Manivannan Sadhasivam, Borislav Petkov, Mattias Jacobsson,
	Mark Gross, Russell King, Erwan Velu, Thomas Gleixner, open list

On Sun, Jul 12, 2020 at 07:54:54AM +0800, Wei Shuai wrote:
> 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


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?


-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Input: break joystick limitation of maximum 80 buttons
  2020-07-13  9:06   ` Andy Shevchenko
@ 2020-07-13 10:29     ` Wei Shuai
  0 siblings, 0 replies; 4+ messages in thread
From: Wei Shuai @ 2020-07-13 10:29 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
	Dmitry Torokhov, Greg Kroah-Hartman, Jeffrey Hugo,
	Manivannan Sadhasivam, Borislav Petkov, Mattias Jacobsson,
	Mark Gross, Russell King, Erwan Velu, Thomas Gleixner, open list

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?

Andy Shevchenko <andriy.shevchenko@linux.intel.com> 于2020年7月13日周一 下午5:06写道:
>
> On Sun, Jul 12, 2020 at 07:54:54AM +0800, Wei Shuai wrote:
> > 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
>
>
> 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?
>
>
> --
> With Best Regards,
> Andy Shevchenko
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-07-13 10:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-10  6:51 [PATCH] break joystick limitation of maximum 80 buttons Wei Shuai
2020-07-11 23:54 ` [PATCH] Input: " Wei Shuai
2020-07-13  9:06   ` Andy Shevchenko
2020-07-13 10:29     ` Wei Shuai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).