KeyboardEvent: keyCode プロパティ

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

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

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

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

メモ: ウェブ開発者は keydownkeyup イベントを処理する際に、表示可能な文字に対して keyCode 属性を使用するべきではありません。前述のように、keyCode 属性は表示可能な文字、特に ShiftAlt キーが押された状態での文字に対しては有用ではありません。ショートカットキーハンドラーを実装する場合、通常は 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

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 イベントが発行され、その keyCodecharCode0x10 (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 では、PrintScreenScrollLockPause はそれぞれ Mac の F13F14F15 に割り当てられています。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)" を参照してください。