如何使用操纵杆按钮处理设备?

时间:2014-12-05 15:01:35

标签: c++ winapi sdl

我有音频设备,其中包括一个操纵杆按钮。(plantronics starset耳机)

在我的应用程序中,我应该同时使用多个这样的设备,我应该得到有关点击的信息以指示声音。我无法将音频设备与操纵杆按钮耦合,因为SDL库为所有不同设备获取相同的oemname。我们可以在控制面板中看到不同的ID,在游戏控制器窗口中可以看到以下图片中的相同ID(Controller PanelGame Controllers)。

如何连接设备(已经是相同的设备,但我无法获得操纵杆按钮的真实名称),如何以编程方式获得C ++中操纵杆(usb)设备的真实名称?

1 个答案:

答案 0 :(得分:0)

我通过在regedit中跟踪设备解决了这个问题。我的设备是音频麦克风操纵杆设备,也是HID。因此,Windows会分别识别每个设备。在注册表中,声音,音频和操纵杆的相同设备记录具有相同的parentID值。所以我可以将操纵杆设备与具有该parentID值的声音设备相匹配。

SDL使用Directx以相同的顺序枚举设备。使用directx,我们可以从directx设备的“DIPROP_GUIANDPATH”属性中获取“parentID”值。因此,我从Directx获取设备的parentID值,并将该设备名称与具有相同SDL索引的设备相匹配。所以我可以得到按下按钮的操纵杆的名称。如果有人提出要求,我可以提供详细信息。