Die USB-Standards sagen in keiner Version etwas Spezielles über Tastaturen, Mäuse usw. aus.
Dies ist der HID-Standard, der dies tut. Die Berichtsstruktur mit 6 Plus-Tastenmodifikatoren sollte dem BIOS eigentlich nur das Leben erleichtern (sodass keine Berichtsdeskriptoren analysiert werden mussten), wurde jedoch zu einem de-facto „Standard“ für Tastaturen. Der HID-Standard ermöglicht jedoch alle Arten von Berichten und alle wichtigen Betriebssysteme unterstützen ihn vollständig, sodass keine zusätzlichen Treiber erforderlich sind.
Die andere Einschränkung besteht darin, dass ein USB-Datenpaket mit niedriger Geschwindigkeit nur maximal 8 Byte umfassen kann. Ein Bericht kann größer sein, das Senden nimmt jedoch erheblich Zeit in Anspruch. Nach dem USB-Standard kann ein Gerät mit niedriger Geschwindigkeit nur alle 10 ms ein Paket senden (pro Endpunkt). Das Betriebssystem stupst normalerweise bis zu 8 ms an, dh 125 Hz (ohne Hacks). Es wäre Mist, bis zu 16 ms Zeit zu haben, um einen Tastendruck auf den Host zu bekommen! Wir hatten also eine Phase, in der Macher versuchten, mit Tricks wie mehreren Endpunkten usw. mehr aus langsamen Chips herauszuholen, als sie wirklich können :(
Full-Speed-USB befreit diese Einschränkungen. Jedes Paket kann 64 Byte umfassen und alle 1 ms gesendet werden (wiederum pro Endpunkt). Dadurch kann der HID-Standard in vollem Umfang genutzt werden.
Schließlich ist NKRO nicht nur deswegen gemacht. Für eine vollständige NKRO ist nur ein Bit pro Schlüssel anstelle eines Bytes erforderlich, und Modifikatoren müssen nicht als Sonderfall behandelt werden. So kann eine Tastatur zB 104 Tasten in nur 13 Bytes senden - bei Verwendung des anderen Schemas würden 13 Bytes nur 11 KRO verwalten (11 Tasten + Modifikatoren + ein reserviertes Byte). Sicher, das sind immer noch viele Schlüssel, aber es ist eine weitaus weniger elegante Methode (und immer noch 'not-6KRO', könnte also immer noch mit dummen Hosts inkompatibel sein).