2012-11-12 4 views
12

I ein kleines Programm in C# 2010 geschrieben sind, die Eingaben von verschiedenen Tastaturen, indem sie eine Reihe von Geräten, teilweise aufgespalten können, die folgenden:Einzigartig Logitech Verbindende Keyboards identifizieren (in C#)


--Dieser Code funktioniert gut für nicht-einheitliche keyboards--

InputDevice id; 
NumberOfKeyboards = id.EnumerateDevices(); 
id = new InputDevice(Handle); 
id.KeyPressed += new InputDevice.DeviceEventHandler(m_KeyPressed); 
private void m_KeyPressed(object sender, InputDevice.KeyControlEventArgs e) { 
    lbDescription.Text = e.Keyboard.Name; 
    // e.Keyboard.* has many useful strings, none work for me anymore. 
} 


Sehr glücklich damit, ich lief aus und kaufte 4 Logitech K230 Tastaturen, die den Unifying-Empfänger verwenden. Leider sind alle Tastaturdaten jetzt gemultiplext und erscheinen in meinem Code als eine einzige Tastatur!

Wie kann ich feststellen, von welcher "einheitlichen" Tastatur die Eingabe kommt? Idealerweise in C#, aber ich nehme an, dass ich bereit bin, andere Sprachen zu betrachten, wenn Lösungen existieren.

+0

Ich habe einen Linux-Treiber gesehen, der die "vereinheitlichte" Eingabe auseinander bricht, so dass die HID-Ebene verschiedene Tastaturen sehen kann (und sie anders behandeln). Dies machte mich optimistisch, dass eine Windows-Lösung auch existieren sollte. – cdehaan

+0

Es tut mir leid, so viele Kommentare zu meiner eigenen Frage hinzuzufügen, aber für alle Interessierten ist dies das Projekt, bei dem meine ursprüngliche Eingangsaufteilung kam: http://www.codeproject.com/Articles/17123/Using-Raw-Input-from -C-to-handle-multiple-keyboard – cdehaan

+0

Der USB-Dongle ist ein USB-HID-Gerät, daher handelt es sich bei all dem Verkehr, den Sie sehen, grundsätzlich um generischen HID-Verkehr, der vom USB-Dongle erzeugt wurde. Es sei denn, die Spezifikationen haben irgendeinen Einfluss auf den Traffic, der generiert wird und Metadaten enthält. Ich denke nicht, dass es möglich ist. Sie können möglicherweise [USBlyzer] (http://www.usblyzer.com/download.htm) verwenden, um den USB-Datenverkehr zu erkennen. Wenn Sie eine Verbindung mit dem USB-Dongle herstellen können, können Sie möglicherweise Informationen von ihm anfordern. – jduncanator

Antwort

1

Ich habe keine einheitliche Tastatur, aber überprüfen Sie, ob Sie mehrere Tastaturen in Windows-Geräten sehen können. Dann können Sie dies http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard ausprobieren und die Ausgabe überprüfen.

+1

Vielen Dank für den Kommentar, aber leider ist dieser Link, was ich ursprünglich als Ausgangspunkt verwendet habe (und wurde in meinem zweiten Kommentar gegeben.) Es funktionierte gut für nicht einheitliche Tastatur, konnte aber vereinheitlichte Tastaturen nicht unterscheiden. – cdehaan