web-dev-qa-db-ja.com

WindowsHID準拠のゲームパッドの混乱

ゲームパッドを正しく動作させるのに問題があります。 Windowsの入力デバイスシステムはいつも私を混乱させてきましたが、いくつかの調査の後、私は以下を集めました:

  • XInputは、ゲームパッド入力用にDirectXで最新/最も広く使用されているAPIです。
  • DirectInputは、あまり人気がない/使用されていない古いAPIです(XInputのセットアップがより簡単で高速であるため)
  • XInputはXboxコントローラーのみをサポートします(Xbox360およびおそらくXboxOneも同様)
  • DirectInputは、一般的なHID準拠のゲームパッドやXboxコントローラーを含むすべてのタイプの入力デバイスをサポートします(ただし、ヘッドセットのサポートなど、XInputよりも機能は少なくなります)

私の問題は、Bluetoothゲームパッド( Amazon Fire TVゲームコントローラー )をWindows上のゲームで動作させることです。明らかに、Xbox 360コントローラーではないため、XInputのみのゲームで動作させるには、回避策が必要になります。 このプロジェクト すべての入力デバイスがXbox360入力をエミュレートできるため、XInputと互換性があるため、ほぼ完璧に機能しているようです。

しかし、私はいくつかの障害に遭遇しました、そして私はそれらが誰のせいであるか、またはそれらを修正する方法を本当に知ることができません。 1つの問題は、L/Rトリガーがまったく検出されないことです。 [デバイスとプリンター]メニューに移動し、コントローラーの[ゲームコントローラー設定]をクリックすると、次の使い慣れた画面から入力をテストできます。

enter image description here

トリガーを押しても何も起こりません。さらに、気づいたら、15個の入力ボタンがあります。私がテストしているコントローラーには15個のボタンがあるので、これは正しいですが、これらのボタンのうち4個は、OSを独自に制御するメディアボタンです。たとえば、コントローラーのホームボタンを押すと、インターネットブラウザーが開き、ホームページに移動します。他のメディアボタンを押しても何も起こらないようです。

私の質問は:

  1. トリガーを機能させるにはどうすればよいですか?これはドライバーの問題ですか? HID準拠のデバイスは正常に機能するはずだと思いました。 Windowsが15個のボタンすべて、2つのアナログスティックと1つの十字キーを検出した場合、なぜ2つのトリガーを検出できなかったのでしょうか。 HID準拠のゲームパッドはアナログトリガーをサポートしていませんか、それともこれはコントローラー自体またはWindowsのゲームパッドドライバーのバグ/問題ですか?

  2. デバイスの4つのメディアボタンを制御するにはどうすればよいですか?ゲームパッドにボタンがあり、インターネットブラウザに移動できるのは、まったく役に立たず、煩わしいことです。

  3. これにカスタムドライバーが絶対に必要な場合、メーカーとの関係や支援がなくても、自分でドライバーを作成することは可能でしょうか?

ありがとう!

3
AlexRamallo

DirectInputとXinputの違いについては正しいですが、directInputapiではより多様なコントロールが可能であると主張する人もいるかもしれません。 directInputデバイスとして登録するコントローラーがあり、Xinputのみを受け入れるゲームがある場合は、x360ce(​​@ http://www.x360ce.com/ )をお勧めします。これにより、コントローラーの実際の入力をマスクしながら、directInputをゲームのXinputに変換します。ゲームディレクトリ内でx360ce.exeを実行し、x360ceWebサイトの指示に従うだけです。残念ながら、すべてのゲームと互換性があるわけではなく、コントローラーと互換性がない場合もあります。ただし、一見の価値があります。後でx360ceの開発者にフィードバックを残してください。これがお役に立てば幸いです。

2
Manwithgun