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

博主在开发跨平台模拟飞行设备软件时遇到Linux系统仅识别80个按键的问题,深入研究内核代码后发现数字80的来源,并成功修改内核解决这一限制,使104个按键全部可用。已提交内核补丁并分享了自定义内核下载链接。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

一顿80内核搜索,无果。

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

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

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

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

我编译的测试内核linux-image-4.15.18_2.0.qmcp737c_amd64.deb,这个内核,我连Nvidia Vulkan都能跑起来,所以也可以用于运行X-Plane 11.50。可以免费下载

https://download.csdn.net/download/cpuwolf/12600014

自定义新内核

关于input驱动的官方信息在这里

https://www.kernel.org/doc/Documentation/input/input.txt

对于飞行模拟平台X-Plane 11.50b14,从启动的log看,ring3 APP识别到了设备,但是依然是80个按键,应该和/dev/input/event3的代码相关

0:00:04.305 D/HID: Hardware ADDED(0483, 5680) - QuickMake QMCP737C at path /dev/input/event3 - Has 79 buttons, 0 hat switch
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值