La propriété KeyboardEvent.code représente une touche physique du clavier (contrairement au caractère généré par celle-ci). En d'autres termes, cette propriété retourne une valeur qui n'est pas modifiée par la disposition du clavier ou l'état des touches de modification.

Si le clavier n'est pas physique, la valeur retournée sera définie par le navigateur pour être le plus proche possible des valeurs retournées par un clavier physique afin de maximiser la compatibilité entre un clavier physique et virtuel.

Cette propriété est utile quand vous souhaitez manipuler les clés en fonction de leur position physique sur le clavier et non les caractères associés au clés (par exemple pour les touches de déplacement d'un jeu vidéo). Attention toutefois, on ne pourra pas utiliser la valeur fournie par KeyboardEvent.code afin de déterminer le caractère utilisé sur le clavier.

Par exemple, le code retourné est "KeyQ" pour le caractère "q" sur un clavier QWERTY, mais le même code représente le caractère "'"  sur un clavier Dvorak, et le caractère "a" sur un clavier AZERTY. Cela rend impossible l'utilisation du code pour déterminer le code d'une clé destiné aux utilisateurs s'ils n'utilisent pas une disposition de clavier anticipé.

Pour déterminer quel caractère correspond à un key event, utilisez plutôt la propriété KeyboardEvent.key.

Exemples

Pratiquer KeyboardEvent

HTML

<p>
   Appuyez sur une touche du clavier pour voir quelle valeur clé de
   KeyboardEvent correspond à chaque événement
</p>
<div id="output">
</div>

CSS

#output {
  font-family: Arial, Helvetica, sans-serif;
  border: 1px solid black;
}

JavaScript

window.addEventListener("keydown", function(event) {
  let str = "KeyboardEvent: key='" + event.key + "' | code='" +
            event.code + "'";
  let el = document.createElement("span");
  el.innerHTML = str + "<br/>";
 
  document.getElementById("output").appendChild(el);
}, true);

Résultat

Pour essayer ce code, cliquez sur le lien ci-dessous:

Gérer les événements de clavier dans un jeu

Cet exemple établit un écouteur d'événements pour l'événement keydown  qui gère la saisie au clavier pour un jeu qui utilise la disposition de clavier typique "ZQSD" pour se déplacer en avant, à gauche, en arrière et à droite. Cela utilisera les quatre mêmes touches physiquement, quels que soient les caractères correspondants, par exemple si l'utilisateur utilise un clavier QWERTY.

HTML

<p>Appuyez sur les touches ZQSD (WASP sur QWERTY) pour bouger et pour vous diriger</p>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="world">
  <polygon id="spaceship" points="15,0 0,30 30,30"/>
</svg>
<script>refresh();</script>

CSS

.world {
  margin: 0px;
  padding: 0px;
  background-color: black;
  width: 400px;
  height: 400px;
}

#spaceship {
  fill: orange;
  stroke: red;
  stroke-width: 2px;
}

JavaScript

La première section du code JavaScript établit certaines variables que nous allons utiliser. shipSize contient la taille du vaisseau dans lequel le joueur se déplace, pour plus de commodité. position est utilisé pour suivre la position du vaisseau sur le terrain de jeu. moveRate et turnRate sont le nombre de pixels en avant et en arrière chaque fois que vous appuyez sur une touche pour déplacer le vaisseau et le nombre de degrés de rotation que les commandes de direction gauche et droite appliquent à chaque frappe. angle est la quantité actuelle de rotation appliquée au vaisseau, en degrés; il commence à 0 ° (pointant tout droit). Enfin, spaceship est défini pour faire référence à l'élément portant l'ID "spaceship", qui est le polygone SVG représentant le vaisseau que le joueur contrôle.

let shipSize = {
  width: 30,
  height: 30
};

let position = {
  x: 200,
  y: 200
};

let moveRate = 9;
let turnRate = 5;

let angle = 0;

let spaceship = document.getElementById("spaceship");

Vient ensuite la fonction updatePosition(). Cette fonction prend en entrée la distance à laquelle le vaisseau doit être déplacé, où positif est un mouvement en avant et négatif est un mouvement en arrière. Cette fonction calcule la nouvelle position du vaisseau en fonction de la distance parcourue et de la direction actuelle du vaisseau. Il veille également à ce que le vaisseau franchisse les limites du terrain de jeu au lieu de disparaître.

function updatePosition(offset) {
  let rad = angle * (Math.PI/180);
  position.x += (Math.sin(rad) * offset);
  position.y -= (Math.cos(rad) * offset);
 
  if (position.x < 0) {
    position.x = 399;
  } else if (position.x > 399) {
    position.x = 0;
  }
 
  if (position.y < 0) {
    position.y = 399;
  } else if (position.y > 399) {
    position.y = 0;
  }
}

La fonction refresh() gère l'application de la rotation et de la position à l'aide d'un SVG transform.

