NKRO zu USB. Probleme und Krücken in ihren Lösungen
Hallo GT. In einem meiner früheren Beiträge (insbesondere über die SteelSeries Apex M800-Tastatur) Benutzer monah_tukstellte in den Kommentaren eine interessante Frage: Wie wird NKRO (N-Key-Rollover, gleichzeitiges Klemmen mehrerer Tasten) in USB-Tastaturen implementiert? Diese Frage interessierte mich und als ich etwas tiefer grub ... Im Allgemeinen gibt es solche Augean-Ställe, dass es genug Informationen für einen ganzen Beitrag gab, wenn auch ein wenig. Es scheint, dass USB 2.0 selbst im Niedriggeschwindigkeitsmodus eine Übertragung mit bis zu 1500 Kbit / s (ca. 185 KB / s) ermöglicht. Was ist das Problem bei der Übertragung von Tastenanschlägen? Aber nicht so einfach.
Um herauszufinden, welche Probleme die USB-Verbindung hat, müssen wir uns mit der Geschichte und ein wenig mit dem Design der Tastatur befassen.Probleme mit dem Rollover: Geisterbilder
Angenommen, Sie haben eine Tastatur mit Standardtasten 104/105. Im Idealfall benötigen Sie 1 "Verkabelung" mehr als Tasten, um 100% genaue Informationen darüber zu erhalten, welche Tasten geklemmt sind: 104/105 Drähte von den Tasten und eine gemeinsame "Masse".Natürlich wird eine solche Verkabelung schwierig und teuer sein, so dass viele kostengünstige Tastaturen innerhalb der sogenannten verwendet werden. "Matrix" - eine Reihe sich überschneidender horizontaler und vertikaler Kontakte. Der Controller scannt jede Spalte, erkennt ein Signal, beginnt mit dem Scannen der "Zeilen" und berechnet die gedrückte Taste.Wenn Sie drücken, sagen wir, S und G und wollen einige dritte Schlüssel in einer anderen Zeile hinzufügen, kann der Controller nicht mehr sagen , welche der Linien wurde geschlossen: bestenfalls wird es nicht erkennen , eine der drei, im schlimmsten Fall - von Für die Verkabelungsfunktionen zeichne ich ein weiteres Viertel, auf das Sie nicht geklickt haben. Dies nennt man Ghosting.Ein ähnliches Verhalten wird mit verschiedenen Tricks im Bereich der Verkabelung behandelt: Die beliebtesten Kombinationen werden an verschiedene „Leitungen“ gehängt, Funktionsleitungen, bei denen es sich häufig um Hotkey-Elemente handelt, werden separate Leitungen zugewiesen. Das Layout bleibt einfach genug, aber nicht teure Tastaturen selten 5 + KRO - normalerweise ist es auf 3-4 begrenzt, während die Taste gedrückt wird.Zusätzlich kann die Steuerung die "Nachbarn" im Block blockieren, um die "zusätzliche" Operation zu entfernen. Das heißt, formal kann die Tastatur 6KRO unterstützen und ehrlich gesagt STRG + AWFBNM gleichzeitig drücken, AWSD jedoch nicht halten, sondern nur einen WAS- oder WDS-Typ auslösen.Sie können Ihre Tastatur mit solchen Dingen überprüfen . Es gibt einige Einschränkungen, die jedoch darauf zurückzuführen sind, dass das System einen Tastendruck früher als der Browser abfängt. Beispiel: Bildschirm drucken oder Alt + Tab funktionieren, bevor die Seite sie „fangen“ kann.Jetzt wird dieses schreckliche (aus Sicht der Arbeit) „billige“ System fast vollständig durch eine etwas komplexere, „offene“ Matrix ersetzt. Es gibt jedoch immer noch Fälle, insbesondere häufig bei allen Arten von „Ein-Dollar“ -Komplett-Tastaturen, die „von außen“ an den Computer gesendet werden. Kisten. "Teurere (häufig Spiele- oder Business-Tastaturen) verwenden komplexere Schaltkreise, mehrere Controller, einzelne Verbindungen, mehrschichtige Leiterplatten, im Allgemeinen verschiedene Ansätze, die Geisterbilder reduzieren oder vollständig eliminieren, aber zu einer Erhöhung des Preises des Geräts führen. Wir haben die möglichen Hardwareprobleme von NKRO herausgefunden und wenden uns den Softwareproblemen zu.Tastaturen bis USB
Der wichtigste gemeinsame Anschluss zum Anschließen einer Tastatur und einer Maus an USB war PS / 2. Hier ist so ein ordentliches:
Sein Reiz war, dass es vorbehaltlich aller Standards möglich war, mit einer Maus und einer Tastatur von einem Anschluss und einem Splitter aus zu arbeiten, und dass die Eingabegeräte selbst einen Interrupt erzeugten und Informationen über die gedrückten Tasten / Cursorbewegungen sendeten. Rollen Sie dort zumindest Ihr Gesicht auf der Tastatur, wenn alles korrekt getrennt ist und der Rollover nicht auf den Hardwarefunktionen der Tastatur beruht - die Tastatur sendet alles, was der Controller „liest“.Leider hatte PS / 2 seine Nachteile (wie Probleme mit Plug'n'Play und einem unbequemen Anschluss), und die Allgegenwart von USB führte dazu, dass PS / 2-Peripheriegeräte fast vollständig vom Markt verdrängt wurden. Trotzdem gibt es recht moderne Motherboards mit USB 3.0 und zwei (!) PS / 2:
Kombinierte Anschlüsse ermöglichen übrigens aufgrund der Pinbelegung (allgemeine Stromversorgung, verschiedene Pins für Daten + / Daten- in Maus und Tastatur) auch den Anschluss beide Geräte über einen Port mit einem Adapter:
NKRO USB-Probleme: USB HID ist schuld
Damit USB-Tastaturen vor dem Laden des Systems (dh im BIOS / UEFI) funktionieren, wird der Standard-HID-Treiber verwendet, der für die größtmögliche Unterstützung von Tastaturen und USB-Hosts entwickelt wurde. Die USB-HID-Klasse beschreibt Geräte, damit die Standardimplementierung des USB-Hosts und der USB-Geräte ohne Installation spezieller Treiber kommunizieren kann.Eine Standardtastatur (mit Unterstützung des USB-HID-Standards) verwendet den Datenstrom der Ausgabe (Ausgabe vom USB-Host) (Endpunkt des USB-Stacks), um Informationen über den Status der Anzeigen (Num / Caps / Scroll Lock) und den Eingabestream (von der Tastatur) zu erhalten. "Eingehend" für den USB-Host), um Informationen zu den gedrückten Tasten zu senden.Wenn Sie die strengste USB HID v1.11-Spezifikation befolgen, die den USB-Startmodus unterstützt (und es Ihnen ermöglicht, eine USB-Tastatur zu verwenden, um das BIOS aufzurufen und darin zu arbeiten), sendet die Tastatur bei jeder Abfrage durch den USB-Host Unterbrechungen an die CPU , unabhängig davon, ob sich ihr Zustand geändert hat oder nicht. Somit wird die Arbeit von PS / 2-Tastaturen mit minimalem Overhead „emuliert“.In diesem Fall arbeitet die Tastatur gemäß dem USB 1.1-Standard (manchmal 2.0). Niedrige Geschwindigkeit und die Port-Abfragerate beträgt 100 Hz. In diesem Modus beträgt die maximale Paketlänge auf USB 8 Byte und sie werden alle 10 ms gesendet. Eines der Bytes ist reserviert, so dass 7 Bytes verbleiben, damit die Tastatur funktioniert, d. H. Der Betrag reicht aus, um das Drücken einer beliebigen Modifikationstaste und sechs weiterer Tasten zu codieren.Es stellt sich heraus, wer die Tastatur im 6-KRO-Modus arbeitet, und es ist Standard für die meisten USB-Tastaturen. Weniger zu tun ist möglich (manchmal bewusst, manchmal nicht, aufgrund von Geisterbildern und Tastenstaus), mehr - nur unter Verstoß gegen die USB-HID-Spezifikation.Nach dem Laden kann das System die Häufigkeit des Abrufs eines USB-Anschlusses erhöhen und einen speziellen Treiber laden, der beispielsweise Multimedia-Schlüssel und Makros zulässt.NKRO USB-Implementierungen
Bypass-Einschränkungen USB HID, in der Tat gibt es zwei Arten. Im ersten Fall wird die Tastatur von einer proprietären Software erkannt, in einen speziellen Modus übertragen und sendet Daten von der Steuerung direkt an den Treiber. Sie kommuniziert bereits mit dem System. Das Minus einer solchen Entscheidung ist die Zunahme der sogenannten Eingangsverzögerung: Eingangsverzögerung. Bei der Befragung von Bekannten fand ich nur eine Tastatur, mit der ich 10 Tasten drücken konnte, wenn ich über USB verbunden war: ein chinesisches Frottee-Substantiv mit einem Zakos unter "Gaming". Der Besitzer lebt bereits in Irkutsk, daher ist es nicht verwunderlich, dass nur er so etwas hatte.Die zweite Lösung besticht durch ihre Einfachheit und ihren Einfallsreichtum, ist aber tatsächlich eine Krücke:
Vielen Dank für den Screenshot MyfeargearDies wurde bei Logitech G710 + festgestellt. DieTastatur wird dem System einfach von mehreren HID-Geräten präsentiert, von denen jedes über einen eigenen 6KRO verfügt. Eine kurze Umfrage unter Bekannten, in der sie gebeten wurden, ein Tastaturmodell anzugeben und einen solchen Screenshot zu senden, ergab, dass Logitech , A4tech , Cougar und SteelSeries diesen Hack verwenden - im Allgemeinen alle, die NKRO in der Beschreibung von USB-Tastaturen gefunden haben.Beachtung! Stellen Sie vor dem Überprüfen Ihrer Tastatur sicher, dass keine hoch entwickelte USB-Maus mit mehreren Tasten angeschlossen ist (auch nicht drahtlos). Da alle Multi-Button-Pracht auf die gleiche Weise vorgeben können, "zusätzliche" Tastaturen zu sein.Fazit
Das ist eigentlich alles. Fast alle Hersteller haben sich für eine „Krücken“ -Methode entschieden, die jedoch funktioniert und keine besonderen Probleme für den Benutzer verursacht, und die ehrliche (na ja, relativ ehrliche) NKRO auf USB ist erreichbar. Source: https://habr.com/ru/post/de384797/
All Articles