Test de Manette
Testez les boutons, sticks, gâchettes, croix directionnelle et vibrations de votre manette dans le navigateur
Stick gauche
Stick droit
Gâchettes
Test des vibrations
Historique des événements
Qu'est-ce que le Test de Manette ?
Un test de manette lit les signaux que votre contrôleur envoie au navigateur via la Gamepad API du W3C et les affiche en temps réel : chaque appui de bouton, la position des sticks analogiques, la course des gâchettes, les directions de la croix directionnelle et les moteurs de vibration. C'est le moyen le plus rapide de vérifier qu'une manette fonctionne avant une partie, de diagnostiquer un bouton qui colle, de repérer le drift d'un stick usé ou de contrôler que les deux moteurs de vibration répondent. La page met en évidence chaque entrée sur un affichage de type Xbox, affiche les valeurs brutes des axes et des gâchettes, et conserve un bref journal des événements. Comme la Gamepad API n'expose un contrôleur qu'après un appui sur l'un de ses boutons, la page vous demandera d'abord d'appuyer sur une touche : c'est une règle de sécurité du navigateur, pas un défaut de votre manette. Tout s'exécute localement dans votre navigateur ; aucune donnée d'entrée ne quitte votre appareil.
Comment utiliser
Mode d'emploi
- Branchez votre manette en USB ou Bluetooth
- Appuyez sur n'importe quel bouton de la manette pour l'activer
- Observez l'affichage à l'écran s'illuminer quand vous appuyez sur les boutons ou bougez les sticks
- Utilisez les boutons de vibration pour tester les moteurs
- Consultez l'historique des événements pour vérifier que chaque appui a été enregistré
Astuces
- Une surbrillance verte signifie que l'entrée arrive correctement au navigateur
- Un contrôleur n'apparaît qu'après un appui sur l'un de ses boutons - c'est une règle de sécurité du navigateur
- La prise en charge des vibrations dépend du navigateur et de la manette ; Firefox est le plus complet
- Si un stick affiche une valeur non nulle au repos, l'étiquette de drift vous avertit d'un drift du stick
- Plusieurs manettes connectées peuvent être permutées via les pastilles d'emplacement
Cas d'utilisation
Principe technique
Le navigateur expose les manettes via la Gamepad API du W3C. Un contrôleur est représenté par un objet Gamepad obtenu depuis navigator.getGamepads(), qui renvoie jusqu'à quatre emplacements. Chaque gamepad comporte une chaîne id (fabricant et produit), un champ mapping ('standard' pour les périphériques de type Xbox, vide sinon), un tableau buttons et un tableau axes. Avec le mappage standard, buttons compte 17 entrées : quatre boutons de face (A/B/X/Y), deux bumpers (LB/RB), deux gâchettes analogiques (LT/RT), Select/Start, deux clics de stick (L3/R3), quatre directions de la croix directionnelle et le bouton Home/Guide. Chaque bouton expose .pressed (booléen) et .value (0 à 1 - les gâchettes sont analogiques, les boutons numériques valent 0 ou 1). Le tableau axes contient quatre valeurs comprises entre -1 et 1 : X/Y du stick gauche, puis X/Y du stick droit. L'API fonctionne par scrutation et non par événements : la page exécute donc une boucle requestAnimationFrame et relit une capture fraîche à chaque image. Pour éviter les re-rendus inutiles quand la manette est inactive, l'état n'est mis à jour que lorsque gamepad.timestamp change - cet horodatage avance à chaque nouveau rapport d'entrée. Les connexions et déconnexions arrivent sous forme d'événements window gamepadconnected et gamepaddisconnected. Pour des raisons de sécurité, un objet gamepad reste null tant que l'utilisateur n'a pas appuyé sur un bouton de la manette, donc la page ne peut pas lire silencieusement une manette qui vient d'être branchée. Les vibrations sont optionnelles : si gamepad.vibrationActuator existe, l'appel à playEffect('dual-rumble', { duration, weakMagnitude, strongMagnitude }) pilote les deux moteurs ; Safari et certaines versions de Chromium ne l'implémentent pas, c'est pourquoi la page fait une détection de fonctionnalité et désactive les boutons sinon.
- navigator.getGamepads() renvoie jusqu'à quatre emplacements ; un emplacement n'est non null qu'après un appui sur un bouton de la manette.
- Mappage standard : buttons[0-3] face, [4-5] bumpers, [6-7] gâchettes analogiques, [8-9] Select/Start, [10-11] L3/R3, [12-15] croix directionnelle, [16] Home.
- axes[0-1] est le stick gauche (X, Y), axes[2-3] le stick droit, chacun compris entre -1 et 1.
- Modèle par scrutation : une boucle requestAnimationFrame lit les captures ; gamepad.timestamp sert de porte pour que les images inactives ne fassent rien.
- Vibrations via gamepad.vibrationActuator.playEffect('dual-rumble', ...) - détectées par fonctionnalité, non prises en charge par tous les navigateurs.
- Les événements gamepadconnected / gamepaddisconnected signalent la connexion et la déconnexion ; le .index de la manette identifie son emplacement.
Exemples
Appui sur un bouton de face
Appuyez sur A -> buttons[0].pressed = true, value = 1.0Poussée du stick gauche
Poussez le stick gauche en haut à droite -> axes[0] = 0.71, axes[1] = -0.68Pression d'une gâchette
Pressez RT à mi-course -> buttons[7].value = 0.50, pressed = false (sous le seuil)FAQ
Pourquoi ma manette n'apparaît-elle pas quand je la branche ?
La Gamepad API garde un contrôleur masqué tant que vous n'appuyez pas sur l'un de ses boutons, afin d'empêcher les pages de faire discrètement l'empreinte des périphériques connectés. Branchez la manette en USB ou Bluetooth, placez le focus sur cet onglet, puis appuyez sur n'importe quel bouton - le panneau d'état passera à Connectée. Cette étape d'activation est une règle de sécurité du navigateur, pas un défaut.
Quels contrôleurs sont pris en charge ?
Tout contrôleur que le navigateur expose avec le mappage standard : manettes Xbox One/Series, DualShock 4 et DualSense (que la plupart des systèmes mappent en standard), ainsi que la plupart des manettes USB génériques. En Bluetooth ou en USB, le navigateur les normalise toutes vers la même disposition à 17 boutons et 4 axes. Les manettes non standard fonctionnent aussi, mais l'ordre de leurs boutons peut ne pas correspondre aux étiquettes à l'écran.
Pourquoi les vibrations ne fonctionnent-elles pas ?
La prise en charge des vibrations varie. Firefox est le plus complet ; Chrome et Edge la gèrent sur les versions récentes ; Safari ne l'implémente pas. La manette elle-même doit aussi exposer gamepad.vibrationActuator. La page le détecte et affiche un avertissement explicite « non pris en charge » au lieu de ne rien faire en silence : une absence de vibration est donc une limite du navigateur ou du matériel, pas un bug de l'outil.
Mon stick affiche une valeur sans que je le touche, est-il cassé ?
Une petite valeur proche de 0 correspond au bruit normal de la zone morte. Si un stick se maintient au-dessus d'environ 0,12 sur un des axes au repos, l'étiquette de drift passe à l'orange : c'est le drift classique du stick, causé par l'usure des modules de potentiomètre. C'est un problème matériel qui empire généralement avec le temps ; l'outil vous permet de le confirmer avant d'incriminer un jeu.
Des données sont-elles envoyées à un serveur ?
Non. La Gamepad API est lue entièrement dans votre navigateur. Les appuis de boutons, les positions de sticks et les commandes de vibration ne quittent jamais votre appareil. Rien n'est journalisé ni transmis.
Peut-on tester les gâchettes adaptatives du DualSense, le pavé tactile ou le gyroscope ?
Non. La Gamepad API standard n'expose que les boutons, les axes et les vibrations de base. Les gâchettes adaptatives du DualSense, le pavé tactile capacitif et les capteurs de mouvement ne font pas partie du standard web (certains se cachent derrière des extensions expérimentales mal prises en charge par les navigateurs), ils ne peuvent donc pas être testés de façon fiable depuis un navigateur.