NKRO a USB. Problemas y muletas en sus soluciones.
Hola GT En una de mis publicaciones anteriores (en particular, sobre el teclado SteelSeries Apex M800) usuario monah_tukhizo una pregunta interesante en los comentarios: ¿cómo se implementa NKRO (rollover de n teclas, sujeción simultánea de varias teclas) en teclados USB? Esta pregunta me interesó, y cuando profundicé un poco más ... En general, hay tales establos de Augean que hubo suficiente información para toda una publicación, aunque sea un poco. Parece que USB 2.0, incluso en modo de baja velocidad, proporciona transmisión de hasta 1500 Kbps (aproximadamente 185 KB / s), ¿cuál es el problema de transmitir pulsaciones de teclas? Pero no tan simple.
Para descubrir qué problemas tiene la conexión USB, tendremos que profundizar en la historia y un poco en el diseño del teclado.Problemas de vuelco: efecto fantasma
Digamos que tiene un teclado con teclas estándar 104/105. En el caso ideal, para obtener información 100% precisa sobre qué teclas están sujetas, necesitará 1 "cableado" más que botones: 104/105 cables de los botones y una "conexión a tierra" común.Por supuesto, dicho cableado será difícil y costoso, por lo que se utilizan muchos teclados de bajo costo dentro del llamado. "Matriz": un conjunto de contactos horizontales y verticales que se cruzan. El controlador escanea cada columna, detecta una señal, comienza a escanear las "filas" y calcula la tecla presionada.Si presiona, digamos, S y G y desea agregar una tercera tecla en una fila diferente, el controlador ya no puede decir cuál de las líneas estaba cerrada: en el mejor de los casos, no detectará una de las tres, en el peor de los casos, desde para las características de cableado, dibujaré otro cuarto en el que no hizo clic. Esto se llama fantasma.Este comportamiento se trata con varios trucos en el campo del cableado: las combinaciones más populares se cuelgan en diferentes "líneas", a las líneas de función, que a menudo son elementos de teclas de acceso rápido, se les asignan líneas separadas. El diseño sigue siendo lo suficientemente simple, pero los teclados no caros son raros 5 + KRO, generalmente se limita a 3-4 mientras se presiona la tecla.Además, el controlador puede bloquear a los "vecinos" en el bloque para eliminar la operación "extra". Es decir, formalmente el teclado puede admitir 6KRO y, honestamente, dejar presionar CTRL + AWFBNM al mismo tiempo, pero no dejar que AWSD se mantenga, limitado a activar un tipo WAS o WDS.Puede verificar su teclado con este tipo de cosas . Tiene algunas limitaciones, pero se deben al hecho de que el sistema interceptará la presión de un botón antes que el navegador. Por ejemplo, Imprimir pantalla o Alt + Tab funcionará antes de que la página pueda "atraparlos".Ahora, este terrible sistema "barato" (desde el punto de vista del trabajo) es reemplazado casi por completo por una matriz "abierta" un poco más compleja, sin embargo, todavía se encuentran instancias, especialmente a menudo en todo tipo de teclados completos de "un dólar" que van a la computadora "desde afuera" cajas ".Los más caros (a menudo teclados de juegos o de negocios) usan circuitos más complejos, varios controladores, conexiones individuales, placas de circuitos impresos multicapa, en general, varios enfoques que reducen o eliminan por completo el efecto fantasma, pero conducen a un aumento en el precio del dispositivo. Descubrimos los posibles problemas de hardware de NKRO, pasamos a los de software.Teclados hasta USB
El conector común principal para conectar un teclado y un mouse a USB fue PS / 2. Aquí hay uno muy ordenado:
su encanto era que, sujeto a todos los estándares, era posible trabajar con un mouse y un teclado desde un conector y un divisor, y los dispositivos de entrada generaron una interrupción y enviaron información sobre los botones presionados / movimiento del cursor. Allí, al menos ponga la cara en el teclado, si todo está correctamente separado, y el rollover no descansa en las capacidades de hardware del teclado: el teclado enviará todo lo que el controlador "lee".Desafortunadamente, PS / 2 tenía sus inconvenientes (como problemas con Plug'n'Play y un conector inconveniente), y la ubicuidad de los dispositivos USB hizo que los periféricos PS / 2 fueran eliminados casi por completo del mercado. Sin embargo, hay placas base bastante modernas con USB 3.0 y dos (!) PS / 2:
los puertos combinados, por cierto, debido a las características de pinout (fuente de alimentación general, diferentes pines para datos + / datos- en el mouse y el teclado), también le permiten conectarse ambos dispositivos a través de un puerto usando un adaptador:
NKRO USB cuestiones: USB HID es el culpable
Para que los teclados USB funcionen antes de cargar el sistema (es decir, en BIOS / UEFI), se utiliza el controlador HID estándar, que fue desarrollado para el soporte más amplio posible para teclados y hosts USB. La clase USB HID describe dispositivos para que la implementación estándar del host USB y los dispositivos USB puedan comunicarse sin instalar controladores especiales.Un teclado estándar (diseñado con soporte para el estándar USB HID) usa el flujo de datos de salida (salida del host USB) (punto final de la pila USB) para obtener información sobre el estado de los indicadores (Num / Caps / Scroll Lock) y el flujo de entrada (proveniente del teclado, "Entrante" para el host USB) para enviar información sobre las teclas presionadas.Si sigue la especificación USB HID v1.11 más estricta, que admite el modo de arranque USB (y le permite usar un teclado USB para ingresar al BIOS y trabajar en él), el teclado enviará interrupciones a la CPU cada vez que el host USB lo sondee , independientemente de si su condición ha cambiado o no. Por lo tanto, el trabajo de los teclados PS / 2 se "emula" con una sobrecarga mínima.En este caso, el teclado funciona de acuerdo con el estándar USB 1.1 (a veces 2.0) de baja velocidad, y la velocidad de sondeo del puerto es de 100 Hz. En este modo, la longitud máxima del paquete en USB es de 8 bytes y se envían cada 10 ms. Uno de los bytes está reservado, de modo que quedan 7 bytes para que el teclado funcione, es decir. la cantidad es suficiente para codificar la pulsación de cualquier tecla modificadora y otras seis.Resulta quién trabaja el teclado en modo 6-KRO, y es estándar para la mayoría de los teclados USB. Hacer menos es posible (a veces de manera consciente, a veces no, debido al efecto fantasma y al bloqueo de teclas), más, solo en violación de la especificación HID USB.Después de cargar, el sistema puede aumentar la frecuencia de sondeo de un puerto USB, cargar un controlador especial que permita, por ejemplo, teclas multimedia y macros.Implementaciones NKRO USB
Omitir restricciones USB HID, de hecho, hay dos tipos. En el primer caso, el software patentado detecta el teclado, lo transfiere a algún modo especial y envía datos desde el controlador directamente al controlador, y ya se comunica con el sistema. La desventaja de tal decisión es el aumento de la llamada retraso de entrada: retraso de entrada. Al entrevistar a conocidos, encontré solo un teclado que me permitía presionar 10 teclas cuando estaba conectado a través de USB: un sustantivo chino con un zakos debajo del "juego". El propietario ya vive en Irkutsk, por lo que no sorprende que solo haya encontrado algo así.La segunda solución cautiva con su simplicidad e ingenio, pero de hecho es una muleta:
gracias por la captura de pantalla Myfeargear, tal cosa se notó para Logitech G710 + Elteclado simplemente se presenta al sistema por varios dispositivos HID, cada uno de los cuales tiene su propio 6KRO. Una encuesta rápida de conocidos que les pidió que especificaran un modelo de teclado y enviaran una captura de pantalla de este tipo mostró que Logitech , A4tech , Cougar y SteelSeries usan este truco , en general, todos los que encontraron NKRO en la descripción de los teclados USB.¡Atención! Antes de revisar su teclado, asegúrese de no tener conectado ningún sofisticado mouse USB de varios botones (incluso de forma inalámbrica). Dado que toda la magnificencia de varios botones de la misma manera puede pretender ser teclados "extra".Conclusión
En realidad, eso es todo. Casi todos los fabricantes han elegido un método de "muleta", pero uno que funciona y no crea ningún problema especial para el usuario, y es posible el NKRO honesto (bueno, relativamente honesto) en USB. Source: https://habr.com/ru/post/es384797/
All Articles