2017-01-25 4 views
1

1台のPCに接続されたUSBキーボード(少なくとも2台)のキー操作を区別する必要があります。 キーボードAまたはキーボードBのどちらかでキー(たとえば)が押されたかどうかを判断するための方法や先験はありますか? (望ましい言語はC#の場合)同じホストに接続されている複数のUSBキーボードのキー押下を区別する方法

擬似コード:

if (keyPressed == 's') 
{ 
    if(keyboardID == 'A') 
    { 
     print("Key 's' was pressed by Keyboard A"); 
    } 
    else if (keyboardID == 'B') 
    { 
     print("Key 's' was pressed by Keyboard B"); 
    } 
} 
+0

Iあなたの質問に対してより多くのコンテキストを提供することをお勧めします。これは、コンソールアプリケーションやwinフォームアプリケーションなどとして実行されますか。 – Theo

+0

私は自分自身(マウスだけでなく)少し興味があったように、私は答えを見ています。私はそれが使用されているUSBポート、IRQ、またはそれに類するもののアドレスを明確に特定することが必要であると確信しています。 – CDove

+0

windowsまたはlinux? – eactor

答えて

1

ドライバレベルになって、そこにキーストロークを傍受の短い、あなたが本当に(と思う)することはできません。私は、ブルートゥースのキーボードとブルートゥースのキーパッドを利用しており、あなたが求めていることをする方法を見つけることができなかったので、キーパッドの番号3は、キーボードのキーパッドの番号3とは違って登録するでしょう。

0

キーストロークがすべての入力デバイスのためのLinuxでイベント

としてOSによって処理されている個別のイベントキューは/dev/input/event*であり(*は、特定のデバイスの数を意味する)を一覧表示することができ、Linuxで

コマンドがsudo lsinput(input-utils)のすべての入力デバイス

それぞれのキーボードの特定のイベントをキャプチャできます。Linux keyboard event capturing /dev/inputX

窓口これは似ています。 rawInputを使用して、ハンドルを各デバイスに割り当てることができます。より深い情報と例コード( "デバイスハンドルが...入力を生成したキーボードを教えてくれる")

https://blogs.msdn.microsoft.com/oldnewthing/20160627-00/?p=93755である

https://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

raw input handling (distinguishing secondary mouse)

https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543%28v=vs.85%29.aspx

関連する問題