如何以非弃用的方式访问Windows操纵杆?

我想写一个访问游戏杆Windows应用程序。 这只是一个非常简单的应用程序,它读取值并将它们发送到服务器,所以我没有使用任何游戏编程框架。 不过,我很困惑要使用哪个API。

我查看了多媒体游戏杆API,但是这被描述为由DirectInput取代。 所以我看着DirectInput,但是这也被弃用,以支持XInput。 但是XInput文档仅涉及Xbox360控制器,并且说它不支持“传统DirectInput设备”。

让微软把整个HID操纵杆的使用types委托给垃圾桶,并放弃支持他们自己的专有控制器产品,或者我错过了什么?

最常见的解决方案是使用XInput和DirectInput的组合,以便您的应用程序可以正确访问这两种类型的设备。 微软甚至提供了如何做到这一点的说明 。

请注意,DirectInput不适用于Windows应用商店应用程序,所以如果您打算通过那里分发,这不是一个选项。

像XBox 360控制器这样的XInput设备也可以使用DirectInput,但有一些限制。 值得注意的是,左右触发器将被映射到相同的轴,而不是独立的,振动效果将不可用。