KeyboardEvent.code

KeyboardEvent.code プロパティは、(キー入力によって入力された文字ではなく、)キーボード上の物理的なキーを表します。つまり、このプロパティの戻り値はキーボードレイアウトや修飾キーの状態に左右されません。

入力デバイスが物理キーボードではなく、仮想キーボードやアクセシビリティデバイスである場合、戻り値は物理キーボードと仮想デバイスの場合でできる限り一致するようにブラウザによって設定されます。

このプロパティは、キーに関連付けられている文字ではなく、入力デバイス上の物理的な位置に基づいてキー入力を扱いたいときに役立ちます。これは特にキーボードをゲームパッドのように使いたい場合などに有用です。ただし、 KeyboardEvent.code の戻り値をキー入力によって生じた文字を判定するためには使うべきではありません。KeyboardEvent.codeの戻り値の名前と入力された文字列が一致するとは限りません。

例えば、KeyboardEvent.code の戻り値 "KeyQ" は QWERTYレイアウトのキーボード上での"q"キーに対応しますが、この"KeyQ"はDvorakキーボードの"'"やAZERTYキーボードの"a"キーでもあります。そのため、全てのユーザーが特定のレイアウトのキーボードのみを使用しているのではなければ、codeからキー名を判別することはできません。

どの文字がどのキーイベントに対応するかを判断するためには、代わりにKeyboardEvent.key を使用してください。

KeyboardEventの使用例

HTML

<p>Press keys on the keyboard to see what the KeyboardEvent's key and code
   values are for each one.</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);

やってみよう

キー入力をサンプルコードに取得させるために、キーを入力する前にoutputボックスをクリックしてください。

Handle keyboard events in a game

This example establishes an event listener for keydown events which handles keyboard input for a game which uses the typical "WASD" keyboard layout for steering forward, left, backward, and right. This will use the same four keys physically regardless of what the actual corresponding characters are, such as if the user is using an AZERTY keyboard.

HTML

<p>Use the WASD (ZQSD on AZERTY) keys to move and steer.</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

The first section of the JavaScript code establishes some variables we'll be using. shipSize contains the size of the ship the player is moving around, for convenience. position is used to track the position of the ship within the play field. moveRate and turnRate are the number of pixels forward and backward each keystroke moves the ship and how many degrees of rotation the left and right steering controls apply per keystroke. angle is the current amount of rotation applied to the ship, in degrees; it starts at 0° (pointing straight up). Finally, spaceship is set to refer to the element with the ID "spaceship", which is the SVG polygon representing the ship the player controls.

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");

Next comes the function updatePosition(). This function takes as input the distance the ship is to be moved, where positive is a forward movement and negative is a backward movement. This function computes the new position of the ship given the distance moved and the current direction the ship is facing. It also handles ensuring that the ship wraps across the boundaries of the play field instead of vanishing.

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;
  }
}

The refresh() function handles applying the rotation and position by using an 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);
}

Finally, the addEventListener() method is used to start listening for keydown events, acting on each key by updating the ship position and rotation angle, then calling refresh() to draw the ship at its new position and 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);

Try it out

To ensure that keystrokes go to the sample code, click inside the black game play field below before pressing keys.

There are several ways this code can be made better. Most real games would watch for keydown events, start motion when that happens, and stop the motion when the corresponding keyup occurs, instead of relying on key repeats. That would allow both smoother and faster movement, but would also allow the player to be moving and steering at the same time. Transitions or animations could be used to make the ship's movement smoother, too.

仕様

仕様 状態 コメント
UI Events
KeyboardEvent.code の定義
草案 Initial definition, included code values.

ブラウザの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
codeChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 ありIE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応

code値 

以下の表は主要プラットフォームの各ネイティブスキャンコードまたは仮想キーコードに使用されるcode値を示しています。ブラウザによっては物理キーの解釈方法が異なるため、どのキーがどのcodeにマッピングされるかにはいくらかの違いがあります。これらの表は、既知の場合はそれらの変動を示しています。

Windowsでのcodeの値

This table shows the Windows scan codes representing keys and the KeyboardEvent.code values which correspond to those hardware keys. Only keys which generate scan codes on Windows are listed.

  KeyboardEvent.code value
