¿El mando no funciona en el emulador? Resuélvalo en 5 minutos

¿El mando no funciona en su emulador de navegador? Esta guía explica cómo depurar la Gamepad API, configurar indicadores del navegador, resolver problemas de cambio de modo y utilizar alternativas por USB para que pueda ponerse a jugar rápidamente.

Revisado por última vez por RGS Editorial el

Por qué deja de funcionar su mando

Cuando un mando no funciona en un emulador que se ejecuta en el navegador, la falla casi nunca es del emulador en sí — por lo general se trata de una de tres cosas: el sistema operativo no ha terminado de emparejar el dispositivo, el navegador no ha recibido una pulsación de botón para activar la Gamepad API, o el mando está transmitiendo en un modo que el navegador no reconoce. Siga los pasos que se presentan a continuación en orden y, en la mayoría de los casos, el problema se resuelve en menos de cinco minutos.

La Gamepad API del navegador (estandarizada en la especificación W3C Gamepad) requiere un gesto explícito del usuario — concretamente, una pulsación de botón en el propio mando — antes de reportar cualquier dispositivo a una página web. Este único requisito atrapa a más usuarios que cualquier otro problema, por lo que la guía comienza precisamente ahí.

Paso 1 — verificar que el mando esté emparejado

Antes de tocar la configuración del navegador, confirme que el mando es reconocido a nivel del sistema operativo. Abra gamepadtester.net en cualquier pestaña del navegador y presione cualquier botón del mando. Si aparece una tarjeta de gamepad y los ejes o botones responden, el sistema operativo ha emparejado el dispositivo correctamente y puede pasar al paso 2. Si no aparece nada, el problema no es de configuración del emulador — es un problema de emparejamiento que debe resolverse primero en su sistema operativo.

En Windows 10 y 11, vaya a Configuración → Bluetooth y dispositivos → Dispositivos y busque su mando en 'Otros dispositivos'. Los mandos Bluetooth que aparecen en esta lista pero muestran 'No conectado' han perdido la sesión de emparejamiento; elimine el dispositivo y vuelva a emparejarlo. En macOS 13 y versiones posteriores, use Configuración del sistema → Bluetooth. Los usuarios de Linux pueden ejecutar 'bluetoothctl devices' en una terminal para listar el hardware emparejado.

Los mandos USB con cable deberían aparecer inmediatamente en gamepadtester.net sin necesidad de ningún paso de emparejamiento. Si un mando con cable no aparece ahí, pruebe con un puerto USB diferente (preferiblemente uno directamente en la placa base en lugar de un hub), y luego verifique el Administrador de dispositivos en Windows o ejecute 'lsusb' en Linux para confirmar que el dispositivo es enumerado. Un mando que el sistema operativo no puede enumerar no puede ser utilizado por ningún navegador.

Paso 2 — comprobar si el navegador lo detecta

Suponiendo que gamepadtester.net confirma el emparejamiento a nivel del sistema operativo, la siguiente pregunta es si el navegador está exponiendo la Gamepad API a la página del emulador. Que la Gamepad API no funcione en un sitio específico mientras gamepadtester.net sí funciona es una señal clara de que algún indicador del navegador está desactivado, o de que la página del emulador se sirve con un encabezado Permission-Policy que bloquea la función 'gamepad'.

En Chrome y navegadores basados en Chromium (Edge, Brave, Opera), pegue 'chrome://flags/#enable-gamepad' en la barra de direcciones. Si el indicador existe en su versión y está configurado como 'Disabled', cámbielo a 'Enabled' y reinicie el navegador. En la versión estable actual de Chrome (versión 124 en adelante), este indicador está activado por defecto, por lo que su ausencia es normal — no es un problema.

Firefox ofrece una preferencia similar: abra 'about:config', busque 'dom.gamepad.enabled' y confirme que está configurado como 'true'. Firefox también condiciona el acceso al mando a un contexto seguro (HTTPS), por lo que una página de emulador servida a través de HTTP simple nunca podrá detectar mandos en Firefox, independientemente del valor de la preferencia.

