Linux内核USB HID游戏摇杆20年来都存在按键数量限制

本来是奎克质造生产的模拟飞行设备QMCP737C

https://x-plane.vip/quickmade/qmcp737c/

我在写软件,支持全平台win/lin/mac,和模拟飞行平台X-Plane 11保持一致。结果WIN/MAC对设备支持没问题,插上就可以用。

但是Linux,插上也可以用,但是只剩80个按键,明明我的设备是104个按键,结果只识别出80个按键。

Linux内核USB HID游戏摇杆20年来都存在按键数量限制

然后用各种关键字max USB HID button number之类一顿GOOGLE搜索,无果。

我记得Linus说过,你不要以为所谓别人会解决问题,如果问题是你发现的,那么你就是解决问题的最佳人选。此话值得回味。

好吧先看看Linux内核代码,这个神奇的数字80到底来自何方?

一顿内核搜索,无果。

80=0x50,再是一顿代码搜索,同样无果。

终于读了一下逻辑,发现80确实有来头,下载ubuntu内核代码,经过几个小时的下载,编译,再修改编译,然后奇迹发生了。104个按键全部出来。

Linux内核USB HID游戏摇杆20年来都存在按键数量限制

提交代码给内核社区,未来受益全人类了

https://patchwork.kernel.org/patch/11655815/