XboxOneをターゲットとするUWPアプリの入力をどのように処理するのか疑問に思っています。 DirectInputに気づきましたが、ユースケースで2つの問題があります。
[〜#〜] msdn [〜#〜] から、Xbox360コントローラーのみをサポートしているようです
XInputは、アプリケーションがXbox 360 Controller forWindowsから入力を受信できるようにするAPIです。コントローラのランブルエフェクトと音声入力および出力がサポートされています。
DirectXとそのすべてのAPI(Direct2d、Direct3D、Xinputなど)は、C/C++でのみサポートされています。つまり、XinputがXbox Oneコントローラーをサポートしていても、C#やJavaScriptを使用して真にユニバーサルなアプリを開発することはできませんでした。
WindowsUWPアプリでXboxOneコントローラーのサポートをサポートするために(少なくともC#に関する限り)どのようなオプションがありますか?
Windows.Gaming.Input 名前空間を見てください。その GamePad クラスはUniversal APIコントラクトにあり、すべてのデバイスファミリと言語で利用できます。
@Rob Caplan-ソース付きのMSFTをバックアップするには、Microsoft Developer Networkからのこの blog は次のように述べています。
Windows 10:ユニバーサルWindowsアプリのWindows.Gaming.Input名前空間に新しいWinRTAPIがあります。このAPIは、Xbox 360 CommonControllerとXboxOne Controllerの両方をサポートし、左右のトリガーモーターへのアクセスも含まれます。 GamePadの最新バージョンは、Windows 10用にビルドされたときにこの新しいAPIを使用して実装されます。既存のXInputベースのWindowsストアアプリケーションは、ユニバーサルWindowsアプリ用の新しいAPIのアダプターであるxinputuap.libに対してリンクできることに注意してください。このアダプターには、ヘッドセットオーディオも存在しません。
DirectXとそのすべてのAPI(Direct2d、Direct3D、Xinputなど)はC/C++でのみサポートされています
ネイティブでのみサポートされていますが、C#からDirectInputを実装することは、 SharpDX を使用して簡単です。
ただし、トリガー軸が1つにマージされているため、DirectInputはXBコントローラーの読み取りにはあまり使用されません。また、トリガーが保持されていない場合と両方のトリガーが保持されている場合を区別することはできません。