Ответ 1
Посмотрите на пространство имен Windows.Gaming.Input. Его класс GamePad находится в контракте Universal API и доступен для всех семейств устройств и языков.
Мне интересно, как я должен обрабатывать ввод для приложений UWP, ориентированных на Xbox One. Я заметил DirectInput, но я вижу две проблемы с ним для моих случаев использования:
Из MSDN кажется, что он поддерживает только контроллеры Xbox 360
XInput - это API, который позволяет приложениям получать входные данные от контроллера Xbox 360 для Windows. Поддерживаются эффекты грохота контроллера и голосовой ввод и вывод.
DirectX и все его API (Direct2d, Direct3D, Xinput и т.д.) Поддерживаются только в C/C++. Это означает, что даже если Xinput поддерживает контроллеры Xbox One, я не смог бы использовать С# или JavaScript для разработки действительно универсальных приложений.
Какие варианты у меня есть (по крайней мере, в том, что касается С#) для поддержки поддержки контроллера Xbox One в приложении Windows UWP?
Посмотрите на пространство имен Windows.Gaming.Input. Его класс GamePad находится в контракте Universal API и доступен для всех семейств устройств и языков.
Чтобы вернуть @Rob Caplan - MSFT с источником, blog из Microsoft Developer Network заявляет:
Windows 10: существует новый API WinRT в пространстве имен Windows.Gaming.Input для универсальных приложений Windows. Этот API поддерживает как общий контроллер Xbox 360, так и контроллер Xbox One, включая доступ к левым/правым триггерным двигателям. Последняя версия GamePad реализована с использованием этого нового API при построении для Windows 10. Обратите внимание, что существующие приложения на базе Windows Store, основанные на XInput, могут связываться с xinputuap.lib, который является адаптером для нового API для универсальных приложений Windows - этот адаптер также не поддерживает звук гарнитуры.
DirectX и все его API (Direct2d, Direct3D, Xinput и т.д.) Поддерживаются только в C/C++
Да, поддерживается только изначально, но реализация DirectInput из С# тривиальна с использованием SharpDX
Однако DirectInput не слишком используется для чтения контроллеров XB, поскольку оси триггеров объединены в одну, и невозможно провести различие между отсутствием удержания триггеров и удержанием обоих триггеров.