KeyboardEvent: keyCode プロパティ
============================

**非推奨:** この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

非推奨の **`KeyboardEvent.keyCode`** 読み取り専用プロパティは、押されたキーの変更されていない値を識別するシステムおよび実装に依存する数値コードを表します。

これは通常、キーに対応する 10 進数の ASCII (RFC 20) または Windows 1252 コードです。キーを識別できない場合は、この値は `0` になります。

これはしばらく非推奨となっていますので、できれば使用しないようにしてください。代わりに、もし実装されていれば `KeyboardEvent.code` を使用してください。残念ながら、まだ実装されていないブラウザーもありますので、対象となるすべてのブラウザーで対応するものを使用するように注意する必要があります。

**メモ:** ウェブ開発者は `keydown` と `keyup` イベントを処理する際に、表示可能な文字に対して `keyCode` 属性を使用するべきではありません。前述のように、`keyCode` 属性は表示可能な文字、特に `Shift` や `Alt` キーが押された状態での文字に対しては有用ではありません。ショートカットキーハンドラーを実装する場合、通常は `keypress` イベントの方がよいでしょう（少なくとも Gecko を使用するランタイムではそうでしょう）。

例
-


```js
window.addEventListener(
  "keydown",
  (event) => {
    if (event.defaultPrevented) {
      return; // 既定のアクションがキャンセルされている場合は何もしないようにします。
    }

    let handled = false;
    if (event.key !== undefined) {
      // KeyboardEvent.key でイベントを処理し、handled を true に設定します。
      handled = true;
    } else if (event.keyCode !== undefined) {
      // KeyboardEvent.keyCode でイベントを処理し、handled を true に設定します。
      handled = true;
    }

    if (handled) {
      // イベントが処理された場合、"ダブルアクション" を抑制する
      event.preventDefault();
    }
  },
  true,
);
```

仕様書
---

| Specification |
| --- |
| UI Events # dom-keyboardevent-keycode |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

keyCode の値
----------

### 標準位置で表示可能なキー

標準位置で表示可能なキーを押したり離したりすることで発生するキーイベントの値は、ブラウザー間で互換性がありません。

IE はネイティブの仮想キーコードの値を `KeyboardEvent.keyCode` として公開するだけです。

Google Chrome、Chromium、Safari は入力された文字から値を決定する必要があります。入力文字が US キーボードレイアウトで入力できる場合、 US キーボードレイアウトの `keyCode` 値を使用します。

Firefox は、キーによって入力可能な ASCII 文字から `keyCode` 値を取得します。 shift 修飾子や ASCII 対応キーボードレイアウトであった場合も含みます。詳しくは以下のルールを参照してください。

1. システムが Windows で、押されたキーのネイティブキーコードが a-z または 0-9 であることを示す場合、そのキーコードを使用します。
2. システムが Mac で、押されたキーのネイティブキーコードが 0-9 である場合、そのキーコードを使用します。
3. 押されたキーが ASCII のアルファベットまたは数字を修飾キーなしで入力する場合、それに対応するキーコードを使用します。
4. 押されたキーが、 ASCII アルファベットまたは数字を Shift キーで修飾して入力する場合、そのキーコードを使用します。
5. 押されたキーが、別の ASCII 文字を修飾キーなしで入力する場合、それに対応するキーコードを使用します。
6. 押されたキーが、別の ASCII文字を Shift キー修飾で入力する場合、それに対応するキーコードを使用します。
7. それ以外の場合、すなわち、押されたキーが Unicode 文字を入力する場合は以下の通り。
    1. キーボードレイアウトが ASCII 対応の（ASCII アルファベットを入力できる）場合、 0 を使用するか、下記の追加ルールで計算します。
    2. それ以外の場合、つまりキーボードレイアウトが ASCII に対応していない場合は、最も優先度の高い環境にインストールされている ASCII に対応したキーボードレイアウトを使用します。
        1. 代替キーボードレイアウトで押されたキーが ASCII のアルファベットまたは数字を入力する場合、そのキーコードを使用します。
        2. それ以外の場合、 0 を使用するか、下記の追加ルールで計算します。

Gecko は区切り記号キーの `keyCode` 値を、できる限り以下の規則で設定します（上記のリストのポイント 7.1 または 7.2 に到達したとき）。

**警告:** これらの新しい追加ルールの目的は、米国式キーボードレイアウトの区切り記号キーに unicode 文字をマッピングしているユーザーが、 Firefox に対応したウェブアプリケーションを ASCII に対応したキーボードレイアウトのみ、または米国式キーボードレイアウトのみで使用できるようにするためです。そうでなければ、新しく割り当てられた `keyCode` 値が他のキーと衝突する可能性があります。例えば、アクティブなキーボードレイアウトがロシア語の場合、 `"Period"` キーと `"Slash"` キーの `keyCode` 値は**どちらも** `190` (`KeyEvent.DOM_VK_PERIOD`) になります。もし、これらのキーを区別する必要があるが、世界中の全てのキーボードレイアウトに自分で対応したくない場合は、おそらく `KeyboardEvent.code` を使用した方が良いでしょう。

1. macOS または Linux を使用している場合
    1. アクティブなキーボードレイアウトが ASCII に対応したものではなく、代替の ASCII 対応のキーボードレイアウトが利用可能な場合。
        1. もし、 ASCII に対応したキーボードレイアウトが、修飾されていないキーだけで ASCII 文字を生成する場合、その文字の `keyCode` を使用します。
        2. もし、代替の ASCII に対応したキーボードレイアウトで、 Shift キーで修飾した ASCII 文字が生成された場合、シフトされた文字の `keyCode`を使用します。
        3. それ以外の場合は、 US キーボードレイアウトがアクティブなときにキーが生成する ASCII 文字を `keyCode` に使用します。
    2. それ以外の場合は、 US キーボードレイアウトがアクティブなときにキーが生成する ASCII 文字を `keyCode` に使用します。
2. Windows を使用している場合
    1. US キーボードレイアウトがアクティブなときに Windows の同じ仮想キーコードに割り当てられたキーによって生成される ASCII 文字を `keyCode` 値に使用します。

