This specification defines the values for the KeyboardEvent.code attribute, which is defined as part of the Document Object Model (DOM) Level 3 Events Specification [DOM3 Events]. The code value contains information about the key event that can use used identify the physical key being pressed by the user.

This document is a Working Draft of the DOM Level 3 KeyboardEvent code Values specification. It is expected that this specification will progress to W3C Recommendation status after review and refinement.

This document is produced by the Web Applications WG, part of the Rich Web Clients Activity in the W3C Interaction Domain. It is expected that this document will progress along the W3C's Recommendation track. Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and MAY be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

You can find the latest Editor's Draft of this document in the W3C's Mercurial repository, which is updated on a regular basis.

Implementers should be aware that this document is not stable. Implementers who are not taking part in the discussions are likely to find the specification changing out from under them in incompatible ways. Vendors interested in implementing this document before it eventually reaches the Candidate Recommendation stage should join the aforementioned mailing lists and take part in the discussions.

Keyboard Layout

This section is informative

Alphanumeric keyboards are the most common way for users to generate keyboard events. This section provides an overview of standard keyboards and their physical layouts.

Standard Keyboard Layouts

This section describes the physical layouts found on commonly available keyboards.

Keyboard Sections

When discussing keyboard layouts, it is convenient to divide the standard keyboard into distinct sections and to label each row.

The five general sections of a standard keyboard
The five general sections of a standard keyboard

These keyboard sections are:

  • The Alphanumeric section is the main part of the keyboard and is where most of the keyboard variation occurs. When a user selects a keyboard layout, it is the keys in this sections that are most affected.
  • The Control Pad and Arrow Pad sections contain the arrow keys and other editing keys.
  • The Numpad (also known as the "numeric keypad" or "number pad") contains number and math keys to make it easier to enter numeric data.
  • And finally, the Function section contains miscellaneous function keys and special keys like Escape.

To make it easier to identify keys, the rows on the keyboard are named starting with "A" for the bottom row up to "E" for the top row. The row of keys in the Function section are considered to be in row "K". These row names are consistent with those given in the ISO/IEC 9995-1 specification.

Note that many keyboards (both modern and legacy) have extra keys that do not fit neatly into the above sections. Some of these keys are covered in the Media Keys section.

Standard "101" Keyboard Layout

The standard "101" keyboard (commonly referred to as the "US layout") is the only layout that uses the 'Backslash' code. All the other layouts omit this key and expand the 'Enter' key to occupy two-rows.

Standard '101' keyboard layout
Standard '101' keyboard layout showing unmodified US key values

Modern standard "101"-layout keyboards actually contain 104 keys: 61 keys in the alphanumeric section and 43 keys in the numpad, control pad, arrow pad and function sections. The "101" name for this keyboard layout dates to the time when this standard keyboard did in fact contain 101 keys. The two 'OS' keys, and the 'Menu' key were added later to bring the total to 104 keys.

Alternate "101" Keyboard Layout