Si el emulador está alojado en un sitio que usted controla o puede inspeccionar, abra DevTools (F12) y revise los encabezados de respuesta de la página principal. Un encabezado como 'Permissions-Policy: gamepad=()' bloquea explícitamente todo acceso al mando para ese origen. No es posible anular un encabezado Permission-Policy enviado por el servidor desde el lado del navegador; el operador del sitio debe eliminarlo o relajarlo. En el caso de emuladores autoalojados que se ejecutan localmente, este encabezado no suele estar presente.

El requisito que más usuarios pasan por alto en la Gamepad API es la regla del primer input. La especificación exige que un gamepad no sea expuesto a JavaScript hasta que el usuario haya presionado al menos un botón mientras la ventana del navegador esté enfocada. Haga clic primero dentro del área de canvas del emulador con el ratón y luego presione un botón en el mando. Sin ese clic de enfoque previo, la pulsación del botón puede ser ignorada por completo. Esto no es un error — es un límite de seguridad intencional para evitar la enumeración silenciosa del mando por parte de scripts de terceros.

Paso 3 — modo del mando y XInput

Muchos mandos modernos se presentan de manera diferente según el botón que se haya mantenido presionado al encenderlos. El 8BitDo Pro 2 es el ejemplo más claro: mantener distintos botones al encenderlo lo pone en modo Switch, modo Android, modo XInput o modo macOS. Cada modo presenta un descriptor de dispositivo USB o Bluetooth diferente al equipo anfitrión, y los navegadores asignan estos descriptores a distintos perfiles internos de gamepad. Si el mando no funciona en el emulador pero sí aparece en gamepadtester.net, compruebe en qué modo se encuentra — los ejes y la cantidad de botones variarán entre modos.

Para el 8BitDo Pro 2 específicamente, el modo XInput (mantener 'X' al encender con un cable USB conectado) produce los resultados más consistentes en navegadores basados en Chromium sobre Windows, ya que los dispositivos XInput se asignan a través de una pila de controladores bien establecida. El modo Android (mantener 'B' al encender) suele ser la mejor opción para Bluetooth en Linux. El modo Switch está diseñado para las consolas Nintendo Switch y puede confundir la asignación de botones del navegador en sistemas operativos de escritorio, provocando a veces que los ejes aparezcan donde se esperan los botones.

Otros mandos con selectores de modo incluyen el Sony DualSense y el DualShock 4, que se presentan de manera diferente según se usen por USB o Bluetooth, y el Xbox Core Controller, que requiere la aplicación Xbox Accessories en Windows para aplicar actualizaciones de firmware que afectan el comportamiento del descriptor USB. Si el emulador utiliza una asignación de botones predefinida (habitual en versiones web basadas en RetroArch), un descriptor de dispositivo inesperado puede provocar que cada entrada quede mal asignada incluso cuando el mando es técnicamente detectado.

  • 8BitDo Pro 2: mantenga presionado 'X' al encender por USB para activar el modo XInput en Windows; mantenga presionado 'B' al encender por Bluetooth para activar el modo Android en Linux/macOS.
  • Sony DualSense: la conexión USB es más confiable que Bluetooth para los emuladores de navegador; DS4Windows no es necesario en Windows 11 22H2 o versiones posteriores.
  • Xbox Core Controller: el modo Bluetooth requiere que el firmware del mando Xbox esté actualizado; verifíquelo mediante la aplicación Xbox Accessories en Windows.
  • Mandos genéricos de terceros: si el mando expone únicamente una interfaz DirectInput (HID), Chromium puede presentarlo con una distribución de botones no estándar — compare los índices de botones en gamepadtester.net con el mapeo esperado por el emulador.
  • Nintendo Switch Pro Controller: funciona por USB en todos los navegadores principales; la compatibilidad con Bluetooth en Windows es inconsistente porque Windows no admite de forma nativa el protocolo Switch HID sin controladores de terceros.

Soluciones específicas para Bluetooth

Los mandos Bluetooth introducen una capa de complejidad radioeléctrica y de pila de protocolos que las conexiones por cable evitan por completo. Los tres modos de fallo más comunes relacionados con Bluetooth en escenarios de emulación en el navegador son: que el mando entre en modo de reposo a mitad de una sesión y el navegador no lo vuelva a detectar al reactivarse; la interferencia de otros dispositivos de 2,4 GHz (Wi-Fi en la misma banda, periféricos USB 3.0 que generan ruido cerca del receptor); y los problemas propios de la pila Bluetooth del sistema operativo que desconectan el perfil HID de forma silenciosa.