標準的な位置にある表示可能なキーによって発生する keydown イベントのブラウザーごとの keyCode 値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
|  | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
|  | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 |
| `"Digit1"` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` | `0x31 (49)` |
| `"Digit2"` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` | `0x32 (50)` |
| `"Digit3"` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` | `0x33 (51)` |
| `"Digit4"` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` | `0x34 (52)` |
| `"Digit5"` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` | `0x35 (53)` |
| `"Digit6"` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` | `0x36 (54)` |
| `"Digit7"` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` | `0x37 (55)` |
| `"Digit8"` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` | `0x38 (56)` |
| `"Digit9"` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` | `0x39 (57)` |
| `"Digit0"` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` | `0x30 (48)` |
| `"KeyA"` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` | `0x41 (65)` |
| `"KeyB"` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` | `0x42 (66)` |
| `"KeyC"` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` | `0x43 (67)` |
| `"KeyD"` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` | `0x44 (68)` |
| `"KeyE"` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` | `0x45 (69)` |
| `"KeyF"` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` | `0x46 (70)` |
| `"KeyG"` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` | `0x47 (71)` |
| `"KeyH"` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` | `0x48 (72)` |
| `"KeyI"` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` | `0x49 (73)` |
| `"KeyJ"` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` | `0x4A (74)` |
| `"KeyK"` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` | `0x4B (75)` |
| `"KeyL"` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` | `0x4C (76)` |
| `"KeyM"` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` | `0x4D (77)` |
| `"KeyN"` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` | `0x4E (78)` |
| `"KeyO"` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` | `0x4F (79)` |
| `"KeyP"` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` | `0x50 (80)` |
| `"KeyQ"` | `0x51 (81)` | `0x51 (81)` | `0x51 (81)` | `0x51 (81)` | `0xBA (186)⚠️` | `0x51 (81)` | `0x51 (81)` | `0xBA (186)⚠️` | `0x51 (81)` | `0x51 (81)` | `0xBA (186)⚠️` | `0x51 (81)` | `0x51 (81)` | `0x51 (81)` | `0xBA (186)⚠️` | `0x51 (81)` |
| `"KeyR"` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` | `0x52 (82)` |
| `"KeyS"` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` | `0x53 (83)` |
| `"KeyT"` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` | `0x54 (84)` |
| `"KeyU"` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` | `0x55 (85)` |
| `"KeyV"` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` | `0x56 (86)` |
| `"KeyW"` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` | `0x57 (87)` |
| `"KeyX"` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` | `0x58 (88)` |
| `"KeyY"` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` | `0x59 (89)` |
| `"KeyZ"` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` | `0x5A (90)` |
| `KeyboardEvent.code` | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| Internet Explorer 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

標準的な位置（US レイアウトでは区切り記号）にある表示可能なキーによって発生する keydown イベントのブラウザー別の keyCode の値。| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
|  | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows (10.9) | Mac (10.9) | Linux (Ubuntu 14.04) |
|  | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 |
| `"Comma"` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` | `0xBC (188)` |
| `Shift` + `"Comma"` |
| `"Period"` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` | `0xBE (190)` |
| `Shift` + `"Period"` |
| `"Semicolon"` | `0xBA (186)` | `0xBB (187)`⚠️ | `0xBA (186)` | `0xBA (186)` | `0xBB (187)`⚠️ | `0xBA (186)` | `0xBA (186)` | `0xBA (186)` [1] | `0xE5 (229)`⚠️ [2] | `0xBA (186)` | `0xBA (186)` | `0xE5 (229)`⚠️ [3] | `0xBA (186)` | `0xBA (186)` [1] | `0xE5 (229)`⚠️ [2] | `0x3B (59)` | `0x3B (59)` | `0x00 (0)`⚠️ | `0x3B (59)` | `0x3B (59)` [1] | `0x00 (0)`⚠️ | `0x3B (59)` | `0x3B (59)` | `0x00 (0)`⚠️ |
| `Shift` + `"Semicolon"` | `0xBB (187)`⚠️ [1] | `0xBB (187)`⚠️ | `0xBB (187)`⚠️ [1] |
| `"Quote"` | `0xDE (222)` | `0xBA (186)`⚠️ | `0xDE (222)` | `0xDE (222)` | `0xBA (186)`⚠️ | `0xDE (222)` | `0xDE (222)` | `0xBA (186)`⚠️ [1] | `0xDE (222)` | `0xDE (222)` | `0xBA (186)`⚠️ | `0xDE (222)` | `0xDE (222)` | `0xBA (186)`⚠️ [1] | `0xDE (222)` | `0xDE (222)` | `0x3A (58)`⚠️ | `0xDE (222)` | `0xDE (222)` | `0x3A (58)`⚠️ [1] | `0xDE (222)` | `0xDE (222)` | `0x3A (58)`⚠️ | `0xDE (222)` |
| `Shift` + `"Quote"` | `0xDE (222)`⚠️ [1] | `0x38 (56)`⚠️ | `0xDE (222)`⚠️ [1] |
| `"BracketLeft"` | `0xDB (219)` | `0xC0(192)`⚠️ | `0xDB (219)` | `0xDB (219)` | `0xC0(192)`⚠️ | `0xDB (219)` | `0xDB (219)` | `0xDB (219)` [1] | `0xDB (219)` | `0xDB (219)` | `0x32 (50)`⚠️ | `0xDB (219)` | `0xDB (219)` | `0xDB (219)` [1] | `0xDB (219)` | `0xDB (219)` | `0x40 (64)`⚠️ | `0xDB (219)` | `0xDB (219)` | `0x40 (64)`⚠️ [1] | `0xDB (219)` | `0xDB (219)` | `0x40 (64)`⚠️ | `0xDB (219)` |
| `Shift` + `"BracketLeft"` | `0xC0 (192)`⚠️ [1] | `0xC0 (192)`⚠️ | `0xC0 (192)`⚠️ [1] |
| `"BracketRight"` | `0xDD (221)` | `0xDB (219)`⚠️ | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ [1] | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ [1] | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ [1] | `0xDD (221)` | `0xDD (221)` | `0xDB (219)`⚠️ | `0xDD (221)` |
| `Shift` + `"BracketRight"` |
| `"Backquote"` | `0xC0 (192)` | `❌ N/A` | `0xC0 (192)` | `0xC0 (192)` | `❌ N/A` | `0xC0 (192)` | `0xC0 (192)` | `0xC0 (192)` | `0xF4 (244)`⚠️ | `0xC0 (192)` | `0xC0 (192)` | `0xC0 (192)` | `❌ N/A` | `0xC0 (192)` | `0xC0 (192)` | `0xC0 (192)` | `0x00 (0)` | `0xC0 (192)` |
| `Shift` + `"Backquote"` |
| `"Backslash"` | `0xDC (220)` | `0xDD (221)`⚠️ | `0xDC (220)` | `0xDC (220)` | `0xDD (221)`⚠️ | `0xDC (220)` | `0xDC (220)` | `0xDC (220)` | `0xDD (221)`⚠️ | `0xDC (220)` | `0xDC (220)` | `0xDC (220)` | `0xDD (221)`⚠️ | `0xDC (220)` | `0xDC (220)` | `0xDC (220)` | `0xDD (221)`⚠️ | `0xDC (220)` |
| `Shift` + `"Backslash"` |
| `"Minus"` | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` [1] | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` | `0xBD (189)` [1] | `0xBD (189)` | `0xAD (173)` | `0xAD (173)` | `0xAD (173)`[1] | `0xAD (173)` | `0xAD (173)` |
| `Shift` + `"Minus"` | `0xBB (187)`⚠️ [1] | `0xBB (187)`⚠️ | `0xBD (189)` | `0xBB (187)`⚠️ [1] | `0xBD (189)` |
| `"Equal"` | `0xBB (187)` | `0xDE (222)`⚠️ | `0xBB (187)` | `0xBB (187)` | `0xDE (222)`⚠️ | `0xBB (187)` | `0xBB (187)` | `0xBB (187)` [1] | `0xBB (187)` | `0xBB (187)` | `0x36 (54)`⚠️ | `0xBB (187)` | `0xBB (187)` | `0xBB (187)`[1] | `0xBB (187)` | `0x3D (61)` | `0xA0 (160)`⚠️ | `0x3D (61)` | `0x3D (61)` | `0xA0 (160)`⚠️ [1] | `0x3D (61)` | `0x3D (61)` | `0xA0 (160)`⚠️ | `0x3D (61)` |
| `Shift` + `"Equal"` | `0xC0 (192)`⚠️ [1] | `0xC0 (192)`⚠️ | `0xBB (187)` | `0xC0 (192)`⚠️ [1] | `0xBB (187)` |
| `"IntlRo"` | `0xC1 (193)` | `0xE2 (226)`⚠️ | `0xC1 (193)` | `0xC1 (193)` | `0xE2 (226)`⚠️ | `0xC1 (193)` | `0xBD (189)` | `0xBD (189)` | `0x00 (0)`⚠️ | [4] | `0xDC (220)`⚠️ | [4] | `0xBD (189)` | `0xBD (189)` | `0xE5 (229)`⚠️ [5] | `0x00 (0)` | `0xDC (220)`⚠️ | `0x00 (0)` | `0xA7 (167)` | `0xA7 (167)` | `0x00 (0)` | `0x00 (0)` | `0xDC (220)`⚠️ | `0x00 (0)` |
| `Shift` + `"IntlRo"` |
| `"IntlYen"` | `0xFF (255)` | `0xDC (220)`⚠️ | `0xFF (255)` | `0xFF (255)` | `0xDC (220)`⚠️ | `0xFF (255)` | `0x00 (0)`⚠️ | `0x00 (0)`⚠️ | `0x00 (0)`⚠️ | [4] | `0xDC (220)`⚠️ | [4] | `0x00 (0)`⚠️ | `0x00 (0)`⚠️ | `0xE5 (229)`⚠️ [5] | `0x00 (0)`⚠️ | `0xDC (220)`⚠️ | `0x00 (0)`⚠️ | `0xDC` (220) | `0xDC` (220) | `0x00 (0)`⚠️ | `0x00 (0)`⚠️ | `0xDC (220)`⚠️ | `0x00 (0)`⚠️ |
| `Shift` + `"IntlYen"` | `0xDC (220)` | `0xDC (220)` | `0xBD (189)`⚠️ | `0xDC (220)` | `0xDC (220)` |
| `KeyboardEvent.code` | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 | 米国 | 日本語 | ギリシャ語 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| Internet Explorer 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

[1] JIS キーボードから入力される値です。 ANSI キーボードを使用すると、 US キーボードレイアウトから選択した keyCode 値と入力文字になります。

[2] このキーはデッドキーです。イベント `keyup` の値は `0xBA (186)` です。

[3] このキーはデッドキーです。イベント `keyup` の値は `0x10 (16)` です。

[4] キーイベントは発行されない。

[5] ギリシャ語キーボードレイアウトでは、そのキーは使用できません（いかなる文字も入力しません）。イベント `keyup` の値は `0x00 (0)` です。

### 非表示キー（機能キー）

修飾キーによって発生する keydown イベントのブラウザー別の keyCode の値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| `"AltLeft"` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` |
| `"AltRight"` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` | `0x12 (18)` |
| `"AltRight"` （`"AltGraph"` キーであった場合） | [1] | [1] | ❌N/A | `0xE1 (225)`⚠️ | ❌ N/A | [1] | ❌ N/A | `0xE1 (225)`⚠️ |
| `"CapsLock"` | `0x14 (20)` [2] | `0x14 (20)` [2] | `0x14 (20)` | `0x14 (20)` | `0x14 (20)` | `0x14 (20)` [2] | `0x14 (20)` | `0x14 (20)` [3] |
| `"ControlLeft"` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` |
| `"ControlRight"` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` | `0x11 (17)` |
| `"MetaLeft"` | `0x5B (91)` | `0x5B (91)` | `0x5B (91)` | `0x5B (91)` | `0x5B (91)` | `0x5B (91)` | `0xE0 (224)`⚠️ | `0x5B (91)` |
| `"MetaRight"` | `0x5C (92)` | `0x5C (92)` | `0x5D (93)`⚠️ | `0x5C (92)` | `0x5D (93)`⚠️ | `0x5B (91)`⚠️ | `0xE0 (224)`⚠️ | `0x5B (91)`⚠️ |
| `"ShiftLeft"` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` |
| `"ShiftRight"` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` | `0x10 (16)` |
| `KeyboardEvent.code` | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

[1] Windows では、 `AltGraph` キーを押すと `"ControlLeft"` と `"AltRight"` の両方のキーイベントを発行します。

[2] 日本語キーボードレイアウトがアクティブである場合、 `CapsLock` キーを `Shift` なしで押すと `0xF0 (240)` が発生します。このキーは `Alphanumeric` キー (`"英数"`) として動作します。

[3] 日本語キーボードレイアウトがアクティブである場合、 `CapsLock` キーを `Shift` なしで押すと `0x00 (0)` が発生します。このキーは `Alphanumeric` キー (`"英数"`) として動作します。

非表示キーによって発生した keydown イベントのブラウザー別の keyCode の値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| `"ContextMenu"` | `0x5D (93)` | `0x5D (93)` | `0x00 (0)`⚠️ [1] | `0x5D (93)` | `0x00 (0)`⚠️ [1] | `0x5D (93)` | `0x5D (93)` | `0x5D (93)` |
| `"Enter"` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` |
| `"Space"` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` | `0x20 (32)` |
| `"Tab"` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` | `0x09 (9)` |
| `"Delete"` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` |
| `"End"` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` |
| `"Help"` | ❌ N/A | ❌ N/A | `0x2D (45)`⚠️ [2] | `0x2F (47)`⚠️ [3] | `0x2D (45)`⚠️ [2] | ❌ N/A | `0x2D (45)`⚠️ [2] | `0x06 (6)`⚠️ [3] |
| `"Home"` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` |
| `"Insert"` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` |
| `"PageDown"` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` |
| `"PageUp"` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` |
| `"ArrowDown"` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` |
| `"ArrowLeft"` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` |
| `"ArrowRight"` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` |
| `"ArrowUp"` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` |
| `"Escape"` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` | `0x1B (27)` |
| `"PrintScreen"` | `0x2C (44)` [4] | `0x2C (44)` [4] | `0x7C (124)`⚠️ [5] | `0x2A (42)`⚠️ | `0x7C (124)`⚠️ [5] | `0x2C (44)` [4] | `0x2C (44)` | `0x2A (42)`⚠️ |
| `"ScrollLock"` | `0x91 (145)` | `0x91 (145)` | `0x7D (125)`⚠️ [5] | `0x91 (145)` | `0x7D (125)`⚠️ [5] | `0x91 (145)` | `0x91 (145)` | `0x91 (145)` |
| `"Pause"` | `0x13 (19)` [6] | `0x13 (19)` [6] | `0x7E (126)`⚠️ [5] | `0x13 (19)` | `0x7E (126)`⚠️ [5] | `0x13 (19)` [6] | `0x13 (19)` | `0x13 (19)` |
| `KeyboardEvent.code` | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

[1] `keypress` イベントが発行され、その `keyCode` と `charCode` は `0x10 (16)` になりますが、実際にはテキストはエディターに入力されません。

[2] Mac では、 `Help` キーは PC のキーボードの `Insert` キーに割り当てられています。これらの `keyCode` 値は `Insert` キーの `keyCode` 値と同じです。

[3] Fedora 20 でテストしました。

[4] `keyup` イベントのみが発生します。

[5] PC の `PrintScreen`, `ScrollLock`, `Pause` はそれぞれ Mac の `F13`, `F14`, `F15` に割り当てられます。 Chrome と Safari はこれらを Mac のキーと同じ `keyCode` 値に割り当てています。

[6] `Pause` キーを `Control` 付きで推すと `0x03 (3)` を生成します。

機能キーによる keydown イベントのブラウザー別の keyCode の値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| `"F1"` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` | `0x70 (112)` |
| `"F2"` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` | `0x71 (113)` |
| `"F3"` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` | `0x72 (114)` |
| `"F4"` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` | `0x73 (115)` |
| `"F5"` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` | `0x74 (116)` |
| `"F6"` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` | `0x75 (117)` |
| `"F7"` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` | `0x76 (118)` |
| `"F8"` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` | `0x77 (119)` |
| `"F9"` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` | `0x78 (120)` |
| `"F10"` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` | `0x79 (121)` |
| `"F11"` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` | `0x7A (122)` |
| `"F12"` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` | `0x7B (123)` |
| `"F13"` | `0x7C (124)` | `0x7C (124)` | `0x7C (124)` | `0x7C (124)` [1] | `0x7C (124)` | `0x7C (124)` | `0x2C (44)` ⚠️ [2] | `0x00 (0)`⚠️ [3] |
| `"F14"` | `0x7D (125)` | `0x7D (125)` | `0x7D (125)` | `0x7D (125)` [1] | `0x7D (125)` | `0x7D (125)` | `0x91 (145)` ⚠️ [2] | `0x00 (0)`⚠️ [3] |
| `"F15"` | `0x7E (126)` | `0x7E (126)` | `0x7E (126)` | `0x7E (126)` [1] | `0x7E (126)` | `0x7E (126)` | `0x13 (19)` ⚠️ [2] | `0x00 (0)`⚠️ [3] |
| `"F16"` | `0x7F (127)` | `0x7F (127)` | `0x7F (127)` | `0x7F (127)` [1] | `0x7F (127)` | `0x7F (127)` | `0x7F (127)` | `0x00 (0)`⚠️ [3] |
| `"F17"` | `0x80 (128)` | `0x80 (128)` | `0x80 (128)` | `0x80 (128)` [1] | `0x80 (128)` | `0x80 (128)` | `0x80 (128)` | `0x00 (0)`⚠️ [3] |
| `"F18"` | `0x81 (129)` | `0x81 (129)` | `0x81 (129)` | `0x81 (129)` [1] | `0x81 (129)` | `0x81 (129)` | `0x81 (129)` | `0x00 (0)`⚠️ [3] |
| `"F19"` | `0x82 (130)` | `0x82 (130)` | `0x82 (130)` | ❌ `N/A` [4] | `0x82 (130)` | `0x82 (130)` | `0x82 (130)` | `0x00 (0)`⚠️ [3] |
| `"F20"` | `0x83 (131)` | `0x83 (131)` | `0x83 (131)` | ❌ `N/A` [4] | `0xE5 (229)`⚠️ [5] | `0x83 (131)` | `0x00 (0)`⚠️ | ❌ `N/A` [6] |
| `"F21"` | `0x84 (132)` | `0x84 (132)` | `0x00 (0)`⚠️ [7] | ❌ `N/A` [4] | `0x00 (0)`⚠️ [7] | `0x84 (132)` | ❌ `N/A` [8] | ❌ `N/A` [6] |
| `"F22"` | `0x85 (133)` | `0x85 (133)` | `0x00 (0)`⚠️ [7] | ❌ `N/A` [4] | `0x00 (0)`⚠️ [7] | `0x85 (133)` | ❌ `N/A` [8] | ❌ `N/A` [6] |
| `"F23"` | `0x86 (134)` | `0x86 (134)` | `0x00 (0)`⚠️ [7] | ❌ `N/A` [4] | `0x00 (0)`⚠️ [7] | `0x86 (134)` | ❌ `N/A` [8] | ❌ `N/A` [6] |
| `"F24"` | `0x87 (135)` | `0x87 (135)` | `0x00 (0)`⚠️ [7] | ❌ `N/A` [4] | `0x00 (0)`⚠️ [7] | `0x87 (135)` | ❌ `N/A` [8] | `0x00 (0)`⚠️ [3] |
| `KeyboardEvent.code` | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

[1] Fedora 20 でテストしました。

[2] PC では、`PrintScreen`、`ScrollLock`、`Pause` はそれぞれ Mac の `F13`、`F14`、`F15` に割り当てられています。Firefox はそれらに、PC のキーと同じ `keyCode` 値を設定します。

[3] Fedora 20 でテストしました。 このキーは `GDK_Fxx` の keysyms を発生させません。キーが適切な keysyms を発生させる場合、これらの値は IE と同じでなければなりません。

[4] Fedora 20 でテストしました。 Chromium では、このキーは DOM キーイベントを発生させません。

[5] `keyUp` イベントの `keyCode` の値は `0x83 (131)` です。

[6] Fedora 20 でテストしました。 Firefox では、このキーは DOM キーイベントを発生させません。

[7] `keydown` イベントのみが発行されます。

[8] Firefox では、 DOM キーイベントは発行されません。

### テンキー

NumLock 状態のテンキーで発生した keydown イベントのそれぞれのブラウザーの keyCode の値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |
| --- | --- | --- | --- | --- | --- |
| Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| `"NumLock"` | `0x90 (144)` | `0x90 (144)` | `0x0C (12)`⚠️ [1] | `0x90 (144)` | `0x0C (12)`⚠️ [1] | `0x90 (144)` | `0x0C (12)`⚠️ [1] | `0x90 (144)` |
| `"Numpad0"` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` | `0x60 (96)` |
| `"Numpad1"` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` | `0x61 (97)` |
| `"Numpad2"` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` | `0x62 (98)` |
| `"Numpad3"` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` | `0x63 (99)` |
| `"Numpad4"` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` | `0x64 (100)` |
| `"Numpad5"` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` | `0x65 (101)` |
| `"Numpad6"` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` | `0x66 (102)` |
| `"Numpad7"` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` | `0x67 (103)` |
| `"Numpad8"` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` | `0x68 (104)` |
| `"Numpad9"` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` | `0x69 (105)` |
| `"NumpadAdd"` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` | `0x6B (107)` |
| `"NumpadComma"` （`","` を入力） | `0xC2 (194)` | `0xC2 (194)` | `0xBC (188)`⚠️ | ❌ *常に `"."` を入力* | `0xBC (188)`⚠️ | `0xC2 (194)` | `0x6C (108)`⚠️ | ❌ *常に `"."` を入力* |
| `"NumpadComma"` （`"."` または空文字列を入力） | `0xC2 (194)` | `0xC2 (194)` | `0xBE (190)`⚠️ | `0x6E (110)`⚠️ | `0xBE (190)`⚠️ | `0xC2 (194)` | `0x6C (108)`⚠️ | `0x6E (110)`⚠️ |
| `"NumpadDecimal"` （`"."` を入力） | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` |
| `"NumpadDecimal"` （`","` を入力） | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6C (108)`⚠️ | `0x6E (110)` | `0x6E (110)` | `0x6E (110)` | `0x6C (108)`⚠️ |
| `"NumpadDivide"` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` | `0x6F (111)` |
| `"NumpadEnter"` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` | `0x0D (13)` |
| `"NumpadEqual"` | `0x0C (12)` | `0x0C (12)` | `0xBB (187)`⚠️ | `0xBB (187)`⚠️ | `0xBB (187)`⚠️ | `0x0C (12)` | `0x3D (61)`⚠️ | `0x3D (61)`⚠️ |
| `"NumpadMultiply"` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` | `0x6A (106)` |
| `"NumpadSubtract"` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` | `0x6D (109)` |
| `KeyboardEvent.code` | Windows | Windows | Mac (10.9) | Linux (Ubuntu 14.04) | Mac (10.9) | Windows | Mac (10.9) | Linux (Ubuntu 14.04) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| IE 11 | Google Chrome 34 | Chromium 34 | Safari 7 | Gecko 29 |

