Windowsのマウスとキーボードの余分な入力を検出するための小さな証明を書いています。それは可能ですか?また、Windows APIの大量のボタンから入力を検出するにはどうすればいいですか?私が読んだところでは、5つのボタンのサポートしかありませんが、多くのマウスはそれより多くのボタンを持っています.Windows APIでも私の質問は可能です.Windowsの制約のなかで可能ですか?最大11個のマウスボタンをサポートしていますか?
0
A
答えて
2
Raw Input APIを使用して、WM_INPUT
メッセージをマウス/キーボードドライバから直接受け取ることができます。 5つの標準マウスボタン(左、中央、右、x1、x2)の構造フィールドがあります。標準的なボタンのほかに、追加のボタンは、必要に応じてコーディングする必要のあるベンダー固有のデータによって処理されます。 APIを使用すると、生の値にアクセスできますが、APIの解釈方法については、ベンダーのドライバのマニュアルを参照する必要があります。場合によっては、余分なボタンがマウス入力ではなくキーボード入力として実際に報告されることがあります。
を使用してDirectInput devicesと対話し、Mouse DataとKeyboard Dataを受け取ってみてください。
また、DirectInputの後継バージョンであるXInput APIを使用することもできます。ただし、XInputはDirectInputよりも制限されています.XInputは主にXbox 360コントローラとのやり取り用に設計されているため、DirectInputは他のコントローラとやり取りするように設計されています。詳細はXInput and DirectInputを参照してください。
0
非常にシンプル:GetKeyState
SHORT WINAPI GetKeyState(
_In_ int nVirtKey
);
ロジックを使用すると、次です:
- は、ボタンを押していないユーザーに依頼ドロップボタン状態押され
- すべてのボタン0-255のための
- ループ
GetKeyState
(いくつかの仮想キーは、それが押されていなくても押すことができます、理由は分かりません) - は、今、あなたはすべてのユーザー でボタンを押す表示されます配列を監視し、キーからボタン
- を押すようにユーザーに依頼
- (十分にあるループ間の休止が25msの場合)キーは、残りのキーコードのスレッドを監視開始し、任意の構造に保存します
他のユーザー入力デバイスでは、直接入力と他のすべての入力が可能です。キーボードとマウスの場合 - GetKeyState
が最適です。
関連する問題
- 1. 最大でn個のJavaスレッドを実行しています
- 2. iOS 11(ベータ版)のwebKitはWebRTCをサポートしていますか?
- 3. C++ 11はC11の新機能をサポートしていますか?
- 4. IE 11 localStorageをサポートしていない
- 5. uCLinuxはC++ 11をサポートしていますか?
- 6. Visual Studio 2010/11ベータポータブルクラスライブラリプロジェクトはINotifyPropertyChangedをサポートしていますか?
- 7. TeamCity Visual Studio AddinはVS 11をサポートしていますか?
- 8. Opera 10はhtml5オーディオタグをサポートしていますが、Opera 11はサポートしていますか?
- 9. コバルトRC 11はウェブオーディオAPIをサポートしています
- 10. Android:レイヤーが最大値を超えています。 GPUでサポートされている寸法(1080x-646、最大= 16384x16384)
- 11. boostはC++ 11のstd :: tupleのシリアル化をサポートしていますか?
- 12. HTML5キャンバスはブラウザベースの拡大をサポートしていますか?
- 13. Python Spark-Streamingはn個の最大キーを取得します
- 14. Meteorコレクションを最大1000個まで公開します
- 15. WebWorkersはIE 11でサポートされていますか?
- 16. 最後の50個のイベント値をキャッシュして最大値を計算する
- 17. emacsで企業モードのclangバックエンドをサポートする方法はC++ 11をサポートしていますか?
- 18. PDOException:SQLSTATE [IMSSP]:パラメーター番号65536をバインドしようとしました。SQL Serverは最大2100個のパラメーターをサポートしています。
- 19. はパラメータ番号2101をバインドしようとしました。SQL Serverは最大2100個のパラメータをサポートしています
- 20. Beanの検証を行う理由最小/最大制約はdouble型をサポートしていませんか?
- 21. どのようにC++コンパイラがC++ 11のアトミックをサポートすることができますか?C++ 11のメモリモデルはサポートしていません
- 22. PhoneGapはiphoneの最新バージョンをサポートしていますか?
- 23. LinqPadは最新のOdataライブラリをサポートしていますか?
- 24. SSMSは最新のUMLバージョンをサポートしていますか?
- 25. 最新のWatirバージョンはEdgeをサポートしていますか?
- 26. C++ 11 visual_studioでのthread_localキーワードのサポート11
- 27. n個のセット間の最大交点
- 28. ionic/cordova - 私のアプリは297個のデバイスしかサポートしていません
- 29. グリッド内で最大4個の製品
- 30. 「オブジェクトはこのプロパティまたはメソッドをサポートしていません」IE10/11
私は見るので、本当にクッキーカッターの答えはありません。私はすべてのハードウェアメーカー固有のドライバを考慮する必要があります。 – Stephen
Raw Input APIを使用している場合は、はい。 DirectInputはもう少し柔軟性があり汎用性があり、最大128個のボタンを扱うことができます(ただし、一度に8つ以上のボタンを処理する方法はわかりませんが、[DIMOUSESTATE2'](https:// msdn ['IDirectInputDevice8 :: GetDeviceState()'](https://msdn.microsoft.com/)を呼び出すと、.microsoft.com/ja-ja/library/windows/desktop/microsoft.directx_sdk.reference.dimousestate2.aspx) en-us /ライブラリ/ windows/desktop/microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdevicestate.aspx))。 –