Si el mando se desconecta durante una sesión, la Gamepad API disparará un evento 'gamepaddisconnected'. Algunos emuladores basados en navegador escuchan este evento y pausan la ejecución; otros no. En cualquier caso, presionar cualquier botón del mando tras reconectarse debería volver a activar el evento 'gamepadconnected' y reanudar la detección — aunque primero es necesario hacer clic dentro de la ventana del emulador para restablecer el foco del navegador, por la misma razón de la primera interacción del usuario descrita en el paso 2.

Los adaptadores Bluetooth USB que utilizan Bluetooth 4.0 o versiones anteriores pueden tener problemas con mandos que anuncian características de Bluetooth 5.0. Si su PC cuenta con un adaptador Bluetooth 5.0 integrado pero también está usando un dongle USB, Windows podría enrutar el mando hacia el dongle en lugar del adaptador integrado. Desactive el dongle en el Administrador de dispositivos y vuelva a vincular el mando al adaptador integrado para comprobar si esto resuelve el problema.

En macOS, es necesario otorgar permiso de Bluetooth al navegador desde macOS 10.15 (Catalina). Vaya a Configuración del sistema → Privacidad y seguridad → Bluetooth y confirme que su navegador (Chrome, Firefox, Safari) aparece en la lista y está habilitado. Sin este permiso, el navegador no puede leer los datos HID de un mando Bluetooth aunque el sistema operativo lo muestre como conectado.

  • Mantenga el mando a menos de 3 metros del receptor Bluetooth para reducir la latencia por retransmisión.
  • Si es posible, vincule los mandos Bluetooth a un dongle Bluetooth USB colocado frente a la PC, en lugar del adaptador integrado que atraviesa un entorno de radiofrecuencia interno con mayor interferencia.
  • Desactive la administración de energía Bluetooth en Windows: Administrador de dispositivos → Adaptador Bluetooth → Propiedades → Administración de energía → desmarque 'Permitir que el equipo apague este dispositivo para ahorrar energía'.
  • En Linux con BlueZ, verifique que el mando tenga estado de confianza ('trust <MAC>' en bluetoothctl) para que se reconecte automáticamente sin un mensaje de confirmación que pudiera interrumpir el protocolo de enlace HID.

Cuando todo lo demás falla, use USB

Si ninguna de las soluciones anteriores resuelve el problema de que el navegador no detecta el mando, una conexión USB por cable es la alternativa más confiable disponible. Los mandos USB HID por cable se enumeran de forma sincrónica, no presentan interferencia radioeléctrica, no entran en modo de reposo y no requieren ningún estado de emparejamiento. Todos los navegadores que implementan la Gamepad API admiten mandos USB HID sin configuración adicional.

La desventaja del USB por cable es física: usted queda atado a la máquina, la longitud del cable es limitada (los cables USB estándar alcanzan hasta 5 metros antes de que la señal se degrade, aunque los cables de extensión activos pueden ampliar esta distancia) y la conexión y desconexión frecuente de los conectores USB genera desgaste mecánico tanto en el conector micro-USB o USB-C del cable como en el puerto del mando con el paso del tiempo.

Si su mando preferido no dispone de opción de cable USB — algunos mandos solo Bluetooth no la tienen — una alternativa cableada que cubre desde la era NES hasta PS2 es la gama de adaptadores USB Raphnet, que conectan mandos originales a USB HID sin la latencia de entrada que introduce el sondeo por microcontrolador. Estos adaptadores se presentan como joysticks HID estándar y son detectados por todas las implementaciones de la Gamepad API en el navegador sin necesidad de instalar controladores en Windows, macOS o Linux.

Para los usuarios de Chromebook o ChromeOS, tenga en cuenta que la Gamepad API está disponible, pero el acceso a dispositivos USB está controlado mediante el sistema de permisos de ChromeOS. Conecte el mando USB y luego vaya a Configuración → Dispositivos para confirmar que el mando aparece en la lista. Si utiliza un contenedor Linux (Crostini) para la emulación en lugar de un emulador web, el reenvío de USB al contenedor debe habilitarse de forma explícita en Configuración de ChromeOS → Linux → Dispositivos USB.