function refresh() {
  let x = position.x - (shipSize.width/2);
  let y = position.y - (shipSize.height/2);
  let transform = "translate(" + x + " " + y + ") rotate(" + angle + " 15 15) ";

  spaceship.setAttribute("transform", transform);
}

Enfin, la méthode addEventListener() est utilisée pour commencer à écouter les événements keydown, en mettant à jour chaque touche en mettant à jour la position et l’angle de rotation du vaisseau, puis en appelant la méthode refresh() pour tracer le navire dans sa nouvelle position et son nouvel angle.

window.addEventListener("keydown", function(event) {
  if (event.preventDefaulted) {
    return; // Do nothing if event already handled
  }
 
  switch(event.code) {
    case "KeyS":
    case "ArrowDown":
      // Handle "back"
      updatePosition(-moveRate);
      break;
    case "KeyW":
    case "ArrowUp":
      // Handle "forward"
      updatePosition(moveRate);
      break;
    case "KeyA":
    case "ArrowLeft":
      // Handle "turn left"
      angle -= turnRate;
      break;
    case "KeyD":
    case "ArrowRight":
      // Handle "turn right"
      angle += turnRate;
      break;
  }
 
  refresh();
 
  // Consume the event so it doesn't get handled twice
  event.preventDefault();
}, true);

Résultat

Pour essayer le code ci-dessus, cliquez sur le bouton ci-dessous:

Ce code peut être amélioré de plusieurs manières. La plupart des jeux réels surveillent les événements keydown, démarrent le mouvement lorsque cela se produit et stoppent le mouvement lorsque l'événement keyup se produit, au lieu de compter sur des répétitions de touches. Cela permettrait des mouvements plus fluides et plus rapides, mais permettrait également au joueur de bouger et de diriger en même temps. Des transitions ou des animations peuvent également être utilisées pour rendre le mouvement du navire plus fluide. Pour permettre cela, il ne faudrait pas utiliser de switch, ni de else if.ff

Spécifications

Spécification État Commentaires
UI Events
La définition de 'KeyboardEvent.code' dans cette spécification.
Version de travail Définition initiale, inclut les valeurs de code.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
codeChrome Support complet OuiEdge Aucun support NonFirefox Support complet OuiIE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Valeur des codes

Les tableaux suivants indiquent les valeurs de code utilisées pour chaque code scancode ou code clé virtuel natif sur les principales plates-formes. Certains navigateurs choisissant d'interpréter différemment les clés physiques, il existe certaines différences entre les clés et les codes. Ces tableaux montrent ces variations lorsqu'elles sont connues.

Valeur des codes sur Windows

Ce tableau présente les codes de balayage Windows représentant les clés et les valeurs KeyboardEvent.code correspondant à ces clés matérielles. Seules les clés générant des codes de balayage sous Windows sont répertoriées.

 
  Valeur de KeyboardEvent.code