The alternate "101" keyboard removes the 'Backslash' key to create a large 'Enter' key and shrinks the 'Backspace' key to make room for the 'IntlYen' key (The 'IntlYen' name comes from the Japanese layout — in the Russian layout shown above this key maps to a '\'.

Alternate '101' keyboard layout
Alternate '101' keyboard layout showing unmodified Russian key values

Modern alternate "101"-layout keyboards contain 104 keys: 61 keys in the alphanumeric section and 43 keys in the numpad, control pad, arrow pad and function sections.

Standard "102" Keyboard Layout

The standard "102" keyboard is common throughout Europe and adds two keys that don't exist on the "101" layouts: The 'IntlBackslash' key next to the left shift key, and the 'IntlHash' key which is partially tucked under the 'Enter' key.

Standard '102' keyboard layout
Standard '102' keyboard layout showing unmodified French key values

Modern "102"-layout keyboards contain 105 keys: 62 keys in the alphanumeric section and 43 keys in the numpad, control pad, arrow pad and function sections.

Korean "103" Keyboard Layout

The Korean "103" keyboard is based on the alternate 101 layout and adds two additional keys (one on each side of the spacebar) to handle Korean-specific input modes. These keys are 'Hanja' (labelled 한자 hanja) and 'HangulMode' (labelled 한/영 han/yeong).

Korean '103' keyboard layout
Korean '103' keyboard layout showing unmodified Korean key values

Modern "103"-layout keyboards contain 106 keys: 63 keys in the alphanumeric section and 43 keys in the numpad, control pad, arrow pad and function sections.

Brazilian "104" Keyboard Layout

The "104" layout used in Brazil adds 4 new keys: the two non-US keys from the "102" layout ('IntlHash' and 'IntlBackslash') plus the 'IntlRo' key (next to the right shift key) and an extra key on the numeric keypad. This new keypad key is called 'KeypadComma' because it represents the thousands separator. On the Brazilian key layout, this key has a keycap of . and the 'KeypadPeriod' key has a keycap of ,.

Standard '104' keyboard layout
Standard '104' keyboard layout showing unmodified Brazilian key values

Modern "104"-layout keyboards contain 107 keys: 63 keys in the alphanumeric section and 44 keys in the numpad, control pad, arrow pad and function sections. Some Brazilian keyboards lack the extra keypad key and have only 106 keys.

Japanese "106" Keyboard Layout

The Japanese "106" keyboard layout adds 3 new keys: 'IntlYen', 'IntlHash' and 'IntlRo'. It also shrinks the 'Space' key to make room for 3 input mode keys: 'NonConvert' (labelled 無変換 muhenkan), 'Convert' (labelled 変換 henkan), 'KanaMode' (labelled カタカナ/ひらがな/ローマ字 katakana/hiragana/romaji).

Standard '106' keyboard layout
Standard '106' keyboard layout showing unmodified Japanese key values

Modern "106"-layout keyboards contain 109 keys: 66 keys in the alphanumeric section and 43 keys in the numpad, control pad, arrow pad and function sections.

Apple Keyboard Layout

In general, Apple keyboards follow the same layout as PC keyboards, but there are some differences as noted in the following figure.

Apple extended keyboard layout
Apple extended keyboard layout showing unmodified English key values

In this figure, the green keys are those that have been moved to a new location while the blue keys indicate keys that have been added.

Laptop Keyboard Layouts

The limited space available on laptop keyboards often means that the physical key layout needs to be adjusted to fit all the required keys. The writing system keys in the Alphanumeric section tend to remain intact, but the other keyboard sections are usually combined with other keys or removed altogether.

Apple laptop keyboard layout
Apple laptop keyboard layout

In this Apple laptop keyboard, the right control key has been removed to make room for half-height arrow keys and a 'Fn' key is added on the left.

Sample PC laptop keyboard layout
Sample PC laptop keyboard layout

PC laptop keyboards vary considerably, but this sample keyboard demonstrates some commonly found aspects. The control pad keys are added along the right-hand side with the arrow keys tucked in along the bottom. The right shift key is often shrunk to make room for the up arrow key and the right OS key is typically removed altogether.

Mobile Keypads

In the case where a content author wishes to rely on the mechanical layout of a mobile keypad, this specification suggests the keyboard configuration specified in ISO/IEC 9995-8:2006 [ISO-9995-8], which defines a numeric keypad layout and secondary assignment of Unicode characters in the range '\u0061'..'\u007A' to the number keys 2 through 9, as a common layout appropriate to some international uses.

Note: This keypad layout, and in particular the distribution of letters is for English devices, and will not match the keypads or configurations of many users. Content authors cannot rely upon any particular configuration, and are expected to create content in an internationalized and localizable manner.

ISO/IEC 9995-8:2006 keypad layout
A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006.

Media Remote Controls

Many keyboards contain special keys to control media functions. Increasingly, many media devices, especially televisions, are Web-enabled. Hybrid keyboard/remote-control devices are becoming more common. To meet the needs of these hybrid Web/media devices, this specification defines keys that are common as remote control buttons, in addition to traditional keyboard keys.

Because of the smaller form factor, keys (or buttons) on a remote control will often be modal, with one key performing different functions based on the context of the on-screen content. Additionally, many keys serve as toggles, to change back and forth between two or more states (see toggling keys). These remote control buttons typically do not have modifier states so each button is assigned a single function (like "Play", "Pause", "Up", "Menu" or "Exit").

A sample media remote control
A graphical depiction of a media remote control, with buttons mapped to specific keys values.

Virtual Keyboards and Chording Keyboards

Virtual keyboards are software-based sets of keys, in a variety of different arrangements, commonly found on touch-screen devices. They are often modal, with the ability to switch between different dynamic sets of keys, such as alphabetic, numeric, or symbolic keys. Because of the lack of physical constraints, these keyboards MAY present the widest range of characters, including emoticons and other symbols, and MAY have keys not represented by Unicode [Unicode] or by the key values. Wherever possible, however, virtual keyboards SHOULD produce the normal range of keyboard events and values, for ease of authoring and compatibility with existing content.

Chording keyboards, also know as chorded keysets or chord keyboards, are key input devices which produce values by pressing several keys in combination or sequence, normally to simulate a full range of characters or commands on a reduced set of keys, often for single-handed use. A chording keyboard MAY have additional mode keys to switch between key values, and the number and type of keys pressed to produce a key value will vary, but the final key values produced by such keyboards SHOULD match the range of key values described in this specification.

For these and other alternative modal keyboards, the key values 'Alphanumeric', 'CapsLock', 'NumLock', and 'SymbolLock' are RECOMMENDED for the keys which switch between different modes.

Keyboard Event code Value Tables

This section defines a list of code values which implementations MUST support.

Key Codes for Standard Keyboards

This section describes the various keyboard sections in more detail and defines the code values that should be used for each key.

Alphanumeric Section

The Alphanumeric section keys fall into two general categories: "writing system" keys whose meaning changes based on the current keyboard layout, and "functional" keys which are (mostly) the same for all layouts.

Writing System Keys

The "writing system" keys are those that change meaning based on the current keyboard layout.

The writing system keys
The writing system keys in the alphanumeric section

This figure shows a hypothetical keyboard that combines all the writing system keys (shown in blue and green) found on the various keyboards. Blue keys are present on all standard keyboards while green keys are only available on some keyboards.

The name shown on each key is the code assigned to that key. Wherever possible, the code names are based on the name for the US key in that position (i.e., they are based on the US keyboard layout). For keys that don't exist on the US keyboard, names from the UK or Japanese layouts are used instead.

List of code values for writing system keys in the Alphanumeric section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'Backquote' 0x35` and ~ on a US keyboard. This is the 半角/全角/漢字 (hankaku/zenkaku/kanji) key on Japanese keyboards
'Backslash' 0x31\ and | on a US keyboard. Found only on standard 101-key layouts.
'Backspace' 0x2aLabelled Delete on Macintosh keyboards.
'BracketLeft' 0x2f[ and { on a US keyboard.
'BracketRight' 0x30] and } on a US keyboard.
'Comma' 0x36, and < on a US keyboard.
'Digit0' 0x270 and ) on a US keyboard.
'Digit1' 0x1e1 and ! on a US keyboard.
'Digit2' 0x1f2 and @ on a US keyboard.
'Digit3' 0x203 and # on a US keyboard.
'Digit4' 0x214 and $ on a US keyboard.
'Digit5' 0x225 and % on a US keyboard.
'Digit6' 0x236 and ^ on a US keyboard.
'Digit7' 0x247 and & on a US keyboard.
'Digit8' 0x258 and * on a US keyboard.
'Digit9' 0x269 and ( on a US keyboard.
'Equal' 0x2e= and + on a US keyboard.
'IntlBackslash' 0x64Located between the 'ShiftLeft' and 'KeyZ' keys. The \ and | key on a UK keyboard.
'IntlHash' 0x32Located between the 'Quote' and 'Enter' keys on row E of the keyboard. The # and ~ key on a UK keyboard.
'IntlRo' 0x87Located between the 'Slash' and 'ShiftRight' keys. The \ and (ro) key on a Japanese keyboard.
'IntlYen' 0x89Located between the 'Equal' and 'Backspace' keys. The ¥ (yen) key on a Japanese keyboard. The \ and / key on a Russian keyboard.
'KeyA' 0x04a on a US keyboard. Labelled q on an AZERTY (e.g., French) keyboard.
'KeyB' 0x05b on a US keyboard.
'KeyC' 0x06c on a US keyboard.
'KeyD' 0x07d on a US keyboard.
'KeyE' 0x08e on a US keyboard.
'KeyF' 0x09f on a US keyboard.
'KeyG' 0x0ag on a US keyboard.
'KeyH' 0x0bh on a US keyboard.
'KeyI' 0x0ci on a US keyboard.
'KeyJ' 0x0dj on a US keyboard.
'KeyK' 0x0ek on a US keyboard.
'KeyL' 0x0fl on a US keyboard.
'KeyM' 0x10m on a US keyboard.
'KeyN' 0x11n on a US keyboard.
'KeyO' 0x12o on a US keyboard.
'KeyP' 0x13p on a US keyboard.
'KeyQ' 0x14q on a US keyboard. Labelled a on an AZERTY (e.g., French) keyboard.
'KeyR' 0x15r on a US keyboard.
'KeyS' 0x16s on a US keyboard.
'KeyT' 0x17t on a US keyboard.
'KeyU' 0x18u on a US keyboard.
'KeyV' 0x19v on a US keyboard.
'KeyW' 0x1aw on a US keyboard. Labelled z on an AZERTY (e.g., French) keyboard.
'KeyX' 0x1bx on a US keyboard.
'KeyY' 0x1cy on a US keyboard. Labelled z on a QWERTZ (e.g., German) keyboard.
'KeyZ' 0x1dz on a US keyboard. Labelled w on an AZERTY (e.g., French) keyboard, and y on a QWERTZ (e.g., German) keyboard.
'Minus' 0x2d- and _ on a US keyboard.
'Period' 0x37. and > on a US keyboard.
'Quote' 0x34' and " on a US keyboard.
'Semicolon' 0x33; and : on a US keyboard.
'Slash' 0x38/ and ? on a US keyboard.

Functional Keys

The Functional keys (not to be confused with the Function keys described later) are those keys in the Alphanumeric section that provide general editing functions that are common to all locales (like Shift, Tab, Enter and Backspace). With a few exceptions, these keys do not change meaning based on the current keyboard layout.

The standard set of functional keys
The standard set of functional keys in the alphanumeric section
List of code values for functional keys in the Alphanumeric section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'AltLeft' 0xe2Labelled Alt or Option.
'AltRight' 0xe6Labelled Alt or Option. This is the AltGr key on many keyboard layouts.
'CapsLock' 0x39
'ContextMenu' 0x65The application context menu key, which is typically found between the right OS key and the right Control key.
'ControlLeft' 0xe0
'ControlRight' 0xe4
'Enter' 0x28Labelled Enter and Return on Macintosh keyboards.
'OSLeft' 0xe3The Windows, , Command or other OS symbol key.
'OSRight' 0xe7The Windows, , Command or other OS symbol key.
'ShiftLeft' 0xe1
'ShiftRight' 0xe5
'Space' 0x2cThe   key.
'Tab' 0x2b

On some keyboards (notably Japanese and Korean) the spacebar is reduced in size to make room for extra keys on the bottom row. These keys typically allow the users to change the current input mode. Note that even though some of these Japanese and Korean keys occupy the same physical location on the keyboard, they use different code values.

Comparison of the lower row of functional keys
Comparison of the lower row of functional keys on different keyboards
List of code values for functional keys found on Japanese and Korean keyboards.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'Convert' 0x8aJapanese: 変換 (henkan)
'KanaMode' 0x88Japanese: カタカナ/ひらがな/ローマ字 (katakana/hiragana/romaji)
'Lang1' 0x90 Korean: 한/영 (han/yeong)
Japanese (Mac keyboard): かな (kana)
'Lang2' 0x91 Korean: 한자 (hanja)
Japanese (Mac keyboard): 英数 (eisu)
'Lang3' 0x92 Japanese (word-processing keyboard): Katakana
'Lang4' 0x93 Japanese (word-processing keyboard): Hiragana
'Lang5' 0x94 Japanese (word-processing keyboard): Zenkaku/Hankaku
'NonConvert' 0x8bJapanese: 無変換 (muhenkan)

On Apple keyboards, some keys on the bottom row are omitted and others are arranged in a different order.

Control Pad Section

The Control Pad contains keys for navigating and editing documents.

Standard Control Pad layouts
Standard Control Pad layouts
List of code values for keys in the ControlPad section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'Delete' 0x4c
'End' 0x4d
'Help' 0x75Not present on standard PC keyboards.
'Home' 0x4a
'Insert' 0x49Not present on Apple keyboards.
'PageDown' 0x4e
'PageUp' 0x4b

Note: The code for the 'Fn' key (found on some Apple keyboards) is defined below in the Function Section.

Arrow Pad Section

The Arrow Pad section contains the 4 arrow keys.

Standard Arrow Pad layout
Standard Arrow Pad layout
List of code values for keys in the ArrowPad section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'ArrowDown' 0x51
'ArrowLeft' 0x50
'ArrowRight' 0x4f
'ArrowUp' 0x52

Numpad Section

The Numpad Section contains numeric and mathematical operator keys arranged in a calculator-grid to facilitate numeric data entry.

Standard Numpad layouts
Standard Numpad layouts

The standard Numpad is sometimes extended with additional keys for parentheses, operators, hexadecimal symbols, or calculator functions (like backspace). Some of the commonly added keys are listed in the table below.

List of code values for keys in the Numpad section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'NumLock' 0x53On the Mac, the 'NumLock' code should be used for the numpad 'Clear' key.
'Numpad0' 0x620 and Insert
'Numpad1' 0x591 and End
'Numpad2' 0x5a2 and ArrowDown
'Numpad3' 0x5b3 and PageDown
'Numpad4' 0x5c4 and ArrowLeft
'Numpad5' 0x5d5
'Numpad6' 0x5e6 and ArrowRight
'Numpad7' 0x5f7 and Home
'Numpad8' 0x608 and ArrowUp
'Numpad9' 0x619 and PageUp
'NumpadAdd' 0x57+
'NumpadBackspace' 0xbbFound on the Microsoft Natural Keyboard.
'NumpadClear' 0xd8For use with numpads that have a 'Clear' key that is separate from the 'NumLock' key. On the Mac, the numpad 'Clear' key should always be encoded as 'NumLock'.
'NumpadClearEntry' 0xd9
'NumpadComma' 0x85, (thousands separator). For locales where the thousands separator is a '.' (e.g., Brazil), this key may generate a '.'.
'NumpadDecimal' 0x63. (decimal separator) and Delete. For locales where the decimal separator is ',' (e.g., Brazil), this key may generate a ','.
'NumpadDivide' 0x54/
'NumpadEnter' 0x58
'NumpadEqual' 0x67=
'NumpadMemoryAdd' 0xd3
'NumpadMemoryClear' 0xd2
'NumpadMemoryRecall' 0xd1
'NumpadMemoryStore' 0xd0
'NumpadMemorySubtract' 0xd4
'NumpadMultiply' 0x55*
'NumpadParenLeft' 0xb6( Found on the Microsoft Natural Keyboard.
'NumpadParenRight' 0xb7) Found on the Microsoft Natural Keyboard.
'NumpadSubtract' 0x56-

For Numpads that provide keys not listed here, a code value string should be created by starting with 'Numpad' and appending an appropriate description of the key.

Function Section

The Function section runs along the top of the keyboard and contains the function keys and a few additional special keys (for example, 'Escape' and 'PrintScreen').

On some keyboards (especially those found on laptops or other portable computers), the function keys ('F1' ... 'F12') are defined to have other primary functions (like controlling display brightness or audio volume) and require that a separate 'Fn' key be pressed to make them act as function keys. Unfortunately, the primary functions assigned to these keys varies widely from one manufacturer to the next. Because of this, the code is always set to the function key name.

List of code values for keys in the Function section.
Code ValueUSB Usage ID
Page 0x07
(Informative)
Notes (Informative)
'Escape' 0x29
'F1' 0x3a
'F2' 0x3b
'F3' 0x3c
'F4' 0x3d
'F5' 0x3e
'F6' 0x3f
'F7' 0x40
'F8' 0x41
'F9' 0x42
'F10' 0x43
'F11' 0x44
'F12' 0x45
'Fn' This is typically a hardware key that does not generate a separate code. Most keyboards do not place this key in the Function section, but it is included here to keep with related keys.
'FnLock' Found on the Microsoft Natural Keyboard.
'PrintScreen' 0x46PrintScreen and SysReq
'ScrollLock' 0x47
'Pause' 0x48Pause and Break

For keyboards that provide more than 12 function keys, the code value follows the pattern shown above with 'F' followed by the function key number - 'F13', 'F14', 'F15', and so on.

Note: Apple keyboards may have 'Eject' or 'Power' keys in the Function section. The code values for these keys are defined in the Media Keys section.

Media Keys

Keys that fall outside the sections listed above are referred to as "media keys" since they commonly provide "media" functions like play, pause or volume control.

These are extra keys that many keyboard manufacturers add, but do not have a consistent location. These keys are often distinct from normal typing keys in appearance and may be recessed in the keyboard.

On laptop keyboards, these keys are often merged with the Function keys, with the "media" interpretation being the primary function of the key and the "function key" interpretation requiring the 'Fn' key to be pressed at the same time. In this configuration the code should be set to match the function key ('F1' ... 'F12'). When the keys are merged in this fashion, the code values are taken from the function key value since the "media" value is not consistent across keyboards.

List of code values for media keys.
Code ValueNotes (Informative)
'BrowserBack' Some laptops place this key to the left of the 'ArrowUp' key.
'BrowserFavorites'
'BrowserForward' Some laptops place this key to the right of the 'ArrowUp' key.
'BrowserHome'
'BrowserRefresh'
'BrowserSearch'
'BrowserStop'
'Eject' This key is placed in the Function section on some Apple keyboards.
'LaunchApp1' Sometimes labelled My Computer on the keyboard
'LaunchApp2' Sometimes labelled Calculator on the keyboard
'LaunchMail'
'MediaPlayPause'
'MediaSelect'
'MediaStop'
'MediaTrackNext'
'MediaTrackPrevious'
'Power' This key is placed in the Function section on some Apple keyboards, replacing the 'Eject' key.
'Sleep'
'VolumeDown'
'VolumeMute'
'VolumeUp'
'WakeUp'

Legacy Keys and Non-Standard Keys

These keys are not found on modern standard keyboards. They are listed here for reference purposes.

List of code values for legacy modifier keys.
Code ValueNotes (Informative)
'Hyper'
'Super'
'Turbo'

List of code values for legacy process control keys.
Code ValueNotes (Informative)
'Abort'
'Resume'
'Suspend'

List of code values for legacy editing keys.
Code ValueNotes (Informative)
'Again' Found on Sun's USB keyboard.
'Copy' Found on Sun's USB keyboard.
'Cut' Found on Sun's USB keyboard.
'Find' Found on Sun's USB keyboard.
'Open' Found on Sun's USB keyboard.
'Paste' Found on Sun's USB keyboard.
'Props' Found on Sun's USB keyboard.
'Select' Found on Sun's USB keyboard.
'Undo' Found on Sun's USB keyboard.

The following keys may be found on non-standard international keyboards.

List of code values for keys found on international keyboards.
Code ValueNotes (Informative)
'Hiragana' Use for dedicated ひらがな key found on some Japanese word processing keyboards.
'Katakana' Use for dedicated カタカナ key found on some Japanese word processing keyboards.

Acknowledgements

Considerable thanks are due to the following participants of the WebApps Working Group for providing substantial material contributions in the process of developing this specification.

Gary Kacmarcik (Google), Masayuki Nakano (Mozilla)

References

For the latest version of any W3C specification please consult the list of W3C Technical Reports available at http://www.w3.org/TR/.

Normative References

[DOM3 Events]
Document Object Model (DOM) Level 3 Events Specification,
G. Kacmarcik, T. Leithead, Editors.
World Wide Web Consortium, April 2014.
This version of the Document Object Model Level 3 Events Specification is https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html.
The latest version of Document Object Model Level 3 Events is available at http://www.w3.org/TR/DOM-Level-3-Events/.
[ISO9995-2/3]
ISO/IEC 9995, Information technology -- Keyboard layouts for text and office systems -- Part 2: Alphanumeric Section and Part 3: Complementary layouts of the alphanumeric zone of the alphanumeric section.
[ISO9995-8]
ISO/IEC 9995-8:2006, Information technology -- Keyboard layouts for text and office systems -- Part 8: Allocation of letters to the keys of a numeric keypad.
[Unicode]
The Unicode Standard, Version 5.0,
ISBN 0-321-48091-0, as updated periodically by the publication of new versions.
See also Versions of the Unicode Standard, available at http://www.unicode.org/standard/versions/ for latest version and additional information on versions of the standard and of the Unicode Character Database.