# Donnez à la saisie au clavier un contrat clair

> Rendez le jeu au clavier prévisible en choisissant les touches sémantiques, en gérant l'état d'appui et de relâchement et en évitant les conflits avec les paramètres par défaut du navigateur.

- URL: https://oneshotgems.ai/fr/topics/keyboard-controls-for-games
- Catégorie: Pour les développeurs de jeux
- Type: Guide
- Mis à jour le: 5 octobre 2026

Le contrôle au clavier est fiable lorsque chaque touche a une fonction claire et que le jeu distingue un appui bref du maintien d’une touche. Notez les commandes prévues avant de les implémenter : par exemple, les flèches dirigent, Espace déclenche une action et Échap ouvre un menu de pause uniquement si ce menu existe. Testez ensuite le focus, la répétition et le relâchement au lieu de vérifier un seul keydown.

## Choisissez les clés par signification et disposition

Utilisez KeyboardEvent.key lorsque l’action doit dépendre du caractère produit par la disposition du clavier de la personne, et KeyboardEvent.code lorsque la position physique de la touche compte davantage. Cette distinction a un effet selon les dispositions. Proposez une correspondance cohérente et affichez-la dans les instructions au lieu de supposer que tout le monde utilise WASD.

N’interceptez pas les touches lorsqu’un champ texte ou un contrôle modifiable a le focus. Empêchez les comportements par défaut du navigateur, comme le défilement de la page, uniquement si la surface de jeu gère activement cette touche. Le jeu ne détournera ainsi ni la saisie normale ni la navigation avant que la personne entre dans la zone interactive.

## Suivre les touches maintenues et leur relâchement

Pour les déplacements continus, activez l’état maintenu d’une touche sur keydown et effacez-le sur keyup. Le navigateur peut répéter keydown tant que la touche reste enfoncée. Une action ponctuelle comme sauter doit donc ignorer ces répétitions, sauf si elles sont voulues. Effacez les touches maintenues lorsque le jeu perd le focus ou que la fenêtre est floutée : l’événement keyup peut ne pas arriver au jeu si le focus est déjà parti ailleurs.

Testez deux touches en même temps, une pression longue, un appui bref et le comportement lorsque le focus quitte puis revient au jeu. Pour les actions ponctuelles, ignorez les keydown répétés sauf si la répétition est prévue. MDN documente KeyboardEvent.key, KeyboardEvent.code et les types d’événements ; choisissez la propriété adaptée à votre correspondance.

## Questions

**Faut-il utiliser KeyboardEvent.key ou KeyboardEvent.code pour une commande de jeu ?** Utilisez KeyboardEvent.key si le caractère ou la disposition du clavier doit déterminer l’action. Utilisez KeyboardEvent.code si la position physique de la touche est la commande voulue. Indiquez clairement votre choix et testez d’autres dispositions.

**Pourquoi effacer les touches maintenues lorsque la page perd le focus ?** Après un changement de focus, le navigateur peut ne pas transmettre au jeu l’événement de relâchement keyup. Effacer l’état des entrées évite qu’un déplacement reste actif au retour de la personne.

## Suivez votre curiosité

- [Gérer le focus dans les jeux par navigateur](https://oneshotgems.ai/fr/topics/game-focus-management): Rendez la saisie au clavier, les menus et les chemins de retour prévisibles en donnant au jeu un état de focus visible et en rétablissant le focus après la fermeture des superpositions.
- [Tester les commandes des jeux par navigateur sur différents appareils](https://oneshotgems.ai/fr/topics/testing-game-input-devices): Créez une petite matrice de test d'entrée qui couvre le comportement réel du toucher, de la souris, du clavier et de l'orientation au lieu de vous fier à une seule session de bureau.
- [Éviter que des touches restent bloquées dans les jeux par navigateur](https://oneshotgems.ai/fr/topics/preventing-stuck-game-keys): Relâchez le mouvement maintenu en toute sécurité lorsque la mise au point ou la visibilité change, et testez les chemins de flou, de pause et de redémarrage qui peuvent bloquer les entrées du jeu.

## Pour aller plus loin

- [MDN : Événement clavier](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)

---
Page canonique: https://oneshotgems.ai/fr/topics/keyboard-controls-for-games
