web-dev-qa-db-ja.com

WindowsUWPでのXboxOneのコントローラーサポート

XboxOneをターゲットとするUWPアプリの入力をどのように処理するのか疑問に思っています。 DirectInputに気づきましたが、ユースケースで2つの問題があります。

  1. [〜#〜] msdn [〜#〜] から、Xbox360コントローラーのみをサポートしているようです

    XInputは、アプリケーションがXbox 360 Controller forWindowsから入力を受信できるようにするAPIです。コントローラのランブルエフェクトと音声入力および出力がサポートされています。

  2. DirectXとそのすべてのAPI(Direct2d、Direct3D、Xinputなど)は、C/C++でのみサポートされています。つまり、XinputがXbox Oneコントローラーをサポートしていても、C#やJavaScriptを使用して真にユニバーサルなアプリを開発することはできませんでした。

WindowsUWPアプリでXboxOneコントローラーのサポートをサポートするために(少なくともC#に関する限り)どのようなオプションがありますか?

16
an earwig

Windows.Gaming.Input 名前空間を見てください。その GamePad クラスはUniversal APIコントラクトにあり、すべてのデバイスファミリと言語で利用できます。

13

@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に対してリンクできることに注意してください。このアダプターには、ヘッドセットオーディオも存在しません。

4
Dylan Ellington

DirectXとそのすべてのAPI(Direct2d、Direct3D、Xinputなど)はC/C++でのみサポートされています

ネイティブでのみサポートされていますが、C#からDirectInputを実装することは、 SharpDX を使用して簡単です。
ただし、トリガー軸が1つにマージされているため、DirectInputはXBコントローラーの読み取りにはあまり使用されません。また、トリガーが保持されていない場合と両方のトリガーが保持されている場合を区別することはできません。

0
Clive Galway