Preguntas frecuentes

¿Por qué mi mando funciona en gamepadtester.net pero no en el emulador?
Es posible que la página del emulador esté bloqueando el acceso a la Gamepad API mediante un encabezado HTTP Permissions-Policy, o que requiera que usted haga clic dentro del lienzo del juego antes de presionar un botón del mando. Intente hacer clic en la pantalla del emulador con el ratón y luego presione un botón del mando. Si el emulador sigue sin responder a las entradas, inspeccione los encabezados de respuesta de la página en DevTools para verificar si aparece la entrada 'Permissions-Policy: gamepad=()'.
¿Qué significa exactamente 'presione cualquier botón para activar el mando'?
La especificación W3C de la Gamepad API exige que se presione físicamente un botón del mando después de que la ventana del navegador tenga el foco, antes de que cualquier dato del gamepad quede expuesto al JavaScript de la página. Esto evita que los sitios rastreen silenciosamente a los visitantes mediante el hardware conectado. Haga clic primero dentro de la pestaña del navegador o del lienzo del emulador, y luego presione un botón frontal del mando — esa secuencia satisface el requisito.
Mi mando 8BitDo es detectado, pero todos los botones están mal asignados — ¿cómo lo soluciono?
El 8BitDo Pro 2 presenta distintas disposiciones de botones según su modo de inicio. El modo Switch está diseñado para el hardware de Nintendo Switch y asigna los botones de manera diferente a lo que esperan la mayoría de los emuladores de navegador. Apague el mando, mantenga presionado 'X' mientras lo conecta por USB para entrar en modo XInput en Windows, o mantenga presionado 'B' al encenderlo por Bluetooth para el modo Android en Linux y macOS. Vuelva a verificar en gamepadtester.net después de cambiar de modo para confirmar los nuevos índices de botones.
¿El proceso para corregir el mando en el emulador de navegador funciona de forma diferente en Firefox que en Chrome?
Sí, existen dos diferencias destacadas. Firefox requiere que la página del emulador se sirva mediante HTTPS; un mando no será detectado en una página HTTP independientemente de otras configuraciones. Firefox también utiliza 'about:config' en lugar de 'chrome://flags' para habilitar o inspeccionar la compatibilidad con gamepads — la preferencia relevante es 'dom.gamepad.enabled'. La implementación de la Gamepad API en Chrome es, en términos generales, ampliamente compatible con la de Firefox, aunque Chrome ha actualizado históricamente su base de datos de mapeo de mandos con mayor frecuencia.
¿Puedo usar un mando de PS4 o PS5 en un emulador de navegador sin software adicional?
Por USB, tanto el DualShock 4 como el DualSense son detectados como gamepads HID estándar por Chromium y Firefox sin ningún software adicional en Windows 10 y 11, macOS 12 y versiones posteriores, y la mayoría de las distribuciones de Linux. Por Bluetooth, los resultados son más variables — Chrome cuenta con compatibilidad nativa con el DualShock 4 a través de su mapeo interno de descriptores HID, pero algunas páginas de emuladores pueden seguir asignando incorrectamente el clic del panel táctil o los ejes L3/R3. DS4Windows es una herramienta de terceros exclusiva para Windows que presenta el mando como XInput, lo cual puede resolver los problemas de mapeo a costa de añadir un proceso en segundo plano.
¿Existe alguna forma de probar la compatibilidad con la Gamepad API sin visitar un sitio externo?
Sí. Abra la consola de desarrollador del navegador (F12 → pestaña Consola) y escriba 'navigator.getGamepads()'. Presione primero un botón del mando y luego ejecute el comando nuevamente. Si la Gamepad API está funcionando, verá un arreglo que contiene un objeto Gamepad con valores no nulos; si el arreglo solo contiene nulos o está vacío después de presionar un botón, el navegador no está exponiendo el dispositivo al contexto de la página. Esta prueba funciona en cualquier página servida mediante HTTPS.