通过USB连接的硬件编写游戏控制器驱动程序

16

我想为我拥有的一个游戏手柄创建一个驱动程序(cobalt flux www.cobaltflux.com)。物理控制器本身有九个面按钮和两个控制框按钮(开始/选择)。控制箱有一个usb端口,但据我所知没有人写过它的驱动程序。我想要的最终结果是能够通过usb端口插入cobalt flux并使Windows将其识别为游戏手柄。

我有一些编程经验。我是UC戴维斯分校的计算机科学本科高年级学生,并在一家大型嵌入式系统公司实习,但是这个项目涉及到我没有经验的几个方面:通过USB端口进行硬件和软件的接口,调查我没有构建的硬件的反馈(当我按下按钮时哪些位点亮?),以及创建Windows驱动程序和程序。

由于我个人不认识任何能够为我设定解决此问题的工作流程的人,因此我在这里询问。我想象的方法可能像以下这样:

我通过usb连接设备

我打开一个程序来轮询按钮的推送效果对USB通道的影响

我编写一个程序,将USB端口的这些信号与Windows存在的游戏控制器驱动程序进行接口

值得注意的是,由于玩耍将涉及按下任意数量的按钮,而操纵杆通常只在任何给定时间注册一个方向的输入,因此我需要joyPAD支持而不是joySTICK支持。

任何建议或帮助都将不胜感激。我很难找出从哪里开始。


投票关闭,原因为不清楚或者过于宽泛。 - Ciro Santilli OurBigBook.com
4
我有一个与之类似的问题,感觉问题并不过于宽泛或不清晰。我有一个罗技方向盘控制器,在W8或W10系统中不被支持。虽然系统可以识别它,但无法读取其输入。我只想编写一个程序监听USB端口,以便将此信息映射到游戏控制器接口上。 - Tanoshimi
1
同样对此感兴趣。投票不关闭。 - Evan
1个回答

7
我已经有一个完全相同的问题超过一年了,但我还没有找到正确的解决方案。
当您通过USB插入平板电脑时,它会宣布设备ID和供应商ID是哪个设备。Windows即插即用开始搜索驱动程序。此机制发现它是一个指针设备(在我的情况下是一个或两个鼠标),并确保将其视为原始数据输入设备。这些设备的输入被转换为OS处理的消息。解决方案似乎是将此类原始输入设备的消息传递给正确的处理程序。在我的情况下,这两个鼠标都被识别为鼠标,并且与来自第三个实际上是我的指针设备的鼠标发送的消息使用相同的处理程序。我对C++编码不够熟练,无法深入挖掘原始输入API。我刚刚收到了一个有趣的链接作为我的问题的答案:http://www.icculus.org/manymouse/,至少这给出了我的问题的答案。也许它会给你编写驱动程序的想法!祝你好运!! Stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接