[1] `"NumLock"` キーは Mac では `"Clear"` キーとして動作します。

NumLock 状態でないテンキーで発生した keydown イベントのブラウザー別の keyCode の値| `KeyboardEvent.code` | IE 11 | Google Chrome 34 | Chromium 34 | Gecko 29 |
| --- | --- | --- | --- | --- |
| Windows | Windows | Linux (Ubuntu 14.04) | Windows | Linux (Ubuntu 14.04) |
| `"Numpad0"` (`"Insert"`) | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` | `0x2D (45)` |
| `"Numpad1"` (`"End"`) | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` | `0x23 (35)` |
| `"Numpad2"` (`"ArrowDown"`) | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` | `0x28 (40)` |
| `"Numpad3"` (`"PageDown"`) | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` | `0x22 (34)` |
| `"Numpad4"` (`"ArrowLeft"`) | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` | `0x25 (37)` |
| `"Numpad5"` | `0x0C (12)` | `0x0C (12)` | `0x0C (12)` | `0x0C (12)` | `0x0C (12)` |
| `"Numpad6"` (`"ArrowRight"`) | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` | `0x27 (39)` |
| `"Numpad7"` (`"Home"`) | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` | `0x24 (36)` |
| `"Numpad8"` (`"ArrowUp"`) | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` | `0x26 (38)` |
| `"Numpad9"` (`"PageUp"`) | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` | `0x21 (33)` |
| `"NumpadDecimal"` (`"Delete"`) | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` | `0x2E (46)` |
| `KeyboardEvent.code` | Windows | Windows | Linux (Ubuntu 14.04) | Windows | Linux (Ubuntu 14.04) |
| --- | --- | --- | --- | --- | --- |
| IE 11 | Google Chrome 34 | Chromium 34 | Gecko 29 |

