Es una queja habitual en PC: un mando funciona en un juego, no hace nada en otro y se comporta de forma extraña en un tercero. Normalmente el hardware está bien. Lo que cambia es la forma en que cada juego pide a Windows la entrada del mando. Dos interfaces de programación, XInput y DirectInput, siguen decidiendo gran parte de esto, y saber cuál usan un juego y un dispositivo explica la mayoría de estos desajustes.
Qué es XInput
XInput es la interfaz de Microsoft para mandos de estilo Xbox. Llegó junto con el mando de Xbox 360 para Windows y parte de una distribución fija: dos sticks analógicos, dos gatillos analógicos, una cruceta, los botones A/B/X/Y, dos botones superiores, Back/View y Start/Menu, la pulsación de los dos sticks y dos motores de vibración. Admite hasta cuatro mandos a la vez.
Como la distribución nunca cambia, XInput resulta muy cómodo para los desarrolladores. Un juego sabe que la «A» siempre está en el mismo sitio y que los gatillos son ejes separados, así que puede mostrar los iconos de botones correctos sin pantalla de configuración. Esa sencillez es también su límite: todo lo que no encaja en la distribución de Xbox, como un volante con muchos botones, un acelerador con ejes adicionales o un hat en un joystick de vuelo, no se puede describir con XInput.
Qué es DirectInput
DirectInput es la interfaz más antigua y flexible, parte de DirectX desde los años noventa. En lugar de una distribución fija, el dispositivo le dice a Windows qué tiene: un número de ejes, botones y hats POV. El juego lee lo que haya y normalmente te deja asignar las funciones en un menú de controles. DirectInput también cubre los efectos de force feedback, y por eso los volantes dependen de ella.
Volantes, pedales, joysticks, aceleradores HOTAS, cajas de botones y muchos mandos genéricos o antiguos se presentan como dispositivos DirectInput. Cuando abres joy.cpl en Windows y ves una lista de ejes y botones numerados, estás viendo precisamente este tipo de descripción.
Por qué un mando funciona en un juego y en otro no
Muchos juegos modernos de PC, sobre todo los ports de consola y los juegos de acción, están pensados para XInput. Esperan un mando de estilo Xbox y a menudo ignoran todo lo demás. Los simuladores de conducción y de vuelo van en sentido contrario: enumeran los dispositivos DirectInput para que puedas combinar volante, pedales, palanca de cambios y caja de botones, o joystick, acelerador y pedales de timón.
- Un mando genérico DirectInput en un juego solo XInput: el juego sencillamente no lo ve, aunque funcione en
joy.cpl. - Un volante o HOTAS en un juego sin soporte DirectInput: el mismo resultado. Algunos dispositivos tienen un modo Xbox o PC, pero un volante que se presenta como mando pierde casi todo lo que lo hace útil.
- Un mando de Xbox en un juego DirectInput antiguo: suele funcionar, porque Windows también expone los mandos XInput a través de DirectInput. Eso sí, hay una peculiaridad heredada conocida: leído de esta forma, un mando de estilo Xbox 360 informa de los dos gatillos en un único eje compartido. Si pulsas ambos se anulan, y el juego no puede distinguir entre «los dos pulsados» y «ninguno pulsado».
- Mandos de PlayStation y Switch: no son dispositivos XInput. Los juegos que los admiten de forma nativa funcionan bien; el resto necesita una capa de traducción.
Windows cuenta también con interfaces de entrada más recientes, y muchos juegos usan bibliotecas de entrada de su motor sobre ellas. En la práctica, estas siguen distinguiendo entre mandos y otros tipos de controladores, así que la división a menudo sigue siendo visible para ti como jugador.
Comparativa
| XInput | DirectInput | |
|---|---|---|
| Distribución | Fija, estilo Xbox | Definida por el dispositivo |
| Número de dispositivos | Hasta cuatro mandos | Muchos dispositivos a la vez |
| Gatillos | Dos ejes analógicos separados | Según el dispositivo (eje compartido en mandos estilo Xbox 360) |
| Force feedback | Dos motores de vibración | Efectos completos, usados por los volantes |
| Dispositivos típicos | Mandos de Xbox y compatibles | Volantes, pedales, joysticks, HOTAS, mandos genéricos |
| Juegos típicos | Juegos de acción modernos, ports de consola | Simuladores de conducción y vuelo, juegos antiguos |
Cómo ayudan las capas de traducción
Una capa de traducción lee tu mando y presenta al juego un mando virtual de otro tipo. La más utilizada es Steam Input. En los juegos que inicias desde Steam, puede hacer que un mando de PlayStation, de Switch o genérico aparezca como un mando de estilo Xbox, y te permite reasignar botones por juego. Se activa por tipo de mando en los ajustes de mandos de Steam y se puede cambiar para cada juego en sus propiedades.
También existen herramientas de terceros de reasignación y emulación, algunas de las cuales instalan controladores de mando virtuales. Pueden ser útiles, pero añaden otra capa que puede provocar entradas duplicadas, conflictos con Steam Input o problemas tras las actualizaciones.
Antes de instalar un programa de reasignación, comprueba si el dispositivo tiene un selector de modo Xbox/PC o una aplicación del fabricante que añada soporte XInput. Si al final usas una herramienta de terceros, descárgala solo desde la página oficial del proyecto, usa una sola a la vez y desinstálala por completo cuando dejes de necesitarla.
Cómo ven los navegadores los mandos
Los navegadores no exponen XInput ni DirectInput a las páginas web. Leen los mandos a través del sistema operativo y los ofrecen mediante la Gamepad API. Cuando el navegador reconoce un dispositivo como mando normal, informa del mapeo "standard": botones y ejes en un orden conocido que coincide con la distribución de Xbox/PlayStation. Con volantes, joysticks y mandos desconocidos informa en cambio de la distribución en bruto, con botones y ejes en el orden en que los describe el propio dispositivo.
Por eso nuestro test de mandos puede mostrar un mando con un diagrama de botones ordenado o como una simple lista de botones y ejes numerados. Ambas cosas son normales. Si un mando funciona en los juegos pero no aparece en el navegador, sigue nuestra guía sobre mandos que el navegador no detecta.
Lista de comprobación
- Comprueba que Windows ve el dispositivo: pulsa Win + R, escribe
joy.cply prueba las entradas en Propiedades. - Averigua qué admite el juego. La página de la tienda, el menú de opciones o el manual suelen indicar si solo admite mandos o también volantes y joysticks.
- Si el dispositivo tiene selector de modo, prueba el modo Xbox o PC que corresponda a lo que espera el juego.
- En juegos de Steam, activa Steam Input para mandos que no sean de Xbox, o desactívalo en un juego concreto si ves entradas duplicadas.
- Cierra otros programas de reasignación y superposiciones, y vuelve a conectar el mando.
- Con volantes y HOTAS, instala el controlador del fabricante y comprueba que el dispositivo aparece correctamente. Consulta volante no detectado en PC.
- Si las entradas se reconocen pero están mal asignadas, busca un menú de controles en el juego en lugar de fiarte de la asignación por defecto.
¿Es XInput mejor que DirectInput?
Ninguna es mejor en general. XInput es más sencilla y da a los juegos una distribución de mando predecible. DirectInput es más flexible y es necesaria para volantes, joysticks y efectos de force feedback. Cada una se adapta a dispositivos distintos.
¿Por qué los gatillos de mi mando de Xbox funcionan como un solo eje en un juego antiguo?
El juego lee el mando mediante DirectInput, donde los gatillos de los mandos estilo Xbox 360 comparten un único eje. Busca una opción XInput en el juego, un parche de la comunidad de una fuente fiable o usa una configuración de Steam Input.
¿Al navegador le importa si mi mando es XInput o DirectInput?
No directamente. El navegador presenta ambos a través de la Gamepad API. La diferencia que notarás es si informa del mapeo estándar o de una lista en bruto de botones y ejes.