Есть ли способ определить устройство ввода, подключенное к ПК? (например, геймпад, аркадный джойстик и т. д.)? В Xbox One SDK каждое устройство в Windows :: Xbox :: Input :: IController имеет свой собственный идентификатор, но Windows :: Gaming :: Input :: IGameController не имеет полей идентификаторов. Как определить подключенные устройства? Как определить, какой контроллер был удален, а какой еще активен?
Идентификация устройства ввода
Ответы (1)
В UWP мы можем использовать классы в Windows .Gaming. Input Namespace для обнаружения и отслеживания игровых устройств ввода. Поскольку вы добавили в свой вопрос тег gamepad, Я, например, воспользуюсь геймпадом.
Для обнаружения и отслеживания геймпадов мы можем использовать класс геймпада < / а>. Класс 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);
}
}
Если вы хотите определить, какой контроллер был удален, я думаю, вы можете воспользоваться index. Для получения дополнительной информации см. Обнаружение и отслеживание геймпадов.
Что касается других игровых устройств ввода, они похожи на геймпад, вы можете обратиться к документам в разделе Вход для игр.
user
или прослушивание и проверка данных, запущенных наUserChanged
, кажутся многообещающими способами. - person George   schedule 06.03.2017