Timos modernos... el key rollover:
Posteo esto aquí porque lo que he leído últimamente merece la pena compartirlo. Quizás aclare un poco el extraño comportamiento de algunos teclados que hay por ahí.
Lo primero es saber qué hay dentro de un teclado (sea PS/2, USB, bluetooth o lo que quiera). Lo más obvio y es lo que se ve desde fuera es un montón de teclas. Estas teclas suelen estar situadas en una matriz de conexiones, de manera que si tú metes tensión en la fila x de la matriz y detectas esa tensión en la columna y, entonces la tecla (x,y) está pulsada.
Lo siguiente que hay es un microcontrolador que lee e interpreta las teclas. Una vez que ha detectado que la tecla (x,y) está pulsada, la convierte a un código y la envía por el PS/2 o USB (en realidad cada tecla tiene dos códigos, uno que indica que ha sido pulsada y otro que indica que la han soltado). ¿Sencillo, no? Pues no tanto, porque hay dos reglas:
- Regla 1: Key Rollover: Los microcontroladores (y los PCs) tienen recursos limitados. Para no atosigar a ninguno de los dos, cuando hay más de n teclas pulsadas se ignoran las que se pulsen a continuación. Este es el famoso key rollover, que es bastante falso. Si en un teclado que sea 2 key rollover están pulsadas la tecla Q y la W, al pulsar la E no se enviaría al ordenador. Por lo menos, no hasta que sueltes una de las anteriores. Las teclas modificadoras (Shift, Alt, Ctrl) no cuentan para esta regla y se envían siempre.
- Regla 2: anti ghosting: Al estar las teclas organizadas en una matriz, hay casos en los que no se puede saber si una tecla está pulsada o no. En este caso, muchos microcontroladores no envían la tecla que produce ghosting.
Ejemplo práctico: Yo tengo un teclado 6KRO (6 key rollover) y paso el test de Velesoft, y me encuentro que la combinación de teclas X+V+B no funciona. En el test de key rollover que he puesto antes, tampoco puedo pulsarlas... ¿significa eso que mi teclado en realidad era 2KRO? NO. Significa que si pulso X+V+B, hay una cuarta tecla (¿F? ¿G? vete a saber...) que no puedes saber si se ha pulsado. En este caso, podrías mandar X+V+B+(cuarta tecla), pero casi todos los teclados eligen mandar X+V (las teclas que saben seguro que están pulsadas).
Moraleja: El teclado es "n" key rollover pero solo para las combinaciones de teclas que les da la gana. Por eso el resultado de este test, aunque interesante, es poco conclusivo por ser diplomáticos.
Bonus track - Puteando con USB: Todo lo anterior es bastante exacto si tienes un teclado PS/2. Los teclados USB tienen una limitación adicional: al parecer el estándar HID (el modo normal de conectar un teclado) solo permite 6KRO como máximo. Es decir, si has conseguido uno de esos raros (y caros) teclados NKRO (no key rollover) y lo conectas a un puerto USB de un PC (mediante el adaptador correspondiente)... acabas de cagarla macho. Tu teclado ahora es 6KRO.
Por lo que he leído hay teclados gamer que son NKRO en USB, pero tienen truco. Llevan un interruptor debajo que conmuta entre dos modos: el HID normalito (que funciona en cualquier PC) y uno propio que, después de instalar el driver correspondiente, permite detectar TODAS las teclas. Este bonus track no es relevante para el ZX-Uno (no permite teclados USB), pero puede servir de advertencia a los que jueguen MMO en PC.u