14

私が持っているゲームコントローラー用のドライバーを作成しようとしています(コバルトフラックス www.cobaltflux.com )。物理的なコントローラー自体には、9 つ​​のフェイス ボタンと 2 つのコントロール ボックス ボタン (開始/選択) があります。コントロール ボックスには USB ポートがありますが、私が知る限り、これまでにドライバーを作成した人はいません。私が望む最終結果は、USBポートを介してコバルトフラックスを接続し、Windowsにそれをゲームコントローラーとして認識させることです.

ある程度のプログラミング経験があります。私は UC Davis のコンピューター サイエンスの学部生で、大規模な組み込みシステム会社でインターンをしていますが、このプロジェクトには、USB ポートを介したハードウェアとソフトウェアのインターフェイス、ハードウェアからのフィードバックの調査など、私が経験したことのない側面がいくつか含まれています。ビルドしない (ボタンを押すとどのビットが点灯するか)、Windows 用のドライバーやプログラム全般を作成します。

この問題を解決するためのワークフローの正しい軌道に乗せることができる人を個人的に知らないので、ここで尋ねています. アプローチは次のようになると思います。

USB経由でデバイスを接続します

ボタンを押すことによる USB チャネルへの影響をポーリングするプログラムを開きます。

USBポートからのこれらの信号を、Windowsが持つゲームコントローラードライバーにインターフェースするプログラムを作成します

プレイには一度に任意の数のボタンを押す必要があり、ジョイスティックは通常、特定の時点で一方向の入力しか登録しないため、ボタンのジョイスティックのサポートではなく、ジョイパッドのサポートが必要であることに注意してください。

アドバイスや助けをいただければ幸いです。どこから始めればよいか分からず困っています。

4

1 に答える 1

6

私は1年以上前からまったく同じ問題を抱えており、まだ正しい解決策を見つけていません.

USB 経由でパッドを接続すると、デバイス ID とベンダー ID がどのデバイスであるかが通知されます。Windows プラグ アンド プレイがドライバーの検索を開始します。このメカニズムは、それがポインティング デバイス (私の場合は 1 つまたは 2 つのマウス) であることを認識し、生データ入力デバイスとして扱われるようにします。これらのデバイスからの入力は、OS によって処理されるメッセージに変換されます。解決策は、そのような生の入力デバイスのメッセージを正しいハンドラーに渡すことのようです。私の場合、2 つのマウスは両方ともマウスとして認識され、メッセージは、実際には私のポインティング デバイスである 3 番目のマウスからのメッセージと同じハンドラーによって使用されます。rawinput API を掘り下げるには、C++ コーディングの経験が十分ではありません。私の質問に対する答えとして興味深いリンクを受け取りました: http://www.icculus.org/manymouse/少なくともこれは私の問題に対する答えを与えます。ドライバーを作成するためのアイデアが得られるかもしれません! 幸運を !!!ステファン

于 2013-08-19T17:30:23.750 に答える