Frage

Ich habe ein System, wo ich mehrere Tastaturen haben und wirklich wissen müssen, welche Tastatur der Tastenhub herkommt. Um den Satz zu erklären oben:

  1. Ich habe eine normale PC und USB-Tastatur
  2. Ich habe einen externen VGA-Bildschirm mit einigen harten Tasten
  3. Die Hardkeys sind als Standard-USB-Tastatur abgebildet, eine begrenzte Anzahl von Schlüssel-Codes zu senden (F1, F2, Return, + und -)

Ich habe einen Low-Level-Haken (in C # aber tatsächlich Aufruf auf Win32-Funktionalität), die mit dem Eingang beschäftigen Lage ist, selbst wenn meine Anwendung nicht fokussiert.

Das Problem ist, dass, wenn die normale Tastatur verwenden, um einige der abgebildeten Schlüssel-Codes, die durch die Anwendung auf dem externen Bildschirm angetrieben aufgenommen wird. Einer der Tastendruck durch den externen Bildschirm und verwendet zur Bestätigung gesendet wird VK_RETURN. Es sei denn, ich das „Gerät“ und Filter auf sie identifizieren kann, kann der Benutzer Aktionen durchführen könnte und sich auf einem Bildschirm Bestätigung ihrer nicht einmal suchen.

Wie kann ich wissen, welche Tastatur war verantwortlich für den Tastendruck?

War es hilfreich?

Lösung

Ja ich stehe korrigiert, mein schlecht, jeden Tag etwas Neues zu lernen.

Hier ist mein Versuch, es zu bilden :):

  • Registrieren Sie die Geräte, die Sie für Roh-Eingangs (die beiden Keyboards) verwenden möchten mit :: RegisterRawInputDevices ().

  • Sie können diese Geräte von GetRawInputDeviceList get ()

  • Nachdem Sie Ihre Geräte registriert haben, werden Sie anfangen WM_INPUT Nachrichten zu bekommen.

  • Die lParam der WM_INPUT Nachricht enthält eine RAWKEYBOARD Struktur, die Sie auf der Tastatur, um bestimmen können, wo der Eingang kam, und den virtuellen Tastencode und die Art der Meldung (WM_KEYDOWN, WM_KEYUP, ...)

  • So können Sie aus einer Flagge, wo die letzte Nachricht kam einstellen und versenden es dann zu den regulären Tastatureingabehandler.

Andere Tipps

Keine Möglichkeit, dies zu tun. Windows abstrahiert dies für Sie. Wie bereits erwähnt, müssen Sie einen Gerätetreiber schreiben / ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top