Prueba de Mando
Prueba los botones, sticks, gatillos, cruceta y vibración del mando en tu navegador
Stick izquierdo
Stick derecho
Gatillos
Prueba de vibración
Historial de eventos
¿Qué es la Prueba de Mando?
Una prueba de mando lee las señales que tu controlador envía al navegador a través de la Gamepad API del W3C y las muestra en tiempo real: cada pulsación de botón, la posición de los sticks analógicos, el recorrido de los gatillos, la dirección de la cruceta y los motores de vibración. Es la forma más rápida de comprobar si un mando funciona antes de una partida, diagnosticar un botón de cara pegajoso, detectar el drift del stick en un mando con horas de uso o verificar que ambos motores de vibración responden. La página resalta cada entrada sobre un esquema en pantalla estilo Xbox, muestra los valores brutos de los ejes y de los gatillos, y mantiene un breve registro de eventos. Como la Gamepad API solo expone un controlador después de pulsar un botón en él, la página te pedirá primero que pulses cualquiera: es una regla de seguridad del navegador, no un fallo de tu mando. Todo se ejecuta localmente en tu navegador; ningún dato de entrada sale de tu dispositivo.
Cómo usar
Cómo usar
- Conecta tu mando por USB o Bluetooth
- Pulsa cualquier botón del mando para activarlo
- Observa cómo se ilumina el esquema en pantalla al pulsar botones o mover los sticks
- Usa los botones de vibración para probar los motores
- Revisa el historial de eventos para confirmar que cada pulsación se registró
Consejos
- El resaltado verde significa que la entrada llega correctamente al navegador
- Un controlador solo aparece después de pulsar un botón en él: es una regla de seguridad del navegador
- La compatibilidad con vibración depende del navegador y del mando; Firefox ofrece la más amplia
- Si un stick muestra un valor distinto de cero en reposo, la etiqueta de drift te avisa del desplazamiento
- Cuando hay varios mandos conectados, puedes cambiar entre ellos con las etiquetas de ranura
Casos de uso
Principio técnico
El navegador expone los mandos a través de la Gamepad API del W3C. Un controlador se representa mediante un objeto Gamepad obtenido de navigator.getGamepads(), que devuelve hasta cuatro ranuras. Cada gamepad lleva una cadena id (fabricante y producto), un campo mapping ('standard' para dispositivos con disposición Xbox, vacío en caso contrario), un array buttons y un array axes. Bajo la asignación estándar, buttons tiene 17 entradas: cuatro botones de cara (A/B/X/Y), dos bumper (LB/RB), dos gatillos analógicos (LT/RT), Select/Start, dos pulsaciones de stick (L3/R3), cuatro direcciones de la cruceta y el botón Home/Guide. Cada botón expone .pressed (booleano) y .value (de 0 a 1; los gatillos son analógicos, los digitales valen 0 o 1). El array axes guarda cuatro valores en el rango -1 a 1: X/Y del stick izquierdo y luego X/Y del stick derecho. La API funciona por sondeo, no por eventos, así que la página ejecuta un bucle requestAnimationFrame y lee una nueva instantánea en cada frame. Para evitar re-renderizados inútiles con el mando en reposo, solo actualiza el estado cuando cambia gamepad.timestamp: esa marca de tiempo avanza con cada nuevo reporte de entrada. La conexión y la desconexión llegan como eventos gamepadconnected y gamepaddisconnected en el objeto window. Por seguridad, un objeto gamepad permanece null hasta que el usuario pulsa un botón en él, así que la página no puede leer un mando recién conectado de forma silenciosa. La vibración es opcional: si existe gamepad.vibrationActuator, llamar a playEffect('dual-rumble', { duration, weakMagnitude, strongMagnitude }) acciona los dos motores; Safari y algunas compilaciones de Chromium no la implementan, por eso la página hace detección de características y desactiva los botones en caso contrario.
- navigator.getGamepads() devuelve hasta cuatro ranuras; una ranura solo es distinta de null después de pulsar un botón del mando.
- Asignación estándar: buttons[0-3] botones de cara, [4-5] bumper, [6-7] gatillos analógicos, [8-9] Select/Start, [10-11] L3/R3, [12-15] cruceta, [16] Home.
- axes[0-1] es el stick izquierdo (X, Y); axes[2-3] el stick derecho, cada uno en el rango -1 a 1.
- Modelo de sondeo: un bucle requestAnimationFrame lee instantáneas; gamepad.timestamp controla las actualizaciones para que los frames en reposo no hagan nada.
- Vibración mediante gamepad.vibrationActuator.playEffect('dual-rumble', ...): requiere detección de características y no es compatible con todos los navegadores.
- Los eventos gamepadconnected / gamepaddisconnected señalan la conexión y la desconexión; el campo .index del mando identifica su ranura.
Ejemplos
Pulsar un botón de cara
Pulsa A -> buttons[0].pressed = true, value = 1.0Empujar el stick izquierdo
Empuja el stick izquierdo hacia arriba-derecha -> axes[0] = 0.71, axes[1] = -0.68Apretar un gatillo
Aprieta RT hasta la mitad -> buttons[7].value = 0.50, pressed = false (por debajo del umbral)Preguntas frecuentes
¿Por qué no aparece mi mando después de conectarlo?
La Gamepad API mantiene un controlador oculto hasta que pulsas un botón en él, para evitar que las páginas generen huellas digitales de los dispositivos conectados de forma silenciosa. Conecta el mando por USB o Bluetooth, enfoca esta pestaña y pulsa cualquier botón: el panel de estado cambiará a «Conectado». Este paso de activación es una regla de seguridad del navegador, no un defecto.
¿Qué controladores son compatibles?
Cualquier controlador que el navegador exponga con la asignación estándar: mandos de Xbox One/Series, DualShock 4 y DualSense (que la mayoría de sistemas mapean a estándar) y la mayoría de los mandos USB genéricos. Tanto por Bluetooth como por USB, el navegador los normaliza a la misma disposición de 17 botones y 4 ejes. Los mandos no estándar también funcionan, pero el orden de sus botones puede no coincidir con las etiquetas en pantalla.
¿Por qué no funciona la vibración?
La compatibilidad con vibración varía. Firefox ofrece la más amplia; Chrome y Edge la soportan en versiones recientes; Safari no la implementa. El propio mando también debe exponer gamepad.vibrationActuator. La página lo detecta y muestra un aviso explícito de «no compatible» en lugar de quedarse en silencio, así que la vibración ausente es un límite del navegador o del hardware, no un fallo de esta herramienta.
Mi stick muestra un valor cuando no lo toco, ¿está roto?
Un valor pequeño cercano a 0 es ruido normal de la zona muerta. Si un stick en reposo supera los 0.12 en cualquiera de los ejes, la etiqueta de drift se vuelve naranja: es el drift clásico del stick, causado por módulos potenciómetro desgastados. Es un problema de hardware que suele empeorar con el tiempo; la herramienta te permite confirmarlo antes de culpar a un juego.
¿Se envía algo a un servidor?
No. La Gamepad API se lee por completo en tu navegador. Las pulsaciones de botones, las posiciones de los sticks y las órdenes de vibración nunca salen de tu dispositivo. No se registra ni se transmite nada.
¿Puede probar los gatillos adaptativos del DualSense, el panel táctil o el giroscopio?
No. La Gamepad API estándar solo expone botones, ejes y vibración básica. Los gatillos adaptativos del DualSense, el panel táctil capacitivo y los sensores de movimiento no forman parte del estándar web (algunos viven detrás de extensiones experimentales con escaso soporte del navegador), así que no se pueden probar de forma fiable desde un navegador.