输入设备识别

时间:2017-03-06 11:21:42

标签: c++ windows uwp gamepad

有没有办法识别连接到PC的输入设备? (如游戏手柄,街机棒等)?在Xbox One SDK中,Windows :: Xbox :: Input :: IController中的每个设备都有自己的ID,但Windows :: Gaming :: Input :: IGameController没有任何id字段。 如何识别连接的设备?如何确定删除哪个控制器以及哪个控制器仍处于活动状态?

最好的问候,拉里

2 个答案:

答案 0 :(得分:0)

在UWP中,我们可以使用Windows​.Gaming​.Input Namespace下的类来检测和跟踪游戏输入设备。正如您在问题中添加了标记一样,我将以游戏手柄为例。

要检测和跟踪游戏手柄,我们可以使用Gamepad ClassGamepad类提供静态属性Gamepads,它是当前连接的游戏手柄的只读列表。请不要建议您维护自己的集合,而不是通过Gamepads属性访问它们。

我们收集完成后,我们就可以使用GamepadAddedGamepadRemoved个事件来跟踪游戏手柄。作为他们的名字,当添加或删除游戏手柄时会引发这两种方法。以下是一个简单的示例:

auto myGamepads = ref new Vector<Gamepad^>();

for (auto gamepad : Gamepad::Gamepads)
{
    myGamepads->Append(gamepad);
}

Gamepad::GamepadAdded += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
    myGamepads->Append(args);
}

Gamepad::GamepadRemoved += ref new EventHandler<Gamepad^>(Platform::Object^, Gamepad^ args)
{
    unsigned int indexRemoved;

    if(myGamepads->IndexOf(args, &indexRemoved))
    {
        myGamepads->RemoveAt(indexRemoved);
    }
}

如果您想确定删除了哪个控制器,我认为您可以利用该索引。有关详细信息,请参阅Detect and track gamepads

对于其他游戏输入设备,它们类似于游戏手柄,您可以参考Input for games下的文档。

答案 1 :(得分:0)

输入设备是键盘鼠标扫描仪,麦克风这些都用于在计算机中输入数据,您可以更多地了解PC input devices