有没有办法识别连接到PC的输入设备? (如游戏手柄,街机棒等)?在Xbox One SDK中,Windows :: Xbox :: Input :: IController中的每个设备都有自己的ID,但Windows :: Gaming :: Input :: IGameController没有任何id字段。 如何识别连接的设备?如何确定删除哪个控制器以及哪个控制器仍处于活动状态?
最好的问候,拉里
答案 0 :(得分:0)
在UWP中,我们可以使用Windows.Gaming.Input Namespace下的类来检测和跟踪游戏输入设备。正如您在问题中添加了gamepad标记一样,我将以游戏手柄为例。
要检测和跟踪游戏手柄,我们可以使用Gamepad Class。 Gamepad类提供静态属性Gamepads,它是当前连接的游戏手柄的只读列表。请不要建议您维护自己的集合,而不是通过Gamepads
属性访问它们。
我们收集完成后,我们就可以使用GamepadAdded和GamepadRemoved个事件来跟踪游戏手柄。作为他们的名字,当添加或删除游戏手柄时会引发这两种方法。以下是一个简单的示例:
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