Code Firefox Chrome
0x0000

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0001 "Escape" "Escape"
0x0002 "Digit0" "Digit0"
0x0003 "Digit1" "Digit1"
0x0004 "Digit2" "Digit2"
0x0005 "Digit3" "Digit3"
0x0006 "Digit4" "Digit4"
0x0007 "Digit5" "Digit5"
0x0008 "Digit6" "Digit6"
0x0009 "Digit7" "Digit7"
0x000A "Digit8" "Digit8"
0x000B "Digit9" "Digit9"
0x000C "Minus" "Minus"
0x000D "Equal" "Equal"
0x000E "Backspace" "Backspace"
0x000F "Tab" "Tab"
0x0010 "KeyQ" "KeyQ"
0x0011 "KeyW" "KeyW"
0x0012 "KeyE" "KeyE"
0x0013 "KeyR" "KeyR"
0x0014 "KeyT" "KeyT"
0x0015 "KeyY" "KeyY"
0x0016 "KeyU" "KeyU"
0x0017 "KeyI" "KeyI"
0x0018 "KeyO" "KeyO"
0x0019 "KeyP" "KeyP"
0x001A "BracketLeft" "BracketLeft"
0x001B "BracketRight" "BracketRight"
0x001C "Enter" "Enter"
0x001D "ControlLeft" "ControlLeft"
0x001E "KeyA" "KeyA"
0x001F "KeyS" "KeyS"
0x0020 "KeyD" "KeyD"
0x0021 "KeyF" "KeyF"
0x0022 "KeyG" "KeyG"
0x0023 "KeyH" "KeyH"
0x0024 "KeyJ" "KeyJ"
0x0025 "KeyK" "KeyK"
0x0026 "KeyL" "KeyL"
0x0027 "Semicolon" "Semicolon"
0x0028 "Quote" "Quote"
0x0029 "Backquote" "Backquote"
0x002A "ShiftLeft" "ShiftLeft"
0x002B "Backslash" "Backslash"
0x002C "KeyZ" "KeyZ"
0x002D "KeyX" "KeyX"
0x002E "KeyC" "KeyC"
0x002F "KeyV" "KeyV"
0x0030 "KeyB" "KeyB"
0x0031 "KeyN" "KeyN"
0x0032 "KeyM" "KeyM"
0x0033 "Comma" "Comma"
0x0034 "Period" "Period"
0x0035 "Slash" "Slash"
0x0036 "ShiftRight" "ShiftRight"
0x0037 "NumpadMultiply" "NumpadMultiply"
0x0038 "AltLeft" "AltLeft"
0x0039 "Space" "Space"
0x003A "CapsLock" "CapsLock"
0x003B "F1" "F1"
0x003C "F2" "F2"
0x003D "F3" "F3"
0x003E "F4" "F4"
0x003F "F5" "F5"
0x0040 "F6" "F6"
0x0041 "F7" "F7"
0x0042 "F8" "F8"
0x0043 "F9" "F9"
0x0044 "F10" "F10"
0x0045 "Pause" "Pause"
0x0046 "ScrollLock" "ScrollLock"
0x0047 "Numpad7" "Numpad7"
0x0048 "Numpad8" "Numpad8"
0x0049 "Numpad9" "Numpad9"
0x004A "NumpadSubtract" "NumpadSubtract"
0x004B "Numpad4" "Numpad4"
0x004C "Numpad5" "Numpad5"
0x004D "Numpad6" "Numpad6"
0x004E "NumpadAdd" "NumpadAdd"
0x004F "Numpad1" "Numpad1"
0x0050 "Numpad2" "Numpad2"
0x0051 "Numpad3" "Numpad3"
0x0052 "Numpad0" "Numpad0"
0x0053 "NumpadDecimal" "NumpadDecimal"
0x0054 (Alt + PrintScreen) "PrintScreen" ""
0x0055

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0056 "IntlBackslash" "IntlBackslash"
0x0057 "F11" "F11"
0x0058 "F12" "F12"
0x0059 "NumpadEqual" ""
0x005A

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x005B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"F13"
0x005C

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"F14"
0x005D

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"F15"
0x005E

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x005F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0060

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0061

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0062

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0063

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"F16"
0x0064 "F13" "F17"
0x0065 "F14" "F18"
0x0066 "F15" "F19"
0x0067 "F16" "F20"
0x0068 "F17" "F21"
0x0069 "F18" "F22"
0x006A "F19" "F23"
0x006B "F20" "F24"
0x006C "F21" ""
0x006D "F22" ""
0x006E "F23" ""
0x006F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0070 "KanaMode" ""
0x0071 ( touche Hanja sans disposition de clavier coréen) "Lang2" ""
0x0072 (touche Han/Yeong sans disposition de clavier coréen) "Lang1" ""
0x0073 "IntlRo" ""
0x0074, 0x0075

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0076 "F24" ""
0x0077, 0x0078

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x0079 "Convert" ""
0x007A

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x007B "NonConvert" ""
0x007C

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).
""
0x007D "IntlYen" "IntlYen"
0x007E "NumpadComma" ""
0x007F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE0000xE007

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE008

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"Undo"
0xE009

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE00A "" "Paste"
0xE00B0xE00F "" ""
0xE010 "MediaTrackPrevious" "MediaTrackPrevious"
0xE0110xE016 "" ""
0xE017

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"Cut"
0xE018

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"Copy"
0xE019 "MediaTrackNext" "MediaTrackNext"
0xE01A, 0xE01B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE01C "NumpadEnter" "NumpadEnter"
0xE01D "ControlRight" "ControlRight"
0xE01E

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"LaunchMail"
0xE01F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE020 "AudioVolumeMute" (était "VolumeMute" jusqu'à Firefox 49) "AudioVolumeMute" (était "VolumeMute" jusqu'à Chrome 50)
0xE021 "LaunchApp2" ""
0xE022 "MediaPlayPause" "MediaPlayPause"
0xE023

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE024 "MediaStop" "MediaStop"
0xE0250xE02B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE02C

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"Eject"
0xE02D

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE02E

"AudioVolumeDown"

Avant Firefox 48, ce code renvoyait "VolumeDown".

