Por qué las teclas responden tarde en los juegos

El retardo entre el cierre del interruptor y la reacción del juego se reparte en seis etapas, y solo dos son software. Cuáles puedes acortar, cuáles no, y cómo distinguirlas en tu propia máquina.

La mayor parte del retardo entre tu dedo y el juego está en el teclado, no en Windows. Una pulsación atraviesa seis etapas antes de que cambie un píxel, y el software puede acortar exactamente dos. Si has venido buscando un valor del Registro que elimine el lag de teclado, la respuesta honesta es que ese valor no existe — pero tres de las seis etapas sí tienen fallos reales y comprobables, y esos merecen veinte minutos.

Esta página separa el recorrido, dice de quién es cada tramo y deja claro qué partes quedan fuera de tu alcance.

El recorrido real de una pulsación

EtapaDe quién es¿Puede acortarla el software?
1. El interruptor cierra; la controladora del teclado barre su matriz y espera a que el contacto deje de rebotarFirmware del tecladoNo
2. El teclado deja un reporte disponible en su endpoint de interrupción USB, al intervalo que pidió su firmwareFirmware del tecladoNo
3. La controladora del host recoge el reporte; kbdhid.sys y kbdclass.sys lo pasan hacia arribaWindows + driver del chipsetSolo quitando un driver que se esté atascando
4. El reporte atraviesa cualquier driver de filtro o hook de bajo nivel que esté en la ruta de entradaSuite del teclado, capa de macros, overlaySí
5. El juego lee la entrada — en la mayoría de motores, una vez por fotogramaEl juegoDe forma indirecta, subiendo la tasa de fotogramas
6. El fotograma se renderiza, se presenta, se barre y se iluminaGPU, Windows, monitorEn parte — mira la latencia de entrada que ningún software puede arreglar

Etapa 1 — la parte que nadie puede tocar

Un teclado no envía una señal cuando se cierra un interruptor. Su propia controladora barre la matriz de teclas en bucle, y cuando ve un contacto espera a que se acabe el rebote antes de dar la tecla por pulsada. Esa espera es una constante del firmware. No está expuesta a Windows, ningún driver puede leerla, y ningún valor del Registro de tu máquina la cambia.

Por eso dos teclados en el mismo PC pueden sentirse distintos con todas las demás variables idénticas, y por eso el "lag de teclado" es tantas veces una respuesta de hardware disfrazada de software.

Etapa 2 — el intervalo de sondeo lo fija el teclado, por escrito

Los dispositivos USB de entrada envían sus datos por un endpoint de interrupción, y el descriptor de ese endpoint lleva un campo llamado bInterval que declara cada cuánto debe preguntar el host. La referencia de Microsoft para esa estructura no deja lugar a dudas: "This value reflects the device's configuration in firmware. Drivers cannot change it."

La misma página da la equivalencia. En un dispositivo full-speed, un bInterval de 1 significa un periodo de sondeo de una trama de 1 milisegundo — los 1000 Hz que anuncian los teclados. En un dispositivo high-speed el periodo se cuenta en microtramas, ocho por milisegundo, según la fórmula Period = 2 ** (bInterval - 1).

De ahí se siguen dos cosas, y son las frases más útiles de esta página:

Algunos teclados salen de fábrica en un modo de compatibilidad (a menudo etiquetado como "boot protocol", o ligado a un interruptor de 6-key rollover) que además baja la tasa de reporte. Consulta el manual del propio teclado o su software de configuración antes de concluir que Windows va lento.

Los dos ajustes que la gente cambia y que no hacen esto

Los dos aparecen en cualquier lista de "arreglar el lag del teclado". Ninguno acorta el camino entre una pulsación y el juego, y preferimos decirlo antes que venderte un placebo.

Retardo y velocidad de repetición de teclas. KeyboardDelay y KeyboardSpeed, bajo HKCU\Control Panel\Keyboard, gobiernan lo que pasa cuando mantienes una tecla pulsada: cuánto tarda el carácter en empezar a repetirse y a qué velocidad se repite después. La primera pulsación no se ve afectada en absoluto. w0a puede poner el retardo en su paso más corto, y la propia descripción del producto dice lo que eso te compra — una consola, un chat y un menú más rápidos, no un disparo más rápido. Si una herramienta anterior dejó estos valores en algo raro, la tarjeta Velocidad y retardo de repetición de teclas devuelve los valores predeterminados de Windows.

Tamaño de la cola de datos del teclado. KeyboardDataQueueSize fija cuántos reportes puede retener el driver de clase si el hilo que los vacía se atasca un momento. Una cola más grande significa menos reportes perdidos durante un atasco. No hace que ningún reporte llegue antes, y el producto lo dice en su propia interfaz, no en una nota al pie. Colas de entrada explica qué es ese valor y cómo devolverlo.

Si alguna página te dice que subir el tamaño de una cola baja la latencia de entrada, ya sabes lo suficiente para no creértelo. Una cola es un colchón contra la pérdida, no un atajo.

Etapa 4 — la única etapa que es de verdad tuya

Aquí es donde vive el retardo de teclado real y medible en una máquina normal, y es la etapa que casi nadie revisa.

Todo lo que quiere ver tus pulsaciones antes que el juego se instala en la ruta de entrada: suites del fabricante del teclado con motores de macros, demonios de iluminación por tecla que reaccionan al escribir, overlays de streaming y de chat, grabadores de pantalla, utilidades de remapeo, herramientas de accesibilidad. Cada una es un salto, y un salto ocupado o colgado retiene el recorrido entero.

