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

时间:2013-07-19 21:54:00

标签: windows usb driver joystick joypad

我正在为我拥有的游戏控制器创建驱动程序(钴通量www.cobaltflux.com)。物理控制器本身有九个面部按钮和两个控制盒按钮(启动/选择)。控制盒有一个USB端口,但据我所知,没有人曾经为它编写驱动程序。我想要的最终结果是能够通过USB端口插入钴通量,并让Windows将其识别为游戏控制器。

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

由于我个人并不认识任何能够让我在正确的轨道上找到解决这个问题的工作流程的人,我在这里问。我想这种方法类似于:

我通过USB连接设备

我打开一个程序来查看推送按钮对USB通道的影响

我编写了一个程序,将来自USB端口的信号连接到Windows所具有的游戏控制器驱动程序

可能值得注意的是,我需要JoyPAD支持而不是joySTICK支持按钮,因为播放将涉及一次按下任意数量的按钮,操纵杆通常只在任何给定时间记录一个输入方向。

非常感谢任何建议或帮助。我无法确定从哪里开始。

1 个答案:

答案 0 :(得分:4)

我现在有一年多的问题,但我还没有找到合适的解决方案。

当您通过USB插入打击垫时,它会通过设备ID和供应商ID通知它是哪个设备。 Windows即插即用开始搜索驱动程序。这种机制发现它是一个定点设备(在我的情况下是一只或两只鼠标),并确保它被视为原始数据输入设备。来自这些设备的输入被转换为OS处理的消息。解决方案似乎是将这样的原始输入设备的消息传递给正确的处理程序。在我的情况下,两个鼠标都被识别为鼠标,并且消息由来自第三个鼠标的处理器使用,该第三个鼠标实际上是我的指针设备。我没有足够的C ++编码经验来深入了解rawinput API。我刚收到一个有趣的链接作为我的问题的回答:http://www.icculus.org/manymouse/至少这给出了我的问题的答案。可能它会给你写驱动程序的想法!祝好运 !!!斯蒂芬