Code Firefox Chrome
0x0000

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x005B

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"F13"
0x005C

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"F14"
0x005D

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"F15"
0x005E

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x005F

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0060

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0061

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0062

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0063

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0070 "KanaMode" ""
0x0071 (Hanja key without Korean keyboard layout) "Lang2" ""
0x0072 (Han/Yeong key without Korean keyboard layout) "Lang1" ""
0x0073 "IntlRo" ""
0x0074, 0x0075

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x0079 "Convert" ""
0x007A

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x007B "NonConvert" ""
0x007C

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x007D "IntlYen" "IntlYen"
0x007E "NumpadComma" ""
0x007F

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE0000xE007

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE008

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"Undo"
0xE009

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"Cut"
0xE018

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"LaunchMail"
0xE01F

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE020 "AudioVolumeMute" (was "VolumeMute" until Firefox 49) "AudioVolumeMute" (was "VolumeMute" until Chrome 50)
0xE021 "LaunchApp2" ""
0xE022 "MediaPlayPause" "MediaPlayPause"
0xE023

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE02C

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"Eject"
0xE02D

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE02E

"AudioVolumeDown"

Prior to Firefox 48, this key code is reported as "VolumeDown".

"VolumeDown" (was "VolumeDown" until Chrome 50)
0xE02F

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE030

"AudioVolumeUp"

Prior to Firefox 48, this key code is reported as "VolumeUp".

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE03B

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"Help"
0xE03C0xE044

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE05B

"MetaLeft"

Prior to Firefox 48, this key code was reported as "OSLeft".

"OSLeft"
0xE05C

"MetaRight"

Prior to Firefox 48, this key code was reported as "OSRight".

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0xE0F1 (Hanja key with Korean keyboard layout) "Lang2" ""
0xE0F2 (Han/Yeong key with Korean keyboard layout) "Lang1" ""

Mac でのcodeの値

On Mac OS X, it's hard to get scancode or something which can distinguish a physical key from a key event. Therefore, Gecko always maps code value from the virtual keycode.

Virtual keycode 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) "Digit7" "Digit7"
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" (was "VolumeUp" until Firefox 48) "AudioVolumeUp" (was "VolumeUp" until Chrome 50)
kVK_VolumeDown (0x49) "AudioVolumeDown" (was "VolumeDown" until Firefox 49) "AudioVolumeDown" (was "VolumeDown" until Chrome 50)
kVK_Mute (0x4A) "AudioVolumeMute" (was "VolumeMute" until Firefox 49) "AudioVolumeMute" (was "VolumeMute" until 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"

Prior to Firefox 37, this key incorrectly generated the key code "RomanCharacters".

"" (no events fired actually)
kVK_F11 (0x67) "F11" "F11"
kVK_JIS_Kana (0x68) "Lang1" "KanaMode" (no events fired actually)
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"

Linux (X11)でのcodeの値(scancodeが使用可能な場合)

Note that X has too many keys and some of them are not testable with usual keyboard. So, following table is created from source code which maps from scancode to code value.

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" (was "VolumeMute" until Firefox 49) "AudioVolumeMute" (was "VolumeMute" until Chrome 50)
0x007A "AudioVolumeDown" (was "VolumeDown" until Firefox 49) "AudioVolumeDown" (was "VolumeDown" until Chrome 50)
0x007B "AudioVolumeUp" (was "VolumeUp" until Firefox 49) "AudioVolumeUp" (was "VolumeUp" until 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" prior to Firefox 49) ""
0x00B4 "BrowserHome" ""
0x00B5 "BrowserRefresh" "BrowserRefresh"
0x00B60x00BA "Unidentified" ""
0x00BB

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"NumpadParenLeft"
0x00BC

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

"NumpadParenRight"
0x00BD, 0x00BE

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

""
0x00E1 "BrowserSearch" ""

Android と Firefox OS でのcodeの値(scancodeが使用可能な場合)


 

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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x0071

"AudioVolumeMute"

Prior to Firefox 48, this key code is identifi9ed as "VolumeMute".

0x0072

"AudioVolumeDown"

Prior to Firefox 48, this key code is identifi9ed as "VolumeDown".

0x0073

"AudioVolumeUp"

Prior to Firefox 48, this key code is identifi9ed as "VolumeUp".

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x0077 "Pause"
0x0078

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"MetaLeft"

Prior to Firefox 48, this key code is reported as "OSLeft".

0x007E

"MetaRight"

Prior to Firefox 49, this key code is reported as "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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x009C "BrowserFavorites"
0x009D

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x00A1 "Eject"
0x00A2

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

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

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x00AD "BrowserRefresh"
0x00AE0x00B6 "Unidentified" Prior to Firefox 48, this key code is reported as "" (an empty string).
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"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x00D9 "BrowserSearch"
0x00DA0x01CF

"Unidentified"

Prior to Firefox 48, this key code is reported as "" (an empty string).

0x01D0 "Fn"