Die Tastatur benötigt kein Signal vom Computer, nur Strom, oder? ODER müssen Signale sowohl empfangen als auch gesendet werden?
Edit: Ich habe nicht erwartet, dass diese Frage so viel Interesse weckt! Ich habe es gefragt, weil ich im Leerlauf davon geträumt habe, einen Doohickey zu bauen, der das Signal dupliziert, sodass die Tastatur denselben Brief an zwei Computer gleichzeitig senden kann. Da (nach dem, was ich in den Antworten ausmachen kann) der Computer die Tastatur wie jedes andere Gerät aktiv steuert, ist dies offensichtlich nicht möglich. Keine große Sache, da ich praktisch sowieso nicht die Fähigkeiten hatte, es zu bauen!
Antworten:
Aus der Spezifikation " Geräteklassendefinition für Human Interface Devices (HID)", Version 11.1 :
Um die Tastatur-LEDs zu ändern, akzeptiert die Tastatur einen entsprechenden Befehl. Es handelt sich also nicht um ein "Nur-Eingabe" -Gerät (dh es gibt nur Daten an den Host aus).
Abgesehen davon gibt es bei allen USB-Geräten einen Aushandlungs- und Aufzählungsprozess, der ein Hin- und Her-Gespräch zwischen Host und Gerät erfordert. Sie können kein "schreibgeschütztes" USB-Gerät verwenden.
Noch vor dem USB-Anschluss akzeptierte der PC-Tastaturcontroller Befehle, da er neben dem Lesen der Tastatur ( Referenz ) noch einige andere Aufgaben ausführte :
quelle
So it is not an "input-only" device (meaning it only outputs data to the host)
was mich verwirrtJedes USB-Gerät, unabhängig von seiner Klasse, benötigt eine bidirektionale Kommunikation, um zu funktionieren . Jedes USB-Gerät (oder jede Funktion in Bezug auf die USB-Spezifikation) wird als Satz von Endpunkten dargestellt, die als Puffer betrachtet werden können, die Daten annehmen oder empfangen. Selbst Endpunkte, die nur Daten senden können, warten auf ein spezielles Paket namens Token, bevor sie antworten können:
(Bild von hier , graue Kästchen stehen für USB-Host, weiße Kästchen für USB-Funktion)
Sogar sogenannte Interrupt-Übertragungen werden auf diese Weise durchgeführt, wobei der USB-Host angeschlossene Geräte mithilfe von Token-Paketen abfragt. Der Unterschied zwischen regulären (Bulk-) Übertragungen und Interrupt-Übertragungen besteht darin, dass die Abfragezeit gering ist und im letzteren Fall garantiert wird. Trotzdem werden alle Übertragungen vom Host initiiert.
quelle
Die Frage spiegelt ein weit verbreitetes Missverständnis wider, dass USB-Geräte selbstständig etwas an den PC senden, wenn eine Taste gedrückt (oder die Maus bewegt) wird. Deshalb ist die Aufmerksamkeit so hoch. Tatsächlich senden USB-Geräte erst dann etwas, wenn sie eine entsprechende Anfrage vom Host erhalten. Eine Ausnahme ist ein Aufweckvorgang von einem angehaltenen Gerät.
Während der USB auf der Oberfläche einfach aussieht, ist seine Funktionsweise in der Tat ziemlich kompliziert. Jedes neue USB-Gerät muss zuerst "aufgezählt" werden, bevor es funktioniert. Die Reihenfolge ist wie folgt:
Nach dem Einstecken einer Tastatur empfängt der Host-Port das Signal "Connect Status" (bei LS-Signalen wird D- von der Tastatur auf HIGH gezogen).
Dann setzt der Host den Port in den "Port-Reset" -Modus und der USB-PHY (Physical-Layer-Treiber) sendet "USB_RESET" über die D + / D- Leitungen (beide Leitungen werden für eine vorgeschriebene Zeit auf LOW geschaltet). Einige Informationen zum "Port-Reset" für FS / HS-Geräte finden Sie hier .
Dann beginnt der Host, Frame-Boundary-Pakete im 1-ms-Intervall auszugeben. Bei Low-Speed (LS) -Geräten als gewöhnliche kabelgebundene Tastatur handelt es sich lediglich um "Keep-Alive" -Pulse, während bei FS die speziellen SOF-Start-of-Frame-Pakete generiert werden. Diese Pakete halten das Gerät im aktiven Modus und verhindern, dass SUSPEND mit geringem Stromverbrauch ausgeführt wird.
Dann beginnt die "Aufzählung". Der Host sendet eine Anforderung zum Abrufen des Gerätedeskriptors. Die Anfrage wird an "default pipe" mit der Geräteadresse "0" gesendet. [Derzeit gibt es nur ein solches Gerät - die Tastatur - da alle anderen Geräte am Bus bereits ihre individuell zugewiesenen USB-Adressen haben sollten]
Die Tastatur gibt die angeforderten Informationen zurück, sodass der Host bestimmen kann, welche Art von Treiber geladen werden soll.
Der Host sendet eine Transaktion, bei der das Gerät seine Standardadresse in eine neu zugewiesene Adresse ändern muss.
Dann startet der Host eine neue Kommunikationsrunde mit dem Gerät, jetzt an der neu zugewiesenen Adresse. Alle anderen Geräte ignorieren diese Kommunikation, da sie nicht an sie gerichtet ist.
Der Host liest möglicherweise viel mehr Informationen aus mehreren anderen Deskriptoren und wählt schließlich "Gerätekonfiguration" aus. Damit ist der Aufzählungsprozess abgeschlossen.
Abhängig von der USB-Geräteklasse beginnt der Host mit der Kommunikation mit dem Gerät. Im Tastaturfall sendet der Host periodisch im Wesentlichen eine "IN" -Anforderung und fragt das Gerät im Wesentlichen ab (selbst wenn diese periodische Pipe als "Interrupt" -Pipe bezeichnet wird). Wenn auf der Tastatur eine Taste gedrückt / gedrückt wurde, gibt die Tastatur diese Informationen zurück. Andernfalls werden keine Daten an den Gerätetreiber zurückgegeben.
Kurz gesagt, jedes USB-Gerät muss eine eindeutige Adresse vom USB-Host erhalten, und zwei USB-Hosts haben Schwierigkeiten, mit einem Gerät zu kommunizieren - Buskollision, Adressenkonflikt, zufälliges Abfangen von Tastendruckdaten usw. Das USB-Protokoll macht es unmöglich, a gemeinsam zu nutzen Gerät zwischen zwei USB-Hosts.
quelle
If keyboard has any key pressed/depressed, the keyboard will return this information
- Wie würden dann Geisterbilder entstehen? Ich hatte den Eindruck, dass Tastaturen Tastendruck- und Tastendruckereignisse senden müssen, was erklären würde, warum bei einem verpassten Tastendruck-Ereignis Geister-Tasten vorhanden sind ...Wie andere Antworten bereits erklärt haben, erfordert USB eine bidirektionale Kommunikation als Teil seiner Funktionsweise. PS / 2 ermöglicht zwar die bidirektionale Kommunikation, benötigt sie jedoch nicht, um Schlüssel an den Computer zu senden, sondern zum Einstellen der Tastatur-LEDs.
Theoretisch könnten Sie ein Gerät bauen, um das PS / 2-Signal zu duplizieren und an einen zweiten Computer zu senden, und alle Befehle von den Computern verwerfen, sodass Sie Ihre Tastendrücke an mehrere Computer senden können, die Tastatur-LEDs jedoch nicht Reagieren Sie auf die Zustände Num, Caps Lock und Scroll Lock (oder auf jede andere Änderung des LED-Zustands, z. B. werden unter Linux die Tastatur-LEDs manchmal für alternative Zwecke verwendet).
Ich bin mir nicht sicher, wie komplex ein solches Projekt sein würde. Es ist schon eine Weile her, dass ich mit PS / 2 gearbeitet habe, daher weiß ich nicht, ob Sie einfach ein paar Drähte / Anschlüsse überbrücken können oder ob Sie ein aktives Gerät (z. B. einen Mikrocontroller) benötigen, um Befehle in eine Richtung weiterzuleiten, aber sie zu verwerfen in dem anderen. Wenn Sie einen Mikrocontroller hätten, könnten Sie das Gerät sogar so einstellen, dass es die Tastatur-LED-Befehle interpretieren und zur Anzeige "kombinieren" kann (z. B. langes Blinken der LED, wenn sie auf Computer eins leuchtet, aber auf Computer zwei ausgeschaltet ist, kurzes Blinken) die LED, wenn sie an Computer zwei leuchtet, aber an Computer eins aus ist, die LED, wenn sie an beiden Computern leuchtet, und die LED, wenn sie an beiden Computern aus ist, aus. Das wäre allerdings weiter fortgeschritten.
Wenn Sie in der Lage sein möchten, einen Computer von einem anderen Computer aus oder zwei Computer von demselben Schreibtisch aus oder von einem anderen Computer aus zu steuern, sollten Sie Folgendes prüfen:
quelle
Vor USB-Tastaturen verwendeten die PS / 2-Tastaturen ein viel einfacheres Protokoll, bei dem es möglich ist, eine Tastatur an zwei Geräte anzuschließen und funktionsfähig zu machen. Eine einfache Y-Verbindung genügt.
Ältere USB-Tastaturen verfügen weiterhin über einen integrierten PS / 2-Emulationsmodus. Wenn Sie einen dieser lila Adapter verwenden, können Sie ihn an einen PS / 2-Anschluss auf der Rückseite eines Computers anschließen. Wenn Sie also ein USB-zu-PS / 2-Breakout-Kabel an 2 Computern verwenden, funktioniert möglicherweise ein lila Adapter zurück an Ihre USB-Tastatur.
Neuere USB-Tastaturen haben den alten PS / 2-Modus deaktiviert und funktionieren in diesem Fall nicht.
quelle