phi*_*ilm 3 usb xbox360 hid xinput xbox-one
我对这个奇怪的标题表示歉意,但这是我现在能想到的最好的标题。我有一个项目,正在构建一个用作游戏控制器的 HID 设备。我正在考虑模拟该控制器,以便它在 Windows PC 上显示为 Xbox 360 控制器。有一个不错的 API,称为 XInput API,用于游戏,以便它们可以使用 360 控制器。我想利用这一点。
我目前正在研究如何对微控制器进行编码,使其在 PC 上显示为 360 度控制器。我确实有一些问题,希望在该领域具有更多专业知识的人可以帮助我。
1) 我正在研究 HID 标准。我想知道,是否有一个专门为游戏控制器指定的 HID 标准的单独子类,我可以使用它与 XInput API 兼容?或者至少,HID 标准中是否有关于游戏控制器的规定?
2)我在这里找到了有关如何使用 XInput API 的文档:https://learn.microsoft.com/en-us/windows/desktop/xinput/getting-started-with-xinput
现在,我想知道是否有任何文档指定如何使 HID 设备兼容 XInput API,或者我是否会进行一些逆向工程,使用 API 来指导如何对微控制器进行编码?
3) 最后,是否有关于 PC 用于与 Xbox One 控制器通信的 API 的文档?或者它仍然是 XInput API?或者是 Gamepad 类(https://learn.microsoft.com/en-us/uwp/api/windows.gaming.input.gamepad)
感谢您花时间阅读本文,期待您的回复!
我对此有一些信息:
Xbox 360 控制器使用专有协议通过 USB 和无线与 PC\控制台进行通信。它的驱动程序是在XUSB22.sysWindows 自带的驱动程序中实现的(之前是单独的驱动程序包)。在底层,USB 总线上有所谓的 Krypton Packets(有线控制器的代号),而无线控制器则有 Argon Packets(无线控制器 RF 代号)。驱动程序生成 XInput 接口和HID接口(由传统 DirectInput 使用)。在 HID 下,它缺乏振动支持,LT/RT 仅在一根轴下。
Xbox One 控制器使用称为 GIP(游戏输入协议)的专有协议用于 USB 和无线,也使用 HID 用于蓝牙(在较新的控制器上)。驱动程序实现位于xboxgip.sys. 提供XInput接口和USB HID接口。在 HID 下,它缺乏振动,LT/RT 在一根轴下,LT/RT 电机(所谓的脉冲触发器)不工作。无线控制器在物理层使用 Wifi 数据包,其中包含封装的 GIP。
Windows.Gaming.Input - 是除 XInput、HID 和旧版 DirectInput API 之外的新 WinRT/UWP API。它在内部使用 XUSB/GIP/HID (通过XusbGameControllerProvider、GipGameControllerProvider、HidGameControllerProvider)。它是在 PC 上使用 Xbox One 控制器的本机接口,因为您只能通过此 API 使用脉冲触发器。
您可以尝试通过 IDA PRO 调试器、USB 嗅探等对这些协议/驱动程序进行逆向工程。 PDB 符号可从 Microsoft 公共 PDB 服务获取(IDA 将自动下载它们): xusb.sys xboxgip.sys
| 归档时间: |
|
| 查看次数: |
13514 次 |
| 最近记录: |