Update proposed alt spec (with key/code table split out).
Move more non-normative info into the code spec.
--- a/html/DOM3-Events-alt.html Wed Mar 05 20:23:41 2014 -0800
+++ b/html/DOM3-Events-alt.html Thu Mar 06 08:35:10 2014 -0800
@@ -6035,360 +6035,6 @@
be misrepresented or unavailable in the PDF version or printed version of this specification.
</p>
- <section id="keyboard-input">
- <h2>Keyboard Input</h2>
-
- <p><em>This section is informative</em></p>
-
- <p>The relationship of each key to the complete keyboard has three separate aspects,
- each of which vary among different models and configurations of keyboards, particularly
- for locale-specific reasons:
- </p>
-
- <ul>
- <li><strong>Mechanical layout:</strong> the dimensions, size, and placement of the physical keys on the keyboard</li>
- <li><strong>Visual markings:</strong> the labels (or <em>legends</em>) that mark each key</li>
- <li><strong>Functional mapping:</strong> the abstract key-value association of each key.</li>
- </ul>
-
- <p>This specification only defines the functional mapping, in terms of
- <a href="#keys-keyvalues"><code>key</code></a> values and
- <a href="#keys-codevalues"><code>code</code></a> values,
- but briefly describes
- <a href="#keyboard-layout">keyboard layout</a> and
- <a href="#key-legends">key legends</a>
- for background.
- </p>
-
- <section id="key-legends">
- <h3>Key Legends</h3>
-
- <p><em>This section is informative</em></p>
-
- <p>The key legend is the visual marking that is printed or embossed on the <em>key cap</em> (the rectangular
- 'cap' that covers the mechanical switch for the key).
- These markings normally consist of one or more characters that a keystroke on that key
- will produce (such as
- <code class="glyph">'F'</code>,
- <code class="glyph">'8'</code>, or
- <code class="glyph">'ш'</code>),
- or names or symbols which indicate that key's function (such as an upward-pointing arrow
- <code class="glyph">⇧</code> indicating <code class="key">'Shift'</code>,
- or the string <code>'Enter'</code>).
- Keys are often referred to by this marking
- (e.g., <q>Press the <code>'Shift'</code> and <code>'F'</code> keys.</q>).
- Note, however, that the visual appearance of the key has no bearing on its digital representation,
- and in many configurations may be completely inaccurate.
- Even the control and function keys, such as <code>'Enter'</code>, MAY be mapped to different
- functionality, or even mapped as character keys.
- </p>
-
- <p>For historical reasons, the character keys are typically marked with the capital-letter equivalents
- of the character value they produce, e.g., the <code>'F'</code> key (the key marked with the glyph
- <code class="glyph">'F'</code>), will produce the character value <code class="char">'f'</code> when
- pressed without an active modifier key (<code class="key">'Shift'</code>) or modifier state
- (<code class="key">'CapsLock'</code>).
- </p>
-
- <p class="note"><strong>Note:</strong>
- Many keyboards contain keys that do not normally produce any characters, even though the symbol might
- have a Unicode equivalent.
- For example, the <code class="key">'Shift'</code> key might bear the symbol
- <code class="glyph">⇧</code>, which has the
- <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> <code class="char">'\u21E7'</code>,
- but pressing the <code class="key">'Shift'</code> key will not produce this character value, and
- there is no <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> for
- <code class="key">'Shift'</code>.
- </p>
- </section> <!-- key-legends -->
-
- <section id="keyboard-layout">
- <h3>Keyboard Layout</h3>
- <p><em>This section is informative</em></p>
-
- <p>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.
- </p>
-
- <section id="keyboard-common-layouts">
- <h1>Standard Keyboard Layouts</h1>
-
- <p>This section describes the physical layouts found on commonly available keyboards.
- </p>
-
- <section id="keyboard-sections">
- <h1>Keyboard Sections</h1>
-
- <p>When discussing keyboard layouts, it is convenient to divide the standard keyboard into distinct sections
- and to label each row.
- </p>
-
- <figure id="figure-keyboard-sections">
- <img src='images/keyboard-sections.svg' width="684" height="225" />
- <figcaption>The five general sections of a standard keyboard</figcaption>
- </figure>
-
- <p>These keyboard sections are:
- </p>
-
- <ul>
- <li>The <em>Alphanumeric</em> 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.
- </li>
- <li>The <em>Control Pad</em> and <em>Arrow Pad</em> sections contain the arrow keys and other editing keys.
- </li>
- <li>The <em>Numpad</em> (also known as the "numeric keypad" or "number pad") contains number and math keys to make it
- easier to enter numeric data.
- </li>
- <li>And finally, the <em>Function</em> section contains miscellaneous function keys and special keys like Escape.
- </li>
- </ul>
-
- <p>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.
- </p>
- <p>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 <a href="#key-media">Media Keys</a> section.
- Keys not covered in this document should be handled in the same manner as described in the
- <a href="#other-devices">Other Devices</a> section.
- </p>
- </section><!-- keyboard-sections -->
-
- <section id="keyboard-101">
- <h1>Standard "101" Keyboard Layout</h1>
- <p>The standard "101" keyboard (commonly referred to as the "US layout") is the only layout that uses the <code class="key-code">'Backslash'</code> code.
- All the other layouts omit this key and expand the <code class="key-code">'Enter'</code> key to occupy
- two-rows.
- </p>
-
- <figure id="figure-keyboard-101-us">
- <img src='images/keyboard-101-us.svg' width="684" height="225" />
- <figcaption>Standard '101' keyboard layout showing unmodified US key values</figcaption>
- </figure>
-
- <p>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 <code class="glyph">'OS'</code> keys,
- and the <code class="glyph">'Menu'</code> key were
- added later to bring the total to 104 keys.
- </p>
- </section>
-
- <section id="keyboard-101alt">
- <h1>Alternate "101" Keyboard Layout</h1>
- <p>The alternate "101" keyboard removes the <code class="key-code">'Backslash'</code> key to create a
- large <code class="key-code">'Enter'</code> key and shrinks the <code class="key-code">'Backspace'</code>
- key to make room for the <code class="key-code">'IntlYen'</code> key (The <code class="key-code">'IntlYen'</code> name comes from the
- Japanese layout — in the Russian layout shown above this key maps to a <code class="glyph">'\'</code>.
- </p>
-
- <figure id="figure-keyboard-101-russian">
- <img src='images/keyboard-101-russian.svg' width="684" height="225" />
- <figcaption>Alternate '101' keyboard layout showing unmodified Russian key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-102">
- <h1>Standard "102" Keyboard Layout</h1>
- <p>The standard "102" keyboard is common throughout Europe and adds two keys that don't exist on the
- "101" layouts:
- The <code class="key-code">'IntlBackslash'</code> key next to the left shift key,
- and the <code class="key-code">'IntlHash'</code> key which is partially tucked under the
- <code class="key-code">'Enter'</code> key.
- </p>
-
- <figure id="figure-keyboard-102-uk">
- <img src='images/keyboard-102-uk.svg' width="684" height="225" />
- <figcaption>Standard '102' keyboard layout showing unmodified French key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-103">
- <h1>Korean "103" Keyboard Layout</h1>
- <p>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
- <code class="key-code">'Hanja'</code> (labelled <code class="keycap">한자</code> <span class="phonetic">hanja</span>) and
- <code class="key-code">'HangulMode'</code> (labelled <code class="keycap">한/영</code> <span class="phonetic">han/yeong</span>).
- </p>
-
- <figure id="figure-keyboard-103-korean">
- <img src='images/keyboard-103-korean.svg' width="684" height="225" />
- <figcaption>Korean '103' keyboard layout showing unmodified Korean key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-104">
- <h1>Brazilian "104" Keyboard Layout</h1>
- <p>The "104" layout used in Brazil adds 4 new keys: the two non-US keys from the "102" layout
- (<code class="key-code">'IntlHash'</code> and <code class="key-code">'IntlBackslash'</code>)
- plus the <code class="key-code">'IntlRo'</code> key (next to the right shift
- key) and an extra key on the numeric keypad. This new keypad key is called
- <code class="key-code">'KeypadComma'</code> because it represents the thousands separator. On the
- Brazilian key layout, this key has a keycap of <code class="keycap">.</code> and the <code class="key-code">'KeypadPeriod'</code>
- key has a keycap of <code class="keycap">,</code>.
- </p>
-
- <figure id="figure-keyboard-104-brazilian">
- <img src='images/keyboard-104-brazilian.svg' width="684" height="225" />
- <figcaption>Standard '104' keyboard layout showing unmodified Brazilian key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-106">
- <h1>Japanese "106" Keyboard Layout</h1>
- <p>The Japanese "106" keyboard layout adds 3 new keys:
- <code class="key-code">'IntlYen'</code>,
- <code class="key-code">'IntlHash'</code> and
- <code class="key-code">'IntlRo'</code>.
- It also shrinks the <code class="key-code">'Space'</code> key to make room for 3 input mode keys:
- <code class="key-code">'NoConvert'</code> (labelled <code class="keycap">無変換</code> <span class="phonetic">muhenkan</span>),
- <code class="key-code">'Convert'</code> (labelled <code class="keycap">変換</code> <span class="phonetic">henkan</span>),
- <code class="key-code">'KanaMode'</code> (labelled <code class="keycap">カタカナ/ひらがな/ローマ字</code> <span class="phonetic">katakana/hiragana/romaji</span>).
- </p>
-
- <figure id="figure-keyboard-106-japanese">
- <img src='images/keyboard-106-japanese.svg' width="684" height="225" />
- <figcaption>Standard '106' keyboard layout showing unmodified Japanese key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-mac">
- <h1>Apple Keyboard Layout</h1>
- <p>In general, Apple keyboards follow the same layout as PC keyboards, but there are some differences as
- noted in the following figure.
- </p>
-
- <figure id="figure-keyboard-mac">
- <img src='images/keyboard-mac.svg' width="684" height="225" />
- <figcaption>Apple extended keyboard layout showing unmodified English key values</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section>
-
- <section id="keyboard-laptops">
- <h1>Laptop Keyboard Layouts</h1>
-
- <p>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.
- </p>
-
- <figure id="figure-keyboard-laptop-mac">
- <img src='images/keyboard-laptop-mac.svg' width="420" height="180" />
- <figcaption>Apple laptop keyboard layout</figcaption>
- </figure>
-
- <p>In this Apple laptop keyboard, the right control key has been removed to make room for half-height
- arrow keys and a <code class="key-code">'Fn'</code> key is added on the left.
- </p>
-
- <figure id="figure-keyboard-laptop">
- <img src='images/keyboard-laptop.svg' width="460" height="180" />
- <figcaption>Sample PC laptop keyboard layout</figcaption>
- </figure>
-
- <p>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.
- </p>
- </section> <!-- keyboard-laptops -->
-
- </section><!-- keyboard-common-layouts -->
-
- <section id="keyboard-mobile">
- <h4>Mobile Keypads</h4>
-
- <p>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 [<cite><a class="informative" href="#references-ISO-9995-8">ISO-9995-8</a></cite>], which defines a numeric keypad layout and secondary assignment
- of Unicode characters in the range <code class="char">'\u0061'</code>..<code class="char">'\u007A'</code> to the number keys <code>2</code> through <code>9</code>, as a common layout appropriate to some
- international uses.</p>
-
- <p class="note"><strong>Note:</strong> 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.</p>
-
- <figure id="figure-numeric-keypad">
- <img src='images/ISOIEC-9995-8-2006.svg' width="180" height="240" />
- <figcaption>A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006.</figcaption>
- </figure>
- </section> <!-- keyboard-mobile -->
-
- <section id="remote-control">
- <h4>Media Remote Controls</h4>
-
- <p>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.</p>
-
- <p>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").
- </p>
-
- <figure id="figure-media-remote-control">
- <img src='images/remote-control.svg' width="102" height="422" />
- <figcaption>A graphical depiction of a media remote control, with buttons mapped to specific keys values.</figcaption>
- </figure>
-
- </section> <!-- remote-control -->
-
- <section id="keyboard-chording-virtual">
- <h4>Virtual Keyboards and Chording Keyboards</h4>
-
- <p>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 [<a href="#references-Unicode">Unicode</a>]
- or by the <a href="#key-value-tables">key values</a> defined in this specification. Wherever possible, however, virtual keyboards SHOULD produce the normal range
- of keyboard events and values, for ease of authoring and compatibility with existing content.</p>
-
- <p>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.</p>
-
- <p>For these and other alternative modal keyboards, the key values <a href="#key-Alphanumeric"><code class="key">'Alphanumeric'</code></a>, <a href="#key-CapsLock">
- <code class="key">'CapsLock'</code></a>, <a href="#key-NumLock"><code class="key">'NumLock'</code></a>, and <a href="#key-SymbolLock"><code class="key">
- 'SymbolLock'</code></a> are RECOMMENDED for the keys which switch between different modes.</p>
-
- </section> <!-- keyboard-chording-virtual -->
-
- </section> <!-- keyboard-layout -->
-
- </section> <!-- keyboard-input -->
-
<section id="keys-codevalues">
<h1>Key codes</h1>
@@ -6402,6 +6048,9 @@
(unaffected by the current keyboard state) that uniquely identifies each key on the keyboard.
</p>
+ <p class="note"><strong>Note:</strong> See the <a href="DOM3Events-code.html">DOM Level 3 KeyboardEvent code Specification</a>
+ for a normative list of <code>code</code> values.</p>
+
<section id="code-motivation">
<h1>Motivation for Adding the <code>code</code> Attribute</h1>
@@ -6562,12 +6211,6 @@
</section> <!-- keys-codevalues -->
- <section id="code-value-tables">
- <h3>Keyboard Event <code>code</code> Value Tables</h3>
-
-
- </section> <!-- code-value-tables -->
-
<section id="keys-keyvalues">
<h2>Keyboard Event <code>key</code> Values</h2>
@@ -6576,6 +6219,9 @@
as for keyboard shortcuts). This specification defines a set of common key values (defined in the <a href="#key-value-tables">Key Value Tables</a>), and rules for production
of new key values.</p>
+ <p class="note"><strong>Note:</strong> See the <a href="DOM3Events-key.html">DOM Level 3 KeyboardEvent key Specification</a>
+ for a normative list of <code>key</code> values.</p>
+
<p>Key values can be used to detect the value of a key which has been pressed, using the <a href="#widl-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>
attribute. Content authors can retrieve the <a class="def" href="#glossary-character-value">
character value</a> of upper- or lower-case letters, number, symbols, or other character-producing keys, and also the <a class="def" href="#glossary-key-value">key
@@ -7697,23 +7343,6 @@
</section> <!-- keys-guidelines -->
</section> <!-- keys-keyvalues -->
- <section id="key-value-tables">
- <h3>Keyboard Event <code>code</code> and <code>key</code> Value Tables</h3>
-
- <section id="key-value-tables-code">
- <h3><code>code</code> Value Tables</h3>
- <p>See <a href="DOM3Events-code">DOM Level 3 KeyboardEvent code Specification</a> for a
- normative list of <code>code</code> values.</p>
- </section>
-
- <section id="key-value-tables-key">
- <h3><code>key</code> Value Tables</h3>
- <p>See <a href="DOM3Events-key">DOM Level 3 KeyboardEvent key Specification</a> for a
- normative list of <code>key</code> values.</p>
- </section>
-
- </section> <!-- key-value-tables -->
-
</section> <!-- keys -->
<!-- Appendix A: Legacy Event Initializers ========================================================-->
--- a/html/DOM3Events-code.html Wed Mar 05 20:23:41 2014 -0800
+++ b/html/DOM3Events-code.html Thu Mar 06 08:35:10 2014 -0800
@@ -92,7 +92,361 @@
</p>
</section> <!-- sotd -->
+
<!-- Section 6: Keyboard and key values ========================================================-->
+ <section id="keyboard-input">
+ <h2>Keyboard Input</h2>
+
+ <p><em>This section is informative</em></p>
+
+ <p>The relationship of each key to the complete keyboard has three separate aspects,
+ each of which vary among different models and configurations of keyboards, particularly
+ for locale-specific reasons:
+ </p>
+
+ <ul>
+ <li><strong>Mechanical layout:</strong> the dimensions, size, and placement of the physical keys on the keyboard</li>
+ <li><strong>Visual markings:</strong> the labels (or <em>legends</em>) that mark each key</li>
+ <li><strong>Functional mapping:</strong> the abstract key-value association of each key.</li>
+ </ul>
+
+ <p>This specification only defines the functional mapping, in terms of
+ <a href="#keys-keyvalues"><code>key</code></a> values and
+ <a href="#keys-codevalues"><code>code</code></a> values,
+ but briefly describes
+ <a href="#keyboard-layout">keyboard layout</a> and
+ <a href="#key-legends">key legends</a>
+ for background.
+ </p>
+
+ <section id="key-legends">
+ <h3>Key Legends</h3>
+
+ <p><em>This section is informative</em></p>
+
+ <p>The key legend is the visual marking that is printed or embossed on the <em>key cap</em> (the rectangular
+ 'cap' that covers the mechanical switch for the key).
+ These markings normally consist of one or more characters that a keystroke on that key
+ will produce (such as
+ <code class="glyph">'F'</code>,
+ <code class="glyph">'8'</code>, or
+ <code class="glyph">'ш'</code>),
+ or names or symbols which indicate that key's function (such as an upward-pointing arrow
+ <code class="glyph">⇧</code> indicating <code class="key">'Shift'</code>,
+ or the string <code>'Enter'</code>).
+ Keys are often referred to by this marking
+ (e.g., <q>Press the <code>'Shift'</code> and <code>'F'</code> keys.</q>).
+ Note, however, that the visual appearance of the key has no bearing on its digital representation,
+ and in many configurations may be completely inaccurate.
+ Even the control and function keys, such as <code>'Enter'</code>, MAY be mapped to different
+ functionality, or even mapped as character keys.
+ </p>
+
+ <p>For historical reasons, the character keys are typically marked with the capital-letter equivalents
+ of the character value they produce, e.g., the <code>'F'</code> key (the key marked with the glyph
+ <code class="glyph">'F'</code>), will produce the character value <code class="char">'f'</code> when
+ pressed without an active modifier key (<code class="key">'Shift'</code>) or modifier state
+ (<code class="key">'CapsLock'</code>).
+ </p>
+
+ <p class="note"><strong>Note:</strong>
+ Many keyboards contain keys that do not normally produce any characters, even though the symbol might
+ have a Unicode equivalent.
+ For example, the <code class="key">'Shift'</code> key might bear the symbol
+ <code class="glyph">⇧</code>, which has the
+ <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> <code class="char">'\u21E7'</code>,
+ but pressing the <code class="key">'Shift'</code> key will not produce this character value, and
+ there is no <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> for
+ <code class="key">'Shift'</code>.
+ </p>
+ </section> <!-- key-legends -->
+
+ <section id="keyboard-layout">
+ <h3>Keyboard Layout</h3>
+ <p><em>This section is informative</em></p>
+
+ <p>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.
+ </p>
+
+ <section id="keyboard-common-layouts">
+ <h1>Standard Keyboard Layouts</h1>
+
+ <p>This section describes the physical layouts found on commonly available keyboards.
+ </p>
+
+ <section id="keyboard-sections">
+ <h1>Keyboard Sections</h1>
+
+ <p>When discussing keyboard layouts, it is convenient to divide the standard keyboard into distinct sections
+ and to label each row.
+ </p>
+
+ <figure id="figure-keyboard-sections">
+ <img src='images/keyboard-sections.svg' width="684" height="225" />
+ <figcaption>The five general sections of a standard keyboard</figcaption>
+ </figure>
+
+ <p>These keyboard sections are:
+ </p>
+
+ <ul>
+ <li>The <em>Alphanumeric</em> 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.
+ </li>
+ <li>The <em>Control Pad</em> and <em>Arrow Pad</em> sections contain the arrow keys and other editing keys.
+ </li>
+ <li>The <em>Numpad</em> (also known as the "numeric keypad" or "number pad") contains number and math keys to make it
+ easier to enter numeric data.
+ </li>
+ <li>And finally, the <em>Function</em> section contains miscellaneous function keys and special keys like Escape.
+ </li>
+ </ul>
+
+ <p>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.
+ </p>
+ <p>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 <a href="#key-media">Media Keys</a> section.
+ Keys not covered in this document should be handled in the same manner as described in the
+ <a href="#other-devices">Other Devices</a> section.
+ </p>
+ </section><!-- keyboard-sections -->
+
+ <section id="keyboard-101">
+ <h1>Standard "101" Keyboard Layout</h1>
+ <p>The standard "101" keyboard (commonly referred to as the "US layout") is the only layout that uses the <code class="key-code">'Backslash'</code> code.
+ All the other layouts omit this key and expand the <code class="key-code">'Enter'</code> key to occupy
+ two-rows.
+ </p>
+
+ <figure id="figure-keyboard-101-us">
+ <img src='images/keyboard-101-us.svg' width="684" height="225" />
+ <figcaption>Standard '101' keyboard layout showing unmodified US key values</figcaption>
+ </figure>
+
+ <p>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 <code class="glyph">'OS'</code> keys,
+ and the <code class="glyph">'Menu'</code> key were
+ added later to bring the total to 104 keys.
+ </p>
+ </section>
+
+ <section id="keyboard-101alt">
+ <h1>Alternate "101" Keyboard Layout</h1>
+ <p>The alternate "101" keyboard removes the <code class="key-code">'Backslash'</code> key to create a
+ large <code class="key-code">'Enter'</code> key and shrinks the <code class="key-code">'Backspace'</code>
+ key to make room for the <code class="key-code">'IntlYen'</code> key (The <code class="key-code">'IntlYen'</code> name comes from the
+ Japanese layout — in the Russian layout shown above this key maps to a <code class="glyph">'\'</code>.
+ </p>
+
+ <figure id="figure-keyboard-101-russian">
+ <img src='images/keyboard-101-russian.svg' width="684" height="225" />
+ <figcaption>Alternate '101' keyboard layout showing unmodified Russian key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-102">
+ <h1>Standard "102" Keyboard Layout</h1>
+ <p>The standard "102" keyboard is common throughout Europe and adds two keys that don't exist on the
+ "101" layouts:
+ The <code class="key-code">'IntlBackslash'</code> key next to the left shift key,
+ and the <code class="key-code">'IntlHash'</code> key which is partially tucked under the
+ <code class="key-code">'Enter'</code> key.
+ </p>
+
+ <figure id="figure-keyboard-102-uk">
+ <img src='images/keyboard-102-uk.svg' width="684" height="225" />
+ <figcaption>Standard '102' keyboard layout showing unmodified French key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-103">
+ <h1>Korean "103" Keyboard Layout</h1>
+ <p>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
+ <code class="key-code">'Hanja'</code> (labelled <code class="keycap">한자</code> <span class="phonetic">hanja</span>) and
+ <code class="key-code">'HangulMode'</code> (labelled <code class="keycap">한/영</code> <span class="phonetic">han/yeong</span>).
+ </p>
+
+ <figure id="figure-keyboard-103-korean">
+ <img src='images/keyboard-103-korean.svg' width="684" height="225" />
+ <figcaption>Korean '103' keyboard layout showing unmodified Korean key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-104">
+ <h1>Brazilian "104" Keyboard Layout</h1>
+ <p>The "104" layout used in Brazil adds 4 new keys: the two non-US keys from the "102" layout
+ (<code class="key-code">'IntlHash'</code> and <code class="key-code">'IntlBackslash'</code>)
+ plus the <code class="key-code">'IntlRo'</code> key (next to the right shift
+ key) and an extra key on the numeric keypad. This new keypad key is called
+ <code class="key-code">'KeypadComma'</code> because it represents the thousands separator. On the
+ Brazilian key layout, this key has a keycap of <code class="keycap">.</code> and the <code class="key-code">'KeypadPeriod'</code>
+ key has a keycap of <code class="keycap">,</code>.
+ </p>
+
+ <figure id="figure-keyboard-104-brazilian">
+ <img src='images/keyboard-104-brazilian.svg' width="684" height="225" />
+ <figcaption>Standard '104' keyboard layout showing unmodified Brazilian key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-106">
+ <h1>Japanese "106" Keyboard Layout</h1>
+ <p>The Japanese "106" keyboard layout adds 3 new keys:
+ <code class="key-code">'IntlYen'</code>,
+ <code class="key-code">'IntlHash'</code> and
+ <code class="key-code">'IntlRo'</code>.
+ It also shrinks the <code class="key-code">'Space'</code> key to make room for 3 input mode keys:
+ <code class="key-code">'NoConvert'</code> (labelled <code class="keycap">無変換</code> <span class="phonetic">muhenkan</span>),
+ <code class="key-code">'Convert'</code> (labelled <code class="keycap">変換</code> <span class="phonetic">henkan</span>),
+ <code class="key-code">'KanaMode'</code> (labelled <code class="keycap">カタカナ/ひらがな/ローマ字</code> <span class="phonetic">katakana/hiragana/romaji</span>).
+ </p>
+
+ <figure id="figure-keyboard-106-japanese">
+ <img src='images/keyboard-106-japanese.svg' width="684" height="225" />
+ <figcaption>Standard '106' keyboard layout showing unmodified Japanese key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-mac">
+ <h1>Apple Keyboard Layout</h1>
+ <p>In general, Apple keyboards follow the same layout as PC keyboards, but there are some differences as
+ noted in the following figure.
+ </p>
+
+ <figure id="figure-keyboard-mac">
+ <img src='images/keyboard-mac.svg' width="684" height="225" />
+ <figcaption>Apple extended keyboard layout showing unmodified English key values</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section>
+
+ <section id="keyboard-laptops">
+ <h1>Laptop Keyboard Layouts</h1>
+
+ <p>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.
+ </p>
+
+ <figure id="figure-keyboard-laptop-mac">
+ <img src='images/keyboard-laptop-mac.svg' width="420" height="180" />
+ <figcaption>Apple laptop keyboard layout</figcaption>
+ </figure>
+
+ <p>In this Apple laptop keyboard, the right control key has been removed to make room for half-height
+ arrow keys and a <code class="key-code">'Fn'</code> key is added on the left.
+ </p>
+
+ <figure id="figure-keyboard-laptop">
+ <img src='images/keyboard-laptop.svg' width="460" height="180" />
+ <figcaption>Sample PC laptop keyboard layout</figcaption>
+ </figure>
+
+ <p>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.
+ </p>
+ </section> <!-- keyboard-laptops -->
+
+ </section><!-- keyboard-common-layouts -->
+
+ <section id="keyboard-mobile">
+ <h4>Mobile Keypads</h4>
+
+ <p>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 [<cite><a class="informative" href="#references-ISO-9995-8">ISO-9995-8</a></cite>], which defines a numeric keypad layout and secondary assignment
+ of Unicode characters in the range <code class="char">'\u0061'</code>..<code class="char">'\u007A'</code> to the number keys <code>2</code> through <code>9</code>, as a common layout appropriate to some
+ international uses.</p>
+
+ <p class="note"><strong>Note:</strong> 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.</p>
+
+ <figure id="figure-numeric-keypad">
+ <img src='images/ISOIEC-9995-8-2006.svg' width="180" height="240" />
+ <figcaption>A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006.</figcaption>
+ </figure>
+ </section> <!-- keyboard-mobile -->
+
+ <section id="remote-control">
+ <h4>Media Remote Controls</h4>
+
+ <p>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.</p>
+
+ <p>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").
+ </p>
+
+ <figure id="figure-media-remote-control">
+ <img src='images/remote-control.svg' width="102" height="422" />
+ <figcaption>A graphical depiction of a media remote control, with buttons mapped to specific keys values.</figcaption>
+ </figure>
+
+ </section> <!-- remote-control -->
+
+ <section id="keyboard-chording-virtual">
+ <h4>Virtual Keyboards and Chording Keyboards</h4>
+
+ <p>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 [<a href="#references-Unicode">Unicode</a>]
+ or by the <a href="#key-value-tables">key values</a> defined in this specification. Wherever possible, however, virtual keyboards SHOULD produce the normal range
+ of keyboard events and values, for ease of authoring and compatibility with existing content.</p>
+
+ <p>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.</p>
+
+ <p>For these and other alternative modal keyboards, the key values <a href="#key-Alphanumeric"><code class="key">'Alphanumeric'</code></a>, <a href="#key-CapsLock">
+ <code class="key">'CapsLock'</code></a>, <a href="#key-NumLock"><code class="key">'NumLock'</code></a>, and <a href="#key-SymbolLock"><code class="key">
+ 'SymbolLock'</code></a> are RECOMMENDED for the keys which switch between different modes.</p>
+
+ </section> <!-- keyboard-chording-virtual -->
+
+ </section> <!-- keyboard-layout -->
+
+ </section> <!-- keyboard-input -->
<section id="code-value-tables">
<h3>Keyboard Event <code>code</code> Value Tables</h3>