Détecteur de keycode JavaScript, gratuit

Appuyez sur n'importe quelle touche de votre clavier pour voir ses propriétés d'événement JavaScript.

Appuyez sur une touche…

Une histoire de 30 ans des événements clavier en JavaScript

Aucune touche pressée pour l'instant

Comment ça marche

  1. Appuyez sur une touche : cliquez dans la zone de saisie et appuyez sur n'importe quelle touche, lettres, chiffres, touches de fonction, flèches, modificateurs ou touches spéciales.
  2. Lisez les codes de touche : l'outil affiche instantanément les valeurs event.key, event.code, event.keyCode (hérité) et charCode de la touche.
  3. Utilisez dans votre code : copiez les valeurs exactes nécessaires pour vos écouteurs d'événements clavier ou vos implémentations de raccourcis.

Pourquoi utiliser le détecteur de keycode ?

Les événements clavier JavaScript exposent plusieurs propriétés différentes (key, code, keyCode, charCode et which) et savoir laquelle utiliser et à quelle valeur comparer est systématiquement délicat. Le détecteur de KeyCode élimine les devinettes en vous permettant d'appuyer sur une touche et de voir immédiatement toutes ses propriétés d'événement. Précieux pour construire des raccourcis clavier, gérer les touches spéciales, implémenter des hotkeys et déboguer les écouteurs d'événements clavier.

Fonctionnalités

Questions fréquentes

Quelle est la différence entre event.key et event.keyCode ?

event.key est la norme moderne, elle renvoie une chaîne lisible comme « ArrowLeft » ou « Enter ». event.keyCode est un code numérique hérité (déprécié mais encore pris en charge). Utilisez event.key pour du nouveau code ; event.keyCode pour maintenir la compatibilité avec les anciens navigateurs.

Comment détecter Ctrl+S ou d'autres combinaisons de touches ?

Les combinaisons clavier utilisent event.key combiné à des vérifications de modificateurs : if (event.ctrlKey && event.key === "s"). Appuyez sur Ctrl+S dans cet outil pour voir toutes les valeurs, puis reproduisez la même condition dans votre écouteur d'événement.

Pourquoi certaines touches affichent-elles le même keyCode ?

Les valeurs keyCode n'ont pas été normalisées et certaines touches partagent des codes selon le contexte. event.code est plus fiable, elle identifie la position physique de la touche (par ex. « KeyA ») quelle que soit la disposition du clavier, tandis qu'event.key reflète le caractère produit par cette touche.

Une histoire de 30 ans des événements clavier en JavaScript

Les événements clavier ont une histoire notoirement chaotique dans le DOM. Netscape Navigator 2 (1995) a introduit les gestionnaires originaux onkeydown, onkeypress et onkeyup avec une propriété numérique keyCode, qui n'avait pas de spec ; les navigateurs ont chacun inventé leurs propres valeurs. Internet Explorer 4 (1997) a implémenté sa propre variante avec event.keyCode comme seule propriété, tandis que Netscape s'en tenait à event.which. DOM Level 2 Events (W3C, novembre 2000) a normalisé le flux d'événements (capture/bouillonnement) mais a explicitement laissé de côté les événements clavier parce que les vendeurs ne pouvaient pas s'accorder. Le résultat : les développeurs ont écrit du code comme e.keyCode || e.which pendant plus d'une décennie. DOM Level 3 Events (W3C Working Draft 2003, Recommandation 2018) a enfin introduit le moderne event.key (caractère Unicode ou touche nommée comme «ArrowLeft») et event.code (position physique de la touche comme «KeyA», indépendant de la disposition), tout en dépréciant keyCode, charCode et which. La spécification UI Events (W3C, en cours) est la maison moderne de ce travail. Les navigateurs ont rattrapé progressivement : Chrome 51 (mai 2016), Firefox 47 (juin 2016), Safari 10.1 (mars 2017) ont tous livré le support de event.code. L'événement legacy keypress est déprécié au profit des événements beforeinput et input.

Les 5 propriétés, décodées

Où la recherche de code de touche compte vraiment

Erreurs courantes dans la gestion des événements clavier

Autres questions fréquemment posées

Pourquoi mon gestionnaire de touche ne se déclenche-t-il pas quand l'utilisateur a un clavier non-US ?

Presque toujours parce que vous vérifiez event.key pour un caractère qui n'existe qu'avec Shift sur cette disposition. Sur un clavier allemand QWERTZ, «/» est Shift+7 (pas sa propre touche) ; sur AZERTY français, les chiffres 0-9 sont tapés avec Shift+la-ligne-au-dessus. Utilisez event.code (touche physique) pour les raccourcis basés sur la position, ou event.key pour les raccourcis basés sur le contenu (où vous voulez vraiment le caractère que l'utilisateur vient de taper).

Comment gérer Cmd+K / Ctrl+K de manière cohérente entre plateformes ?

L'idiome standard : if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { e.preventDefault(); openPalette(); }. Sur macOS, e.metaKey est la touche Cmd ; sur Windows/Linux, e.ctrlKey est ce que les utilisateurs attendent. Accepter les deux. Toujours preventDefault parce que le navigateur lie Cmd+K à «focus barre d'adresse» dans certains navigateurs. Ajoutez !e.repeat pour éviter de se déclencher sur maintien-touche.

JavaScript peut-il détecter les frappes globales en dehors de la page ?

Non, et c'est par design pour la sécurité. Le navigateur ne déclenche les événements clavier que pour la page ou l'élément focalisé. Les extensions navigateur peuvent écouter avec une portée plus large en utilisant l'API chrome.commands. Les apps natives dans Electron, Tauri, etc., peuvent utiliser des hooks globaux au niveau OS. Les apps bancaires et 2FA dépendent de cette isolation : un onglet malveillant ne peut pas keylogger votre gestionnaire de mots de passe.

Quelle est la bonne façon de détecter «vient d'être pressé» vs «en cours de maintien» ?

Pour les bascules, vérifiez !e.repeat dans le gestionnaire keydown: le premier événement a repeat: false, les événements suivants d'auto-répétition ont repeat: true. Pour les actions continues (mouvement de jeu), suivez l'état des touches dans un Set : ajoutez sur keydown, supprimez sur keyup, puis dans votre boucle de rendu vérifiez keysHeld.has("KeyW"). Cela découple l'entrée du framerate et gère plusieurs touches simultanées (déplacer + sauter).

Quelque chose est-il envoyé à un serveur quand j'appuie sur des touches ici ?

Non. Les événements clavier sont capturés localement par JavaScript et affichés sur cette page sans aucune requête réseau. Ouvrez l'onglet Network dans DevTools, tapez ; vous verrez zéro trafic sortant. Sûr pour tester dans n'importe quel contexte, y compris découvrir ce que produisent les mots de passe ou raccourcis sensibles sur votre clavier.

Outils associés