問題タブ [gamepad]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - フォーカスされていないウィンドウで XInput ゲームパッドの状態を受け取る方法は?
シナリオ:クアッドコプター用の基本的な制御プログラムを作成しました。基本的に、ゲームパッドが接続されたノートブックを使用してクアッドコプターにコマンドを送信します。両方が無線で相互に接続されています。この設定は驚くほどうまく機能しますが、次の点に注意してください。
質問:ノートブックで実行されている Win32 アプリケーションは、ウィンドウがフォーカスされていない場合でも、ゲームパッドの状態の変化をどのように受け取ることができますか? AutoHotKey や AutoIt などの一部のプログラムがまさにそれを提供していることは知っていますが、公式の XInput ドキュメントでもインターネットでもドキュメントを見つけることができませんでした。
問題は、同じノートブックで ArduPilot の Mission Planner ソフトウェアを同時に使用することがあるということです。そのため、Mission Planer でテレメトリ データを調べたいと思うたびに、ゲームパッドを処理するアプリケーション ウィンドウがフォーカスされなくなり、ゲームパッドの状態変更の受信が停止します。これは非常に面倒で、正直なところ、危険でもあります。常に機能するラジコンを持っている必要があるからです。
では、ゲームパッド XInput を特定のウィンドウ ハンドルに「ロック」する方法はありますか? (Win32) アプリケーションは、Visual Studio を使用して C++ で記述されています。
編集:ネイティブの XInput API を使用するため、XInputGetState() を使用します。私のメッセージ ループは、翻訳するメッセージ/DispatchMessage() がないたびに XInputGetState() をポーリングするように設計されており、WinMessages はノンブロッキング PeekMessage() でポーリングされます。
android - ゲームパッドが必要 - Android TV - アプリのリリース
ゲームパッドをサポートする Android TV にアプリをアップロードしましたが、必須ではありません。残念ながら、Google Playストアはパッドが必要であることを示しています. 私はそれがマニフェストを持つものであることを知っていますが、私には良さそうです。
これは私が推測する重要な部分です
uses-feature android:name="android.hardware.gamepad" android:required="false"
c++ - コントローラーのアナログスティックをマウスにマップするにはどうすればよいですか
さて、ゲームパッドのアナログスティックを使ってデスクトップのマウスカーソルを動かそうとしています。問題は、マウスの絶対位置を使用せずに、試行 2 と同じ滑らかさを得る必要があることです。カーソルは、現在の位置に対して相対的に移動する必要があります。これは、多くのアプリケーション (主にビデオ ゲーム) もマウスを絶対位置に設定するためです。これにより、アプリケーションと試行 2 がマウスの制御をめぐって互いに戦います。
試行 1 (相対)
このソリューションは機能しますが、GetCursorPosition と SetCursorPosition は整数に基づいているため、丸めの問題が発生します。その結果、小さなアナログの動きは常に切り捨てられるため、小さな動きは登録されません。視覚的に言えば、アナログ スティックの小さな動きは、斜めに動かそうとしても、マウスを X 軸または Y 軸に沿って動かすだけです。
試行 2 (絶対)
このソリューションはうまく機能し、蓄積されたアナログの動きを補間する結果として、マウスは最小の動きに反応し、非常に自然に動きます。ただし、マウスを絶対位置 (mouseTargetPosition) に設定するため、このソリューションは問題になります。
android - 十字キーの動きとジョイスティックの動きを区別する方法は?
1 つは方向パッド用、もう 1 つはアナログ ジョイスティック用 (同じゲームパッド上) です。
問題は、onGenericMotionEvent
コールバックで両方に同じ情報があり、MotionEvent
それらを区別できないことです。
どの種類の入力が使用されているかを特定することはできますか? どのように?
tvos - Siri Remote の音量ボタンとホーム ボタンの押下を検出する
tvOS Siri Remote でいくつかのボタンが押されたことを検出するのは比較的簡単です: 一時停止/再生ボタン、タッチパッド領域、そしてわずかに手間がかかるMENU
ボタンです。+
しかし、と-
ボタン、または Siri またはホーム ボタンの機能を検出またはオーバーライドする方法はないようです。
それともありますか?
usb - USB HID API でプッシュされた両方のゲームパッド トリガーを検出する方法は?
RawInput + Windows USB HID API を使用して、ゲームパッド ボタンが押されたときに WM_INPUT メッセージを受け取り、ゲームパッドの状態を取得します。
問題があります: 2 つのトリガーが同じ軸で機能するため、2 つのトリガーが同時に押されているかどうかを判断できません。OS Windows ゲームパッド テスト アプリケーションを起動すると、同じ動作が見られます。しかし、押されたこれら 2 つのボタンを区別する必要があります。
XInput は必要に応じて機能することに注意してください。2 つのトリガーに対して 2 つの軸が提供されますが、XInput は使用したくありません。これは XBox コントローラー専用であり、Xbox 以外のコントローラーが世界中に多数存在するためです。
USB HID API を介して 2 つの軸を読み取る方法があるはずですが、今まで見つけることができませんでした。問題は解決しましたか?
ゲームパッド: XBox 360 を使用 (ただし、その他はサポートされている必要があります)。
OS:ウィンドウズ7。
IDE: ビジュアル スタジオ 2010。
言語: C++
c - Linuxシステムでキャラクターデバイス/ゲームパッドからの入力を直接処理するにはどうすればよいですか?
RPM ベースのディストリビューションでの入力にUSB SNES コントローラーを使用する C 言語のプログラムを開発しています。これを操作しやすくするライブラリ、またはデバイスからの入力を適切に読み取ることができるツール (joydev?) はありますか? ゲーム エンジン全体は必要ありません。キャラクターデバイスからの入力専用です。
すでにこれを行っているライブラリがあれば、それは素晴らしいことです (ライブラリが自分で何をするかを見ることができます)。これはリンクだけで閉じることができます。それ以外の場合、これを自分で行う必要がある場合は、いくつかの具体的な質問があります。
質問:
- USB デバイスとゲームパッドとのやり取りをすべて処理する既存の C ライブラリはありますか? 私は喜んで新しいライブラリを学びます。(私のgoogle-fuはここで失敗しました。これが過度に明白である場合は申し訳ありません)
- セッション/初期化間でイベント*名が変わるため、毎回適切なキャラクターデバイスを開くための適切な方法は何ですか?
- アプリケーションからこれらのデバイスからの入力を処理する適切な方法は何ですか? ボタンを押すたびに値がどのようになるかを判断し、キャラクター デバイスをポーリングするときにその入力に基づいてアクションを実行するだけでよいでしょうか?
要するに疑似Cで、こんな感じ?
デバイスの表示方法:
私が見ることができる限り、デバイスのレジスタが適切に表示されていることがはっきりとわかります。
デバイスから読み取ると、割り込みを受信し、デバイスからの入力が 16 進ダンプを使用していることがわかります。
キーを押す (離さない) と、期待どおりに動作するように見えますが、まだコンテキストなしでバッファーから返されているものを解読することはできません。
ボタンを離すと、同様の出力が表示されます。
それは、上で押して離した「上」ボタンです。
リサーチ:
他のライブラリがこれをどのように行うかを判断するために、Python で strace を実行し、pygame
それが開くデバイスと入力の読み取り方法を確認することを考えましたが、使用方法についてはまだ学習中です。また、joydev に関するあいまいな言及もいくつか見ましたが、やはり、それらの使用方法を学んでいません。私は現在それを行っており、価値のあることを学べば結果を投稿します.
さらに、ASCII と hexdump を介してボタンの押下を監視すると、ボタンに基づいて同様の入力があることに注意してください。 0xf53c)。これも常に増加しているように見えますが、私の目的では、おそらく破棄できます。
一部のモジュールまたはパッケージが不足しているため、デバイスを正しくマウントしていない可能性もあります (もう一度、joydev とそれが何をすべきかについて考えます)。私は USB をあまり扱ったことがないので、このタイプのデバイス処理は初めてです。
しばらく探し回っても、探していたものを正確に示すものは何も見つかりませんでしたが、他の質問/トピックへのリダイレクトを喜んで受け入れます.
前もって感謝します!