Dear Dmitry Torokhov, I have tried this change on Ubuntu, it really works. The small fix will break the limitation of the max button number of Joystick. Please help to review the patch, I have sent the patch in a different email thread. Wei Shuai <cpuwolf@xxxxxxxxx> 于2020年7月10日周五 上午7:10写道: > > Dear Joystick Maintainer, > > we found Linux kernel has max joystick buttons up to 80, no more > > We are selling a USB joystick device QMCP737C for flight simulator, > which is nothing but a common USB joystick. it has 104 buttons > > Product link > https://x-plane.vip/quickmade/qmcp737c/ > > it works good on Windows, Mac, but not on Linux. > Linux kernel exposes /dev/input/js0 max to 80 buttons, 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 continuous space, general 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 it > does not align with char?integer? the answer is no > > so may I ask to expand KEY_MAX to such as 0x4ff? or you need me to > submit patch for it, I am OK > > Thank you