Standar USB tidak mengatakan sesuatu yang spesifik tentang keyboard atau mouse dll, dalam versi apa pun.
Standar HID yang melakukannya. Struktur laporan 6-key plus modifiers hanya benar-benar dimaksudkan untuk memudahkan BIOS (sehingga mereka tidak perlu menguraikan deskriptor laporan), tetapi menjadi 'standar' de-facto untuk keyboard apa pun. Namun, standar HID memungkinkan untuk semua jenis laporan yang berbeda, dan semua OS utama mendukung sepenuhnya, sehingga tidak perlu driver tambahan.
Keterbatasan lainnya adalah bahwa paket data USB kecepatan rendah hanya bisa maksimum 8 byte. Laporan dapat menjadi lebih besar, tetapi itu mulai memakan banyak waktu untuk mengirim. Standar USB hanya memungkinkan perangkat kecepatan rendah untuk mengirim satu paket setiap 10 ms (per titik akhir). OS biasanya mendorong hingga 8ms, yaitu 125Hz (tanpa peretasan). Membutuhkan waktu hingga 16ms untuk mendapatkan penekanan tombol ke host adalah omong kosong! Jadi kami memiliki fase pembuat mencoba untuk mendapatkan lebih banyak dari chip berkecepatan rendah daripada yang benar-benar dapat mereka tangani, dengan trik seperti beberapa titik akhir dll :(
USB berkecepatan penuh membebaskan batasan-batasan itu. Setiap paket dapat 64 byte, dan dapat dikirim setiap 1ms (sekali lagi, per titik akhir). Ini memungkinkan standar HID digunakan untuk efek penuhnya.
Akhirnya, NKRO tidak dilakukan hanya untuk kepentingan itu. Melakukan NKRO penuh hanya membutuhkan satu bit per kunci, bukan satu byte, dan tidak harus memperlakukan pengubah sebagai case khusus. Jadi keyboard dapat mengirim mis 104 kunci hanya dalam 13 byte - menggunakan skema lain 13 byte hanya akan mengelola 11KRO (11 tombol + pengubah + satu byte yang dipesan). Tentu, itu masih banyak kunci, tetapi metode yang jauh lebih elegan (dan masih 'tidak-6KRO', jadi masih bisa tidak kompatibel dengan host bodoh).