**メモ:** 最近の Mac には `NumLock` キーがないので、状態が分かりません。そのため、ロック解除の状態が利用できません。

keyCode 値の定数
------------

Gecko は、対応表を明示的に作成するために、`KeyboardEvent` に多くの `keyCode` 値を定義しています。これらの値は、Firefox のアドオン開発者にとっては便利ですが、一般的なウェブページではあまり有用ではありません。

| 定数 | 値 | 説明 |
| --- | --- | --- |
| `DOM_VK_CANCEL` | 0x03 (3) | キャンセルキー。 |
| `DOM_VK_HELP` | 0x06 (6) | Help キー。 |
| `DOM_VK_BACK_SPACE` | 0x08 (8) | Backspace キー。 |
| `DOM_VK_TAB` | 0x09 (9) | Tab キー。 |
| `DOM_VK_CLEAR` | 0x0C (12) | NumLock を解除した状態における、テンキーの "5" キー。 Mac の場合は、 NumLock キーと同じ位置にあるクリアキーを押します。 |
| `DOM_VK_RETURN` | 0x0D (13) | メインキーボードのリターン/エンターキー。 |
| `DOM_VK_ENTER` | 0x0E (14) | 
 予約済みですが、使用されていません。 
非推奨
 （削除。
 [Firefox バグ 969247](https://bugzil.la/969247) を参照）
  |
| `DOM_VK_SHIFT` | 0x10 (16) | Shift キー。 |
| `DOM_VK_CONTROL` | 0x11 (17) | Control キー。 |
| `DOM_VK_ALT` | 0x12 (18) | Alt （Mac では Option）キー。 |
| `DOM_VK_PAUSE` | 0x13 (19) | Pause キー。 |
| `DOM_VK_CAPS_LOCK` | 0x14 (20) | Caps lock。 |
| `DOM_VK_KANA` | 0x15 (21) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_HANGUL` | 0x15 (21) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_EISU` | 0x 16 (22) | 日本語の Mac キーボードの "英数" キー。 |
| `DOM_VK_JUNJA` | 0x17 (23) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_FINAL` | 0x18 (24) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_HANJA` | 0x19 (25) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_KANJI` | 0x19 (25) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_ESCAPE` | 0x1B (27) | Escape キー。 |
| `DOM_VK_CONVERT` | 0x1C (28) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_NONCONVERT` | 0x1D (29) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_ACCEPT` | 0x1E (30) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_MODECHANGE` | 0x1F (31) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_SPACE` | 0x20 (32) | スペースバー。 |
| `DOM_VK_PAGE_UP` | 0x21 (33) | Page Up キー。 |
| `DOM_VK_PAGE_DOWN` | 0x22 (34) | Page Down キー。 |
| `DOM_VK_END` | 0x23 (35) | End キー。 |
| `DOM_VK_HOME` | 0x24 (36) | Home キー。 |
| `DOM_VK_LEFT` | 0x25 (37) | 左矢印。 |
| `DOM_VK_UP` | 0x26 (38) | 上矢印。 |
| `DOM_VK_RIGHT` | 0x27 (39) | 右矢印。 |
| `DOM_VK_DOWN` | 0x28 (40) | 下矢印。 |
| `DOM_VK_SELECT` | 0x29 (41) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_PRINT` | 0x2A (42) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_EXECUTE` | 0x2B (43) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_PRINTSCREEN` | 0x2C (44) | Print Screen キー。 |
| `DOM_VK_INSERT` | 0x2D (45) | Ins(ert) キー。 |
| `DOM_VK_DELETE` | 0x2E (46) | Del(ete) キー。 |
| `DOM_VK_0` | 0x30 (48) | "0" キー（メインキー）。 |
| `DOM_VK_1` | 0x31 (49) | "1" キー（メインキー）。 |
| `DOM_VK_2` | 0x32 (50) | "2" キー（メインキー）。 |
| `DOM_VK_3` | 0x33 (51) | "3" キー（メインキー）。 |
| `DOM_VK_4` | 0x34 (52) | "4" キー（メインキー）。 |
| `DOM_VK_5` | 0x35 (53) | "5" キー（メインキー）。 |
| `DOM_VK_6` | 0x36 (54) | "6" キー（メインキー）。 |
| `DOM_VK_7` | 0x37 (55) | "7" キー（メインキー）。 |
| `DOM_VK_8` | 0x38 (56) | "8" キー（メインキー）。 |
| `DOM_VK_9` | 0x39 (57) | "9" キー（メインキー）。 |
| `DOM_VK_COLON` | 0x3A (58) | コロン (":") キー。 |
| `DOM_VK_SEMICOLON` | 0x3B (59) | セミコロン (";") キー。 |
| `DOM_VK_LESS_THAN` | 0x3C (60) | 小なり ("<") キー。 |
| `DOM_VK_EQUALS` | 0x3D (61) | 等号 ("=") キー。 |
| `DOM_VK_GREATER_THAN` | 0x3E (62) | 大なり (">") キー。 |
| `DOM_VK_QUESTION_MARK` | 0x3F (63) | 疑問符 ("?") キー。 |
| `DOM_VK_AT` | 0x40 (64) | アットマーク ("@") キー。 |
| `DOM_VK_A` | 0x41 (65) | "A" キー。 |
| `DOM_VK_B` | 0x42 (66) | "B" キー。 |
| `DOM_VK_C` | 0x43 (67) | "C" キー。 |
| `DOM_VK_D` | 0x44 (68) | "D" キー。 |
| `DOM_VK_E` | 0x45 (69) | "E" キー。 |
| `DOM_VK_F` | 0x46 (70) | "F" キー。 |
| `DOM_VK_G` | 0x47 (71) | "G" キー。 |
| `DOM_VK_H` | 0x48 (72) | "H" キー。 |
| `DOM_VK_I` | 0x49 (73) | "I" キー。 |
| `DOM_VK_J` | 0x4A (74) | "J" キー。 |
| `DOM_VK_K` | 0x4B (75) | "K" キー。 |
| `DOM_VK_L` | 0x4C (76) | "L" キー。 |
| `DOM_VK_M` | 0x4D (77) | "M" キー。 |
| `DOM_VK_N` | 0x4E (78) | "N" キー。 |
| `DOM_VK_O` | 0x4F (79) | "O" キー。 |
| `DOM_VK_P` | 0x50 (80) | "P" キー。 |
| `DOM_VK_Q` | 0x51 (81) | "Q" キー。 |
| `DOM_VK_R` | 0x52 (82) | "R" キー。 |
| `DOM_VK_S` | 0x53 (83) | "S" キー。 |
| `DOM_VK_T` | 0x54 (84) | "T" キー。 |
| `DOM_VK_U` | 0x55 (85) | "U" キー。 |
| `DOM_VK_V` | 0x56 (86) | "V" キー。 |
| `DOM_VK_W` | 0x57 (87) | "W" キー。 |
| `DOM_VK_X` | 0x58 (88) | "X" キー。 |
| `DOM_VK_Y` | 0x59 (89) | "Y" キー。 |
| `DOM_VK_Z` | 0x5A (90) | "Z" キー。 |
| `DOM_VK_WIN` | 0x5B (91) | Windows では Windows ロゴキー。 Linux ではスーパー／ハイパーキー。 |
| `DOM_VK_CONTEXT_MENU` | 0x5D (93) | コンテキストメニューを開くキー。 |
| `DOM_VK_SLEEP` | 0x5F (95) | このキーコードの Linux 対応は Gecko 4.0 で追加されました。 |
| `DOM_VK_NUMPAD0` | 0x60 (96) | "0" キー（テンキー）。 |
| `DOM_VK_NUMPAD1` | 0x61 (97) | "1" キー（テンキー）。 |
| `DOM_VK_NUMPAD2` | 0x62 (98) | "2" キー（テンキー）。 |
| `DOM_VK_NUMPAD3` | 0x63 (99) | "3" キー（テンキー）。 |
| `DOM_VK_NUMPAD4` | 0x64 (100) | "4" キー（テンキー）。 |
| `DOM_VK_NUMPAD5` | 0x65 (101) | "5" キー（テンキー）。 |
| `DOM_VK_NUMPAD6` | 0x66 (102) | "6" キー（テンキー）。 |
| `DOM_VK_NUMPAD7` | 0x67 (103) | "7" キー（テンキー）。 |
| `DOM_VK_NUMPAD8` | 0x68 (104) | "8" キー（テンキー）。 |
| `DOM_VK_NUMPAD9` | 0x69 (105) | "9" キー（テンキー）。 |
| `DOM_VK_MULTIPLY` | 0x6A (106) | "\*" キー（テンキー）。 |
| `DOM_VK_ADD` | 0x6B (107) | "+" キー（テンキー）。 |
| `DOM_VK_SEPARATOR` | 0x6C (108) |  |
| `DOM_VK_SUBTRACT` | 0x6D (109) | "-" キー（テンキー）。 |
| `DOM_VK_DECIMAL` | 0x6E (110) | テンキーの浮動小数点キー。 |
| `DOM_VK_DIVIDE` | 0x6F (111) | "/" キー（テンキー）。 |
| `DOM_VK_F1` | 0x70 (112) | F1 キー。 |
| `DOM_VK_F2` | 0x71 (113) | F2 キー。 |
| `DOM_VK_F3` | 0x72 (114) | F3 キー。 |
| `DOM_VK_F4` | 0x73 (115) | F4 キー。 |
| `DOM_VK_F5` | 0x74 (116) | F5 キー。 |
| `DOM_VK_F6` | 0x75 (117) | F6 キー。 |
| `DOM_VK_F7` | 0x76 (118) | F7 キー。 |
| `DOM_VK_F8` | 0x77 (119) | F8 キー。 |
| `DOM_VK_F9` | 0x78 (120) | F9 キー。 |
| `DOM_VK_F10` | 0x79 (121) | F10 キー。 |
| `DOM_VK_F11` | 0x7A (122) | F11 キー。 |
| `DOM_VK_F12` | 0x7B (123) | F12 キー。 |
| `DOM_VK_F13` | 0x7C (124) | F13 キー。 |
| `DOM_VK_F14` | 0x7D (125) | F14 キー。 |
| `DOM_VK_F15` | 0x7E (126) | F15 キー。 |
| `DOM_VK_F16` | 0x7F (127) | F16 キー。 |
| `DOM_VK_F17` | 0x80 (128) | F17 キー。 |
| `DOM_VK_F18` | 0x81 (129) | F18 キー。 |
| `DOM_VK_F19` | 0x82 (130) | F19 キー。 |
| `DOM_VK_F20` | 0x83 (131) | F20 キー。 |
| `DOM_VK_F21` | 0x84 (132) | F21 キー。 |
| `DOM_VK_F22` | 0x85 (133) | F22 キー。 |
| `DOM_VK_F23` | 0x86 (134) | F23 キー。 |
| `DOM_VK_F24` | 0x87 (135) | F24 キー。 |
| `DOM_VK_NUM_LOCK` | 0x90 (144) | Num Lock キー。 |
| `DOM_VK_SCROLL_LOCK` | 0x91 (145) | Scroll Lock キー。 |
| `DOM_VK_WIN_OEM_FJ_JISHO` | 0x92 (146) | Windows の OEM 固有キー。
 これは富士通の OASYS で「辞書」キーに使われていました。
  |
| `DOM_VK_WIN_OEM_FJ_MASSHOU` | 0x93 (147) | Windows の OEM 固有キー。
 これは富士通の OASYS で「単語登録解除」キーに使われていました。
  |
| `DOM_VK_WIN_OEM_FJ_TOUROKU` | 0x94 (148) | Windows の OEM 固有キー。
 これは富士通の OASYS で「単語登録」キーに使われていました。
  |
| `DOM_VK_WIN_OEM_FJ_LOYA` | 0x95 (149) | Windows の OEM 固有キー。
 これは富士通の OASYS で「左親指シフト」キーに使われていました。
  |
| `DOM_VK_WIN_OEM_FJ_ROYA` | 0x96 (150) | 
 An
 Windows の OEM 固有キー。
 これは富士通の OASYS で「右親指シフト」キーに使われていました。
  |
| `DOM_VK_CIRCUMFLEX` | 0xA0 (160) | サーカムフレックス ("^") キー。 |
| `DOM_VK_EXCLAMATION` | 0xA1 (161) | 感嘆符 ("!") キー。 |
| `DOM_VK_DOUBLE_QUOTE` | 0xA3 (162) | 二重引用符 (""") キー。 |
| `DOM_VK_HASH` | 0xA3 (163) | ハッシュ ("#") キー。 |
| `DOM_VK_DOLLAR` | 0xA4 (164) | ドル記号 ("$") キー。 |
| `DOM_VK_PERCENT` | 0xA5 (165) | パーセント ("%") キー。 |
| `DOM_VK_AMPERSAND` | 0xA6 (166) | アンパーサンド ("&") キー。 |
| `DOM_VK_UNDERSCORE` | 0xA7 (167) | アンダースコア ("\_") キー。 |
| `DOM_VK_OPEN_PAREN` | 0xA8 (168) | 開き括弧 ("(") キー。 |
| `DOM_VK_CLOSE_PAREN` | 0xA9 (169) | 閉じ括弧 (")") キー。 |
| `DOM_VK_ASTERISK` | 0xAA (170) | アスタリスク ("\*") キー。 |
| `DOM_VK_PLUS` | 0xAB (171) | 正記号 ("+") キー。 |
| `DOM_VK_PIPE` | 0xAC (172) | パイプ ("|") キー。 |
| `DOM_VK_HYPHEN_MINUS` | 0xAD (173) | ハイフン/マイナス ("-") キー。 |
| `DOM_VK_OPEN_CURLY_BRACKET` | 0xAE (174) | 開き波括弧 ("{") キー。 |
| `DOM_VK_CLOSE_CURLY_BRACKET` | 0xAF (175) | 閉じ波括弧 ("}") キー。 |
| `DOM_VK_TILDE` | 0xB0 (176) | チルダ ("~") キー。 |
| `DOM_VK_VOLUME_MUTE` | 0xB5 (181) | 消音キー。 |
| `DOM_VK_VOLUME_DOWN` | 0xB6 (182) | 音量下げキー |
| `DOM_VK_VOLUME_UP` | 0xB7 (183) | 音量上げキー |
| `DOM_VK_COMMA` | 0xBC (188) | カンマ (",") キー。 |
| `DOM_VK_PERIOD` | 0xBE (190) | ピリオド (".") キー。 |
| `DOM_VK_SLASH` | 0xBF (191) | スラッシュ ("/") キー。 |
| `DOM_VK_BACK_QUOTE` | 0xC0 (192) | 逆引用符 ("`") キー。 |
| `DOM_VK_OPEN_BRACKET` | 0xDB (219) | 開き角括弧 ("[") キー。 |
| `DOM_VK_BACK_SLASH` | 0xDC (220) | バックスラッシュ ("\") キー。 |
| `DOM_VK_CLOSE_BRACKET` | 0xDD (221) | 閉じ角括弧 ("]") キー。 |
| `DOM_VK_QUOTE` | 0xDE (222) | 単一引用符 (''') キー。 |
| `DOM_VK_META` | 0xE0 (224) | Linux の Meta キー、 Mac の Command キー。 |
| `DOM_VK_ALTGR` | 0xE1 (225) | Linux の AltGr キー (Level 3 Shift キーまたは Level 5 Shift キー)。 |
| `DOM_VK_WIN_ICO_HELP` | 0xE3 (227) | Windows の OEM 固有キー。
 これは Olivetti ICO キーボードで使われています（いました？）
  |
| `DOM_VK_WIN_ICO_00` | 0xE4 (228) | Windows の OEM 固有キー。
 これは Olivetti ICO キーボードで使われています（いました？）
  |
| `DOM_VK_WIN_ICO_CLEAR` | 0xE6 (230) | Windows の OEM 固有キー。
 これは Olivetti ICO キーボードで使われています（いました？）
  |
| `DOM_VK_WIN_OEM_RESET` | 0xE9 (233) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_JUMP` | 0xEA (234) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_PA1` | 0xEB (235) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_PA2` | 0xEC (236) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_PA3` | 0xED (237) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_WSCTRL` | 0xEE (238) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_CUSEL` | 0xEF (239) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_ATTN` | 0xF0 (240) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_FINISH` | 0xF1 (241) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_COPY` | 0xF2 (242) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_AUTO` | 0xF3 (243) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_ENLW` | 0xF4 (244) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_WIN_OEM_BACKTAB` | 0xF5 (245) | Windows の OEM 固有キー。
 これは Nokia/Ericsson の端末で使用されていました。
  |
| `DOM_VK_ATTN` | 0xF6 (246) | IBM ミッドレンジコンピューター（AS/400 など）の Attn (Attention) キー。 |
| `DOM_VK_CRSEL` | 0xF7 (247) | IBM 3270 キーボードレイアウトの CrSel （カーソル選択）キー。 |
| `DOM_VK_EXSEL` | 0xF8 (248) | IBM 3270 キーボードレイアウトの ExSel （拡張選択）キー。 |
| `DOM_VK_EREOF` | 0xF9 (249) | IBM 3270 キーボードレイアウトの Erase EOF キー。 |
| `DOM_VK_PLAY` | 0xFA (250) | IBM 3270 キーボードレイアウトの Play キー。 |
| `DOM_VK_ZOOM` | 0xFB (251) | Zoom キー。 |
| `DOM_VK_PA1` | 0xFD (253) | IBM 3270 キーボードレイアウトの PA1 キー。 |
| `DOM_VK_WIN_OEM_CLEAR` | 0xFE (254) | クリアキーです。ただし、 `DOM_VK_CLEAR` との違いは分かりません。 |

### Windows の OEM 固有キー

Windows では、仮想キーコードのいくつかの値は、 OEM の特定のキー用に定義（予約）されています。これらは、非標準のキーボードの特殊なキーで利用可能です。言い換えれば、いくつかの値は、2 つ以上のベンダー（またはハードウェア）によって異なる意味で使用されています。

Gecko 21 （および 15 より古いバージョン）では、OEM 固有のキー値は Windows 上でのみ keyCode 属性で利用可能です。そのため、通常のウェブアプリケーションでは使用できません。それらはイントラネットのアプリケーション、または同様の状況においてのみ使用されます。

詳しくは MSDN の "Manufacturer-specific Virtual-Key Codes (Windows CE 5.0)" を参照してください。