Probleem zit niet in de bus, of dat nu USB 1.1, 2.0, 3.0 of 3.2 is...
Een Keyboard moet zich als HID gedragen. Human-input-device. En een keyboard zend naast dat het natuurlijk extra functies kan hebben, in principe alleen maar keycodes.
Ter referentie kan je veel leren uit wat b.v. goede en wat complexere firmwares hiervoor, waarvan een bijzonder populaire QMK is; zie hier alle keycodes:
https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes
Zoals je onder Hardware features ziet, kan je keyboard naast deze keycodes, diverse andere hardware aansturen. Je kunt dus rotary encoders en displays en LED arrays aansturen.
Normaliter kan je met 6KRO 6 keycodes tegelijk sturen. Indien je firmware goed in elkaar zit, kan je dan per poll 6 codes sturen. De grote van de code is irrelevant. Meeste keyboards, of dat nu USB 2.0 is of ouder / nieuwer, USB micro of C, etc. willen niet meer dan 50hz pollen. Je kunt dus technisch gezien 300 tekens per seconde sturen. Iemand die net een paar maanden blind kan typen, typt zo'n 50 woorden per minuut, oftewel zo'n 300 tekens per minuut. Dat kan je dan dus al in een seconde sturen. Dit kon al op USB1.0. De goedkoopste 8bit controllertjes uit het jaar 2000 konden dit al.
Nu kunnen veel betere chips 125hz aan. Daarnaast kan de firmware zoals QMK op dat soort setups ook NKRO doen. Oftewel, er is niet echt een limiet aan het aantal keycodes. Het protocol vereist echter een max van 1 per poll.
Een van meest flexibele en goede bordjes die je momenteel kant en klaar kunt krijgen voor je keyboard is de nice!nano:
https://docs.nicekeyboards.com/#/nice!nano/
Deze kunnen bluemicro en ZMK draaien. Deze ondersteunen een 1000hz polling rate. Er zijn vast meerdere borden en controllers die het kunnen, geen idee. 632 polls over multidevice over Bleutooth kan overigens ook met deze set.
Je kunt met zo'n setup, die nog altijd geen USB3.0 is, IEDERE scanbare key sturen in NKRO modus:
Wikipedia: Rollover (key)
Dit betekend dat je gehele keyboard matrix kunt versturen.
https://npx3.wordpress.co...ilding-a-keyboard-part-4/
Op de Elite C 2.3 of de Proton-C of de Nice!nano, is gezien het aantal pins ter beschikking, wat op 24 uit komt, 144 keycodes versturen mogelijk. Maar goed, zonder het onzinnig te maken, een keyboard heeft normaal 6 rijen. Je kunt echter natuurlijk prima op een 120% model met een 7e rij werken. 7* (24-7) = 119 keys.
Je kunt dus met zo'n Elite-C v2 bordje, over USB 2.0 met 1000hz polling en NKRO 119.000 karakters per seconde versturen. Waarschijnlijk loop je tegen andere processing delays aan.
Deze specifieke ATMega32U4 die je op heel erg veel keyboards tegen komt, kan namelijk "maar" 48 maar per seconde z'n buffer versturen van 2500bytes. Ietsje meer, maar er zit wat extra zooi in:
Dat is dus de volgende hoeveelheid tekst, maar dan 48 maal, per seconde
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed bibendum libero turpis, sed eleifend elit pretium at. Proin sit amet faucibus elit. Nunc porttitor volutpat hendrerit. Praesent quis nulla vitae massa volutpat congue a vel leo. Aliquam facilisis dictum ipsum, vel efficitur purus elementum nec. Phasellus consectetur mattis eleifend. Sed tristique gravida volutpat. Curabitur in tortor at lacus aliquam ultricies. Morbi luctus sed ex sit amet facilisis. Donec vel dui eu nisl eleifend elementum et ut nunc.
Cras convallis, turpis ac tristique aliquam, leo tellus vehicula dolor, sed ullamcorper metus nunc sed nibh. Sed a sagittis augue, eget tristique neque. Praesent sit amet ligula eros. Suspendisse sagittis nec tortor et bibendum. Nunc neque ex, dignissim ac lacinia id, dignissim rhoncus odio. Nullam eget maximus nisi. Sed facilisis in nulla id dapibus. Curabitur feugiat libero non quam luctus fringilla. Proin feugiat vel metus vel vehicula.
Suspendisse potenti. Sed congue ligula ante, nec tempor sem ultrices semper. Nunc et nibh in ex porta vestibulum quis vel nibh. Proin id ultrices erat, et mollis lacus. Maecenas mauris velit, suscipit ac enim vel, vestibulum tempus dolor. Nulla vestibulum arcu sed nisl dictum convallis sit amet ut nisi. Etiam non massa condimentum, consequat est ut, commodo massa. Nam iaculis elit eu ornare aliquam.
Ut vel justo et ante bibendum ornare. Phasellus pharetra nibh nibh, a consectetur velit luctus id. Ut nec massa non dolor mattis suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis tristique magna ac eros malesuada, a efficitur mi ornare. Donec at ipsum eget orci imperdiet vestibulum. In at cursus mi. Suspendisse vitae pharetra lectus, id finibus urna.
Suspendisse potenti. Etiam rutrum, erat ac congue aliquam, sem ante tempor arcu, at blandit ante diam quis libero. Cras nibh augue, luctus sit amet gravida ut, bibendum quis elit. Quisque vel ligula vel est ullamcorper efficitur at ut elit. Suspendisse sed ante enim. Duis lacinia sed erat sed convallis. Nullam a nunc nec ex finibus pretium. Vestibulum pretium libero sed suscipit venenatis.
Donec ut justo venenatis, semper ante et, sollicitudin diam. Proin fringilla ultrices elit, laoreet lacinia sapien consequat id. Ut semper neque vel dolor congue congue. Quisque vitae tellus mauris. Morbi vitae dictum magna. Suspendisse tempus ligula viverra condimentum faucibus. Etiam nec felis lacinia, pellentesque diam ut, maximus leo. Nulla ut orci magna. Proin nam.
Generated 6 paragraphs, 383 words, 2500 bytes of Lorem Ipsum
Als je dit werkelijk zou halen, zou je 1.1 miljoen woorden per minuut kunnen typen. Dat is meer dan alle 66 boeken van de Bijbel, wat zo'n 800.000 woorden is in de standaard Nederlandse vertaling. IN 1 MINUUT!
Op USB2.0 8bit.
En daar mag dan nog 15mbit aan data voor een display, ARGB, of andere zooi langs.