[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CACa7zymSNJJy1MJeNzzH22MAOH4=fxu_GJcdaY5JRqM3A_jkGA@mail.gmail.com>
Date: Sun, 3 Dec 2023 20:50:19 +0800
From: Wei Shuai <cpuwolf@...il.com>
To: Dmitry Torokhov <dmitry.torokhov@...il.com>,
"open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)..."
<linux-input@...r.kernel.org>,
open list <linux-kernel@...r.kernel.org>
Subject: [PATCH] Input: expand keycode space
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@...il.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
Powered by blists - more mailing lists