"VolumeDown" (était "VolumeDown" jusqu'à Chrome 50)
0xE02F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE030

"AudioVolumeUp"

Avant Firefox 48, ce code renvoyait "VolumeUp".

"VolumeUp" (was "VolumeUp" until Chrome 50)
0xE031

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE032 "BrowserHome" "BrowserHome"
0xE033, 0xE034

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE035 "NumpadDivide" "NumpadDivide"
0xE036

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE037 "PrintScreen" "PrintScreen"
0xE038 "AltRight" "AltRight"
0xE039, 0xE03A

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE03B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"Help"
0xE03C0xE044

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE045 "NumLock" "NumLock"
0xE046 (Ctrl + Pause) "Pause" "Pause"
0xE047 "Home" "Home"
0xE048 "ArrowUp" "ArrowUp"
0xE049 "PageUp" "PageUp"
0xE04A

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE04B "ArrowLeft" "ArrowLeft"
0xE04C

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE04D "ArrowRight" "ArrowRight"
0xE04E

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE04F "End" "End"
0xE050 "ArrowDown" "ArrowDown"
0xE051 "PageDown" "PageDown"
0xE052 "Insert" "Insert"
0xE053 "Delete" "Delete"
0xE0540xE05A

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE05B

"MetaLeft"

Avant Firefox 48, ce code renvoyait "OSLeft".

"OSLeft"
0xE05C

"MetaRight"

Avant Firefox 48, ce code renvoyait "OSRight".

"OSRight"
0xE05D "ContextMenu" "ContextMenu"
0xE05E "Power" ""
0xE05F0xE064

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE065 "BrowserSearch" "BrowserSearch"
0xE066 "BrowserFavorites" "BrowserFavorites"
0xE067 "BrowserRefresh" "BrowserRefresh"
0xE068 "BrowserStop" "BrowserStop"
0xE069 "BrowserForward" "BrowserForward"
0xE06A "BrowserBack" "BrowserBack"
0xE06B "LaunchApp1" ""
0xE06C "LaunchMail" ""
0xE06D "LaunchMediaPlayer" ("MediaSelect" prior to Firefox 49) ""
0xE06E ~ 0xE0F0

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0xE0F1 (touche Hanja avec disposition du clavier coréen) "Lang2" ""
0xE0F2 (touche Han/Yeong avec disposition du clavier coréen) "Lang1" ""

Valeur des codes sur Mac

Sous Mac OS X, il est difficile d’obtenir du scancode ou d’autre chose qui puisse distinguer une clé physique d’un événement clé. Par conséquent, Gecko mappe toujours la valeur du code à partir du keycode virtuel.

Keycode virtuel Gecko Chromium (48)
kVK_ANSI_A (0x00) "KeyA" "KeyA"
kVK_ANSI_S (0x01) "KeyS" "KeyS"
kVK_ANSI_D (0x02) "KeyD" "KeyD"
kVK_ANSI_F (0x03) "KeyF" "KeyF"
kVK_ANSI_H (0x04) "KeyH" "KeyH"
kVK_ANSI_G (0x05) "KeyG" "KeyG"
kVK_ANSI_Z (0x06) "KeyZ" "KeyZ"
kVK_ANSI_X (0x07) "KeyX" "KeyX"
kVK_ANSI_C (0x08) "KeyC" "KeyC"
kVK_ANSI_V (0x09) "KeyV" "KeyV"
kVK_ISO_Section (0x0A) "IntlBackslash" "IntlBackslash"
kVK_ANSI_B (0x0B) "KeyB" "KeyB"
kVK_ANSI_Q (0x0C) "KeyQ" "KeyQ"
kVK_ANSI_W (0x0D) "KeyW" "KeyW"
kVK_ANSI_E (0x0E) "KeyE" "KeyE"
kVK_ANSI_R (0x0F) "KeyR" "KeyR"
kVK_ANSI_Y (0x10) "KeyY" "KeyY"
kVK_ANSI_T (0x11) "KeyT" "KeyT"
kVK_ANSI_1 (0x12) "Digit1" "Digit1"
kVK_ANSI_2 (0x13) "Digit2" "Digit2"
kVK_ANSI_3 (0x14) "Digit3" "Digit3"
kVK_ANSI_4 (0x15) "Digit4" "Digit4"
kVK_ANSI_6 (0x16) "Digit6" "Digit6"
kVK_ANSI_5 (0x17) "Digit5" "Digit5"
kVK_ANSI_Equal (0x18) "Equal" "Equal"
kVK_ANSI_9 (0x19) "Digit9" "Digit9"
kVK_ANSI_7 (0x1A) "Digit7" "Digit7"
kVK_ANSI_Minus (0x1B) "Minus" "Minus"
kVK_ANSI_8 (0x1C) "Digit8" "Digit8"
kVK_ANSI_0 (0x1D) "Digit0" "Digit0"
kVK_ANSI_RightBracket (0x1E) "BracketRight" "BracketRight"
kVK_ANSI_O (0x1F) "KeyO" "KeyO"
kVK_ANSI_U (0x20) "KeyU" "KeyU"
kVK_ANSI_LeftBracket (0x21) "BracketLeft" "BracketLeft"
kVK_ANSI_I (0x22) "KeyI" "KeyI"
kVK_ANSI_P (0x23) "KeyP" "KeyP"
kVK_Return (0x24) "Enter" "Enter"
kVK_ANSI_L (0x25) "KeyL" "KeyL"
kVK_ANSI_J (0x26) "KeyJ" "KeyJ"
kVK_ANSI_Quote (0x27) "Quote" "Quote"
kVK_ANSI_K (0x28) "KeyK" "KeyK"
kVK_ANSI_Semicolon (0x29) "Semicolon" "Semicolon"
kVK_Tab (0x30) "Tab" "Tab"
kVK_Space (0x31) "Space" "Space"
kVK_ANSI_Grave (0x32) "Backquote" "Backquote"
kVK_Delete (0x33) "Backspace" "Backspace"
Enter key on keypad of PowerBook (0x34) "NumpadEnter" ""
kVK_Escape (0x35) "Escape" "Escape"
right-command key (0x36) "OSRight" "OSRight"
kVK_Command (0x37) "OSLeft" "OSLeft"
kVK_Shift (0x38) "ShiftLeft" "ShiftLeft"
kVK_CapsLock (0x39) "CapsLock" "CapsLock"
kVK_Option (0x3A) "AltLeft" "AltLeft"
kVK_Control (0x3B) "ControlLeft" "ControlLeft"
kVK_RightShift (0x3C) "ShiftRight" "ShiftRight"
kVK_RightOption (0x3D) "AltRight" "AltRight"
kVK_RightControl (0x3E) "ControlRight" "ControlRight"
kVK_Function (0x3F) "Fn" (no events fired actually) "" (no events fired actually)
kVK_F17 (0x40) "F17" "F17"
kVK_ANSI_KeypadDecimal (0x41) "NumpadDecimal" "NumpadDecimal"
kVK_ANSI_KeypadMultiply (0x43) "NumpadMultiply" "NumpadMultiply"
kVK_ANSI_KeypadPlus (0x45) "NumpadAdd" "NumpadAdd"
kVK_ANSI_KeypadClear (0x47) "NumLock" "NumLock"
kVK_VolumeUp (0x48) "AudioVolumeUp" (était "VolumeUp" jusqu'à Firefox 48) "AudioVolumeUp" (était "VolumeUp" jusqu'à Chrome 50)
kVK_VolumeDown (0x49) "AudioVolumeDown" (était "VolumeDown" jusqu'à Firefox 49) "AudioVolumeDown" (était "VolumeDown" jusqu'à Chrome 50)
kVK_Mute (0x4A) "AudioVolumeMute" (était "VolumeMute" jusqu'à Firefox 49) "AudioVolumeMute" (était "VolumeMute" jusqu'à Chrome 50)
kVK_ANSI_KeypadDivide (0x4B) "NumpadDivide" "NumpadDivide"
kVK_ANSI_KeypadEnter (0x4C) "NumpadEnter" "NumpadEnter"
kVK_ANSI_KeypadMinus (0x4E) "NumpadSubtract" "NumpadSubtract"
kVK_F18 (0x4F) "F18" "F18"
kVK_F19 (0x50) "F19" "F19"
kVK_ANSI_KeypadEquals (0x51) "NumpadEqual" "NumpadEqual"
kVK_ANSI_Keypad0 (0x52) "Numpad0" "Numpad0"
kVK_ANSI_Keypad1 (0x53) "Numpad1" "Numpad1"
kVK_ANSI_Keypad2 (0x54) "Numpad2" "Numpad2"
kVK_ANSI_Keypad3 (0x55) "Numpad3" "Numpad3"
kVK_ANSI_Keypad4 (0x56) "Numpad4" "Numpad4"
kVK_ANSI_Keypad5 (0x57) "Numpad5" "Numpad5"
kVK_ANSI_Keypad6 (0x58) "Numpad6" "Numpad6"
kVK_ANSI_Keypad7 (0x59) "Numpad7" "Numpad7"
kVK_F20 (0x5A) "F20" "F20"
kVK_ANSI_Keypad8 (0x5B) "Numpad8" "Numpad8"
kVK_ANSI_Keypad9 (0x5C) "Numpad9" "Numpad9"
kVK_JIS_Yen (0x5D) "IntlYen" "IntlYen"
kVK_JIS_Underscore (0x5E) "IntlRo" "IntlRo"
kVK_JIS_KeypadComma (0x5F) "NumpadComma" "NumpadComma"
kVK_F5 (0x60) "F5" "F5"
kVK_F6 (0x61) "F6" "F6"
kVK_F7 (0x62) "F7" "F7"
kVK_F3 (0x63) "F3" "F3"
kVK_F8 (0x64) "F8" "F8"
kVK_F9 (0x65) "F9" "F9"
kVK_JIS_Eisu (0x66)

"Lang2"

Avant Firefox 37, cette touche générait le code incorrect "RomanCharacters".

"" (aucun évènement n'est déclenché)
kVK_F11 (0x67) "F11" "F11"
kVK_JIS_Kana (0x68) "Lang1" "KanaMode" (aucun évènement n'est déclenché)
kVK_F13 (0x69) "F13" "F13"
kVK_F16 (0x6A) "F16" "F16"
kVK_F14 (0x6B) "F14" "F14"
kVK_F10 (0x6D) "F10" "F10"
kVK_F12 (0x6F) "F12" "F12"
kVK_F15 (0x71) "F15" "F15"
kVK_Help (0x72) "Help" "Insert"
kVK_Home (0x73) "Home" "Home"
kVK_PageUp (0x74) "PageUp" "PageUp"
kVK_ForwardDelete (0x75) "Delete" "Delete"
kVK_F4 (0x76) "F4" "F4"
kVK_End (0x77) "End" "End"
kVK_F2 (0x78) "F2" "F2"
kVK_PageDown (0x79) "PageDown" "PageDown"
kVK_F1 (0x7A) "F1" "F1"
kVK_LeftArrow (0x7B) "ArrowLeft" "ArrowLeft"
kVK_RightArrow (0x7C) "ArrowRight" "ArrowRight"
kVK_DownArrow (0x7D) "ArrowDown" "ArrowDown"
kVK_UpArrow (0x7E) "ArrowUp" "ArrowUp"

Valeur des codes sous Linux (X11) (quand le ScanCode est disponible)

Notez que X a trop de touches et que certaines ne sont pas testables avec le clavier habituel. Ainsi, le tableau suivant est créé à partir du code source qui mappe de scancode à la valeur du code.

scancode (hardware_keycode) Gecko Chromium (44)
0x0009 "Escape" "Escape"
0x000A "Digit1" "Digit1"
0x000B "Digit2" "Digit2"
0x000C "Digit3" "Digit3"
0x000D "Digit4" "Digit4"
0x000E "Digit5" "Digit5"
0x000F "Digit6" "Digit6"
0x0010 "Digit7" "Digit7"
0x0011 "Digit8" "Digit8"
0x0012 "Digit9" "Digit9"
0x0013 "Digit0" "Digit0"
0x0014 "Minus" "Minus"
0x0015 "Equal" "Equal"
0x0016 "Backspace" "Backspace"
0x0017 "Tab" "Tab"
0x0018 "KeyQ" "KeyQ"
0x0019 "KeyW" "KeyW"
0x001A "KeyE" "KeyE"
0x001B "KeyR" "KeyR"
0x001C "KeyT" "KeyT"
0x001D "KeyY" "KeyY"
0x001E "KeyU" "KeyU"
0x001F "KeyI" "KeyI"
0x0020 "KeyO" "KeyO"
0x0021 "KeyP" "KeyP"
0x0022 "BracketLeft" "BracketLeft"
0x0023 "BracketRight" "BracketRight"
0x0024 "Enter" "Enter"
0x0025 "ControlLeft" "ControlLeft"
0x0026 "KeyA" "KeyA"
0x0027 "KeyS" "KeyS"
0x0028 "KeyD" "KeyD"
0x0029 "KeyF" "KeyF"
0x002A "KeyG" "KeyG"
0x002B "KeyH" "KeyH"
0x002C "KeyJ" "KeyJ"
0x002D "KeyK" "KeyK"
0x002E "KeyL" "KeyL"
0x002F "Semicolon" "Semicolon"
0x0030 "Quote" "Quote"
0x0031 "Backquote" "Backquote"
0x0032 "ShiftLeft" "ShiftLeft"
0x0033 "Backslash" "Backslash"
0x0034 "KeyZ" "KeyZ"
0x0035 "KeyX" "KeyX"
0x0036 "KeyC" "KeyC"
0x0037 "KeyV" "KeyV"
0x0038 "KeyB" "KeyB"
0x0039 "KeyN" "KeyN"
0x003A "KeyM" "KeyM"
0x003B "Comma" "Comma"
0x003C "Period" "Period"
0x003D "Slash" "Slash"
0x003E "ShiftRight" "ShiftRight"
0x003F "NumpadMultiply" "NumpadMultiply"
0x0040 "AltLeft" "AltLeft"
0x0041 "Space" "Space"
0x0042 "CapsLock" "CapsLock"
0x0043 "F1" "F1"
0x0044 "F2" "F2"
0x0045 "F3" "F3"
0x0046 "F4" "F4"
0x0047 "F5" "F5"
0x0048 "F6" "F6"
0x0049 "F7" "F7"
0x004A "F8" "F8"
0x004B "F9" "F9"
0x004C "F10" "F10"
0x004D "NumLock" "NumLock"
0x004E "ScrollLock" "ScrollLock"
0x004F "Numpad7" "Numpad7"
0x0050 "Numpad8" "Numpad8"
0x0051 "Numpad9" "Numpad9"
0x0052 "NumpadSubtract" "NumpadSubtract"
0x0053 "Numpad4" "Numpad4"
0x0054 "Numpad5" "Numpad5"
0x0055 "Numpad6" "Numpad6"
0x0056 "NumpadAdd" "NumpadAdd"
0x0057 "Numpad1" "Numpad1"
0x0058 "Numpad2" "Numpad2"
0x0059 "Numpad3" "Numpad3"
0x005A "Numpad0" "Numpad0"
0x005B "NumpadDecimal" "NumpadDecimal"
0x005C, 0x005D "Unidentified" ""
0x005E "IntlBackslash" "IntlBackslash"
0x005F "F11" "F11"
0x0060 "F12" "F12"
0x0061 "IntlRo" "IntlRo"
0x0062, 0x0063 "Unidentified" ""
0x0064 "Convert" "Convert"
0x0065 "KanaMode" "KanaMode"
0x0066 "NonConvert" "NonConvert"
0x0067 "Unidentified" ""
0x0068 "NumpadEnter" "NumpadEnter"
0x0069 "ControlRight" "ControlRight"
0x006A "NumpadDivide" "NumpadDivide"
0x006B "PrintScreen" "PrintScreen"
0x006C "AltRight" "AltRight"
0x006D "Unidentified" ""
0x006E "Home" "Home"
0x006F "ArrowUp" "ArrowUp"
0x0070 "PageUp" "PageUp"
0x0071 "ArrowLeft" "ArrowLeft"
0x0072 "ArrowRight" "ArrowRight"
0x0073 "End" "End"
0x0074 "ArrowDown" "ArrowDown"
0x0075 "PageDown" "PageDown"
0x0076 "Insert" "Insert"
0x0077 "Delete" "Delete"
0x0078 "Unidentified" ""
0x0079 "AudioVolumeMute" (était "VolumeMute" jusqu'à Firefox 49) "AudioVolumeMute" (était "VolumeMute" jusqu'à Chrome 50)
0x007A "AudioVolumeDown" (était "VolumeDown" jusqu'à Firefox 49) "AudioVolumeDown" (était "VolumeDown" jusqu'à Chrome 50)
0x007B "AudioVolumeUp" (était "VolumeUp" jusqu'à Firefox 49) "AudioVolumeUp" (était "VolumeUp" jusqu'à Chrome 50)
0x007C "Unidentified" "Power"
0x007D "NumpadEqual" "NumpadEqual"
0x007E "Unidentified" "NumpadChangeSign"
0x007F "Pause" "Pause"
0x0080 "Unidentified" ""
0x0081 "NumpadComma" ""
0x0082 "Lang1" "HangulMode"
0x0083 "Lang2" "Hanja"
0x0084 "IntlYen" "IntlYen"
0x0085 "OSLeft" "OSLeft"
0x0086 "OSRight" "OSRight"
0x0087 "ContextMenu" "ContextMenu"
0x0088 "BrowserStop" "Cancel"
0x0089 "Again" ""
0x008A "Props" ""
0x008B "Undo" "Undo"
0x008C "Select" ""
0x008D "Copy" "Copy"
0x008E "Open" ""
0x008F "Paste" "Paste"
0x0090 "Find" ""
0x0091 "Cut" "Cut"
0x0092 "Help" "Help"
0x0093 "Unidentified" ""
0x0094 "LaunchApp2" ""
0x0095, 0x0096 "Unidentified" ""
0x0097 "WakeUp" ""
0x0098 "LaunchApp1" ""
0x00990x00A2 "Unidentified" ""
0x00A3 "LaunchMail" ""
0x00A4 "BrowserFavorites" ""
0x00A5 "Unidentified" ""
0x00A6 "BrowserBack" "BrowserBack"
0x00A7 "BrowserForward" "BrowserForward"
0x00A8 "Unidentified" ""
0x00A9 "Eject" ""
0x00AA "Unidentified" ""
0x00AB "MediaTrackNext" ""
0x00AC "MediaPlayPause" ""
0x00AD "MediaTrackPrevious" ""
0x00AE "MediaStop" ""
0x00AF0x00B2 "Unidentified" ""
0x00B3 "LaunchMediaPlayer" ("MediaSelect" avant Firefox 49) ""
0x00B4 "BrowserHome" ""
0x00B5 "BrowserRefresh" "BrowserRefresh"
0x00B60x00BA "Unidentified" ""
0x00BB

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"NumpadParenLeft"
0x00BC

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

"NumpadParenRight"
0x00BD, 0x00BE

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x00BF "F13" ""
0x00C0 "F14" ""
0x00C1 "F15" ""
0x00C2 "F16" ""
0x00C3 "F17" ""
0x00C4 "F18" ""
0x00C5 "F19" ""
0x00C6 "F20" ""
0x00C7 "F21" ""
0x00C8 "F22" ""
0x00C9 "F23" ""
0x00CA "F24" ""
0x00CB ~ 0x00E0

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

""
0x00E1 "BrowserSearch" ""

Valeur des codes sous Android et Firefox OS (quand ScanCode et disponible)

scancode Gecko
0x0001 "Escape"
0x0002 "Digit1"
0x0003 "Digit2"
0x0004 "Digit3"
0x0005 "Digit4"
0x0006 "Digit5"
0x0007 "Digit6"
0x0008 "Digit7"
0x0009 "Digit8"
0x000A "Digit9"
0x000B "Digit0"
0x000C "Minus"
0x000D "Equal"
0x000E "Backspace"
0x000F "Tab"
0x0010 "KeyQ"
0x0011 "KeyW"
0x0012 "KeyE"
0x0013 "KeyR"
0x0014 "KeyT"
0x0015 "KeyY"
0x0016 "KeyU"
0x0017 "KeyI"
0x0018 "KeyO"
0x0019 "KeyP"
0x001A "BracketLeft"
0x001B "BracketRight"
0x001C "Enter"
0x001D "ControlLeft"
0x001E "KeyA"
0x001F "KeyS"
0x0020 "KeyD"
0x0021 "KeyF"
0x0022 "KeyG"
0x0023 "KeyH"
0x0024 "KeyJ"
0x0025 "KeyK"
0x0026 "KeyL"
0x0027 "Semicolon"
0x0028 "Quote"
0x0029 "Backquote"
0x002A "ShiftLeft"
0x002B "Backslash"
0x002C "KeyZ"
0x002D "KeyX"
0x002E "KeyC"
0x002F "KeyV"
0x0030 "KeyB"
0x0031 "KeyN"
0x0032 "KeyM"
0x0033 "Comma"
0x0034 "Period"
0x0035 "Slash"
0x0036 "ShiftRight"
0x0037 "NumpadMultiply"
0x0038 "AltLeft"
0x0039 "Space"
0x003A "CapsLock"
0x003B "F1"
0x003C "F2"
0x003D "F3"
0x003E "F4"
0x003F "F5"
0x0040 "F6"
0x0041 "F7"
0x0042 "F8"
0x0043 "F9"
0x0044 "F10"
0x0045 "NumLock"
0x0046 "ScrollLock"
0x0047 "Numpad7"
0x0048 "Numpad8"
0x0049 "Numpad9"
0x004A "NumpadSubtract"
0x004B "Numpad4"
0x004C "Numpad5"
0x004D "Numpad6"
0x004E "NumpadAdd"
0x004F "Numpad1"
0x0050 "Numpad2"
0x0051 "Numpad3"
0x0052 "Numpad0"
0x0053 "NumpadDecimal"
0x0054, 0x0055

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0056 "IntlBackslash"
0x0057 "F11"
0x0058 "F12"
0x0059 "IntlRo"
0x005A, 0x005B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x005C "Convert"
0x005D "KanaMode"
0x005E "NonConvert"
0x005F

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0060 "NumpadEnter"
0x0061 "ControlRight"
0x0062 "NumpadDivide"
0x0063 "PrintScreen"
0x0064 "AltRight"
0x0065

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0066 "Home"
0x0067 "ArrowUp"
0x0068 "PageUp"
0x0069 "ArrowLeft"
0x006A "ArrowRight"
0x006B "End"
0x006C "ArrowDown"
0x006D "PageDown"
0x006E "Insert"
0x006F "Delete"
0x0070

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0071

"AudioVolumeMute"

Avant Firefox 48, ce code renvoyait "VolumeMute".

0x0072

"AudioVolumeDown"

Avant Firefox 48, ce code renvoyait "VolumeDown".

0x0073

"AudioVolumeUp"

Avant Firefox 48, ce code renvoyait "VolumeUp".

0x0074 "Power"
0x0075 "NumpadEqual"
0x0076

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0077 "Pause"
0x0078

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x0079 "NumpadComma"
0x007A "Lang1"
0x007B "Lang2"
0x007C "IntlYen"
0x007D

"MetaLeft"

Avant Firefox 48, ce code renvoyait "OSLeft".

0x007E

"MetaRight"

Avant Firefox 49, ce code renvoyait "MetaRight".

0x007F "ContextMenu"
0x0080 "BrowserStop"
0x0081 "Again"
0x0082 "Props"
0x0083 "Undo"
0x0084 "Select"
0x0085 "Copy"
0x0086 "Open"
0x0087 "Paste"
0x0088 "Find"
0x0089 "Cut"
0x008A "Help"
0x008B0x008D

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x008E "Sleep"
0x008F "WakeUp"
0x0090 "LaunchApp1"
0x00910x009B

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x009C "BrowserFavorites"
0x009D

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x009E "BrowserBack"
0x009F "BrowserForward"
0x00A0

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x00A1 "Eject"
0x00A2

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x00A3 "MediaTrackNext"
0x00A4 "MediaPlayPause"
0x00A5 "MediaTrackPrevious"
0x00A6 "MediaStop"
0x00A70x00AC

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x00AD "BrowserRefresh"
0x00AE0x00B6 Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).
0x00B7 "F13"
0x00B8 "F14"
0x00B9 "F15"
0x00BA "F16"
0x00BB "F17"
0x00BC "F18"
0x00BD "F19"
0x00BE "F20"
0x00BF "F21"
0x00C0 "F22"
0x00C1 "F23"
0x00C2 "F24"
0x00C30x00D8

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x00D9 "BrowserSearch"
0x00DA0x01CF

"Unidentified"

Avant Firefox 48, ce code renvoyait "" (la chaîne de caractères vide).

0x01D0 "Fn"

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, NoxFly
Dernière mise à jour par : SphinxKnight,