Windows tiene un tiempo de espera exactamente para este caso. Cuando un hook de bajo nivel no responde en LowLevelHooksTimeout milisegundos, Windows se lo salta y sigue adelante; Windows 10 1709 y posteriores usan como máximo 1000 ms, por grande que sea el valor. Cuánto espera Windows cuando el valor no está definido no está documentado, y no lo hemos medido. La página Tweaks de Regedit de w0a tiene una entrada que fija esa espera en 1000 ms escribiendo LowLevelHooksTimeout bajo HKCU\Control Panel\Desktop.

Léelo con honestidad: limitar el tiempo de espera no hace que un hook sano vaya más rápido. Acorta la congelación cuando un hook ya ha fallado. Merece la pena tenerlo, y no es una reducción de latencia.

Qué hacer de verdad, y en este orden:

  1. Cierra por completo el software del propio teclado — no lo minimices a la bandeja. Sal de él y juega una partida.
  2. Cierra los overlays de uno en uno: el de la plataforma de juego, el del chat de voz, el software de grabación, el del fabricante de la gráfica.
  3. Si la sensación cambia, has encontrado tu respuesta, y ya puedes decidir qué función merece qué retardo.
  4. Si no cambia nada, deja de buscar aquí. Pasa a la etapa 3.

Etapa 3 — un driver reteniendo el núcleo que el teclado necesita

Un reporte de teclado llega como una interrupción. Si algún driver ajeno está sentado en ese núcleo del procesador dentro de una interrupción o de una llamada diferida, tu pulsación espera, y espera por encima de cualquier prioridad de hilo del sistema — así que no aparece en ninguna gráfica de tiempos de fotograma ni en ningún administrador de tareas.

Esto sí se puede medir, y es la única parte del recorrido a la que se le puede poner un número en tu propia máquina:

  1. Abre la Prueba de Latencia en w0a.
  2. Pulsa para empezar y sigue moviendo el mouse los 12 segundos completos — el mouse es el tráfico que la prueba usa para muestrear la ruta de entrada.
  3. Lee la cifra de Interrupción más larga de un controlador y la lista de drivers de debajo, ordenada por retención más larga y con el nombre del archivo.
  4. Cualquier cosa igual o por encima de 1 ms está desplazando reportes. Cualquier cosa igual o por encima de 4 ms es lo que hay que arreglar antes que nada.

El primer arreglo que probar con un driver que retiene un núcleo es actualizar ese driver concreto desde el fabricante del hardware. Cómo leer la prueba de latencia explica los colores y, más útil todavía, qué deja fuera ese número a propósito.

Etapa 5 — el juego lee la entrada a su propio ritmo

En la mayoría de motores el juego muestrea la entrada una vez por fotograma. Un juego a 60 FPS mira tu teclado cada 16,7 ms; a 240 FPS, cada 4,2 ms. Eso es aritmética, no una medición, y ningún motor publica su temporización exacta de entrada — así que trátalo como el mecanismo y no como una cifra por título.

La consecuencia práctica es que subir una tasa de fotogramas baja acorta la espera de esta etapa, y que a 40 FPS el teclado no es lo que te limita. Si tu tasa de fotogramas es inestable en lugar de baja, Qué busca el escaneo de tirones es la página para eso.

Lo que queda, y qué hacer con ello

La página Fix: una tarjeta de reparación por cada cosa que se puede cambiar, cada una restaurando el valor predeterminado de Windows.
La página Fix: una tarjeta de reparación por cada cosa que se puede cambiar, cada una restaurando el valor predeterminado de Windows.

Una lista corta y reversible. Todo esto se puede deshacer, y los pasos de abajo que apuntan a una tarjeta de Fix reescriben el valor predeterminado de Windows sin importar qué herramienta hizo el cambio.

  1. Conecta el teclado a un puerto de la propia máquina, no a un hub del monitor, a un hub sin alimentación ni a un KVM. Cada uno de ellos es otra controladora entre el dispositivo y el host.
  2. Comprueba qué está haciendo el puerto de verdad. La página Puertos USB de w0a lista cada dispositivo con el intervalo de sondeo que pidió su firmware junto a la tasa de reporte medida a partir de entrada real. Un dispositivo que pide 1 ms y entrega mucho menos es un problema del enlace o de un driver, no del teclado.
  3. Deshaz tweaks de entrada antiguos. Ratón, teclado y panel táctil y Colas de entrada restauran los valores predeterminados de Windows si una herramienta antigua los cambió.
  4. Impide que la administración de energía USB duerma el puerto, si tu teclado va lento en la primera pulsación después de una pausa. Ajustes de energía de los puertos USB es esa tarjeta.
  5. Mide y luego decide. Pasa la Prueba de Latencia antes y después de cada cambio. Un cambio que no puedes ver en una medición es un cambio que deberías deshacer.

Lo que el software no puede hacer aquí

Lo que sí puede hacer es quitar de en medio un hook atascado, sacar a la luz un driver que está reteniendo un núcleo e impedir que un puerto se duerma. En una máquina sana eso suma menos de lo que la gente espera, y en una enferma es toda la diferencia. Medir es como averiguas cuál de las dos tienes.

Relacionado

De la docena de etapas entre un clic y un píxel que cambia, tres son del software; el resto es del firmware, la pantalla y el juego: Cómo reducir el input lag: lo que el software puede acortar y lo que no

w0a no cambia ningún ajuste de Windows hasta que se lo pides, y un tweak guarda el valor anterior antes de escribir uno nuevo. Avísame

¿Te sirvió esta página?

¿Qué faltaba, o qué no funcionó? Leemos todos estos mensajes.

Si esta página no resolvió tu problema, escríbenos — dinos qué artículo leíste y lo corregimos.