最良の選択肢は、ジョイスティック「キーボード」を購入して、デバイス (USB HID) を非キーボード/非マウスとして読み取ることができるようにすることです (キーボードとマウスは OS によって制限されており、ハードコードされているためバイパスできません)。デバイス管理に移動します。)
私がお勧めするのは、キーボードがジョイスティックとして登録できる PI Engineering のキーボードを探すことです。彼らは、デバイスでキーを押すことをシミュレートして、Windows メッセージング キューでキーを送信する (キーボードをシミュレートする) カスタム マッピング ソフトウェアを持っています。代わりに、SDK を使用してデバイスに対して直接プログラムするだけで (各キーは単なるジョイスティック ボタンであるため)、POS ソフトウェアに干渉することはありません。
PI Engineering プログラマブル キーボード
USB アクセスの説明(リンクが切れた場合に関連するセクションを以下に示します)
マイクロソフトウィンドウズ
Windows ドライバー開発キット HID
Windows DDK HID API は、USB HID を厳密に反映する複雑で低レベルの API であるという点で、Apple HID マネージャーに似ています。プログラムは、Microsoft がこの API から意図的にブロックしたキーボードとマウスを除いて、入力と出力の両方のほぼすべてのデバイスにアクセスできます。これまでに説明した他の API とは異なり、読み取りメカニズムの性質上、キューからイベントを読み取る専用のスレッドがないと使用するのは非常に困難です。この API を使用するには、一見 Microsoft の Driver Development Kit を購入する必要があるように見えますが、無料の MinGW ツールで使用することができます。
Windows では、デバイスのプラグおよびアンプラグ イベントの通知がウィンドウ ハンドルに送信されるため、通知を受信するには、hidio オブジェクトに通知を受信できる独自の (非表示の) ウィンドウが必要です。現在の実装では、このような通知を受け取ると、オブジェクトは自動的にデバイス リストを再構築します。さらに、デバイスが現在開いている場合は、デバイスがまだ接続されているか、削除されたかを確認します。
直接入力
Microsoft の DirectInput API は、比較的単純なインターフェイスを提供しますが、柔軟性が犠牲になります。USB HID デバイス タイプのサポートは限定されており、主に最も一般的なゲーム デバイスを対象としています。USB HID で言えば、「汎用デスクトップ ページ」のみをサポートします。マウスとキーボードのデータへのアクセスは提供しますが、個々のデバイスとしては提供しません。複数のマウスまたはキーボードが接続されている場合、すべてのデータが 1 つの仮想デバイスにまとめられます。フォース フィードバックはサポートしていますが、他の出力タイプはサポートしていません。Linux の input.h と同様に、独自の単純化されたイベント スキームがあり、受信データの一部を自動的にスケーリングするため、問題が発生する可能性があります。
Windows 生入力
Raw Input は、キーボードとマウスへの生のアクセスを取得したいという開発者の要望に応えて提供された Windows XP の新しい API です。これは、Windows でマウスとキーボードから生データを取得する唯一の方法です。Raw Input を使用すると、任意の USB HID デバイスの入力イベントを取得できますが、出力はまったくサポートされていません。このため、Raw Input についてはまだ詳しく調べていませんが、Windows でキーボードとマウスを完全にサポートするために使用する予定です。