2015-05-13 5 views
5

Ich entwerfe eine USB-Tastatur mit speziellen Fähigkeiten. Welche Informationen kann ein solches HID-Gerät vom Host erhalten?Welche Daten kann ein HID-Gerät empfangen?

Kann ich über USB:

  • Lesen von Daten aus einem Formular auf dem Bildschirm?
  • Finden Sie heraus, auf welchem ​​Betriebssystem der Benutzer ist?
  • Finden Sie heraus, ob es eine Fehlermeldung gab?
  • Sogar "wissen", was visuell auf dem Bildschirm passiert, d. H. Welches Programm ausgewählt ist oder ob das Programm gefenstert oder im Vollbildmodus ist?

Vielen Dank!

Antwort

3

Das Gerät kann keine dieser Informationen von einem Standardtreiber abrufen, den das Betriebssystem bereitstellt, da dies ein Sicherheitsproblem darstellen würde. Es kann erhalten alle Informationen, die Ihr eigener Treiber oder Anwendung sendet es. Es gibt viele Möglichkeiten, damit zu kommunizieren - Ihr Gerät könnte mehrere Schnittstellen (die als separate Geräte angezeigt werden), mehrere Endpunkte oder den Steuerkanal verwenden. Sie müssen auf jeden Fall die spec studieren, und ich fand auch this tutorial hilfreich.

Ich habe etwas ähnliches getan und den Steuerkanal verwendet, um Feature-Daten mit einer Windows-Anwendung auszutauschen (über den Standard-Windows-Treiber). Unter Windows lauten die API-Aufrufe HidD_SetFeature() und HidD_GetFeature().

Auf der Geräteseite lief meine Hardware Embedded Linux und ich habe die GadgetFS library verwendet, um einen Benutzer-Modus-Treiber zu erstellen - viel einfacher zu debuggen als ein Kernel-Treiber.

1

Angenommen, Sie verwenden Lager Treiber:

Lesen von Daten aus einem Formular auf dem Bildschirm?Nein

Finden Sie heraus, auf welchem ​​Betriebssystem der Benutzer ist?Nein

Finden Sie heraus, ob es eine Fehlermeldung gab? Keine

Selbst ‚wissen‘, was los ist visuell auf dem Bildschirm, das heißt welches Programm ausgewählt ist, oder ob das Programm mit Fenstern oder Vollbild?Nein

Sie können diese Aktionen jedoch ausführen, wenn Sie einen benutzerdefinierten USB-Treiber verwenden, mit dem Sie mit dem Betriebssystem kommunizieren.

Siehe rhashimotoanswer.

1

Wie andere bereits gesagt haben, treten Probleme auf, wenn Sie dies mit einem normalen HID versuchen. Es gibt jedoch ein Projekt namens USB Rubber Ducky.Aus ihrer Beschreibung:

The USB Rubber Ducky isn't your ordinary HID (Human Interface Device). 
Coupled with a powerful 60 MHz 32-bit processor and a simple scripting language 

Die USB Rubber Ducky wie ein USB-Gerät sucht und als HID erkannt, aber ist programmierbar. Sie können ein kleines Skript erstellen, das auf dem Bildschirm eingegeben wird, damit Sie die gewünschten Suchanfragen ausführen können.

Mit den USB Rubber Ducky können Sie:

  • Lesen von Daten aus einem Formular auf dem Bildschirm? Ja

  • Finden Sie heraus, auf welchem ​​Betriebssystem der Benutzer ist? Ja

  • Finden Sie heraus, ob es eine Fehlermeldung gab?

  • Sogar "wissen", was auf dem Bildschirm visuell passiert, d. H. Welches Programm ausgewählt ist oder ob das Programm gefenstert oder Vollbild ist? Ja

    Wenn Sie nicht hoffen, dass dieses Gerät zu kaufen, zumindest ihre Firmware auf Github ist, so dass es Ihnen einen Ausgangspunkt

+0

Dank Roger bieten kann, hilfreich! +1 – sscirrus