updated keyboard section, revised key list into table
authorschepers
Thu, 09 Dec 2010 01:53:14 +0900
changeset 273 28c167d8cd3d
parent 272 2834177fdcdd
child 274 a08cf807cc33
updated keyboard section, revised key list into table
html/DOM3-Events.html
--- a/html/DOM3-Events.html	Thu Oct 07 03:12:30 2010 +0900
+++ b/html/DOM3-Events.html	Thu Dec 09 01:53:14 2010 +0900
@@ -25,16 +25,16 @@
       </p>
       <h1 id="Overview-title">Document Object Model (DOM) Level 3 Events Specification</h1>
 <!-- @@@ -->
-      <h2 id="Overview-W3C-doctype">W3C Editor's Draft <time datetime="2010-10-06">6 October 2010</time></h2>
+      <h2 id="Overview-W3C-doctype">W3C Editor's Draft <time datetime="2010-10-06">8 December 2010</time></h2>
       <dl>
         <dt>This version:</dt>
-        <dd><a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.148">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.148</a></dd>
+        <dd><a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.149">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.149</a></dd>
 
         <dt>Latest stable version:</dt>
         <dd><a href="http://www.w3.org/TR/DOM-Level-3-Events">http://www.w3.org/TR/DOM-Level-3-Events</a></dd>
 
         <dt>Previous version:</dt>
-        <dd><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.147">http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.147</a></dd>
+        <dd><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.148">http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.148</a></dd>
 
         <dt>Editor's Draft:</dt>
         <dd><a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html</a></dd>
@@ -200,7 +200,7 @@
               </li>
               <li><a href="#events-textevents">5.2.5 Text Event Types</a>
                 <ul class="toc">
-                  <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code> event</a></li>
+                  <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code> event</a></li>
                 </ul>
               </li>
               <li><a href="#events-keyboardevents">5.2.6 Keyboard Event Types</a>
@@ -250,7 +250,7 @@
                 <ul class="toc">
                   <li><a href="#keyboard-desktop">6.1.2.1 Desktop and Laptop Keyboards</a></li>
                   <li><a href="#keyboard-mobile">6.1.2.2 Mobile Keypads</a></li>
-                  <li><a href="#keyboard-chording-virtual">6.1.2.3 Virtual Keyboards and Chording Keyboards</a></li>
+                  <li><a href="#keyboard-chording-virtual">6.1.2.4 Virtual Keyboards and Chording Keyboards</a></li>
                 </ul>
               </li>
             </ul>
@@ -339,7 +339,7 @@
             described in <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>
             [<a href="#ref-rfc2119">RFC2119</a>].
             However, for readability, these words do not necessarily appear in uppercase in this specification.</p>
-          <p>This specification is to be understood in the context of the DOM Level 3 Core specification [<cite><a class="normative" href="#references-DOMCore">DOM3 Core</a></cite>] and the general considerations for DOM implementations apply. For example, behavior in exceptional circumstances (such as when a <code>null</code> argument is passed when <code>null</code> was not expected) is discussed under <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-17189187"><em>DOMException</em></a>, and handling of <a class="def" href="#glossary-namespaceURI">namespace URIs</a> is discussed in <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations"><em>XML Namespaces</em></a>. For additional information about <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance"><em>conformance</em></a>, please see the DOM Level 3 Core specification [<cite><a class="normative" href="#references-DOMCore">DOM3 Core</a></cite>].  A <a class="def" href="#glossary-user-agent">user agent</a> is not required to conform to the entirety of another specification in order to conform to this specification, but it must conform to the specific parts of any other specification which are called out in this specification (e.g. a conforming DOM3 Events <a class="def" href="#glossary-user-agent">user agent</a> must support the <code>DOMString</code> data type as defined in DOM3 Core, but need not support every method or data type defined in DOM3 Core in order to conform to DOM3 Events).</p>
+          <p>This specification is to be understood in the context of the DOM Level 3 Core specification [<cite><a class="normative" href="#references-DOMCore">DOM3 Core</a></cite>] and the general considerations for DOM implementations apply. For example, behavior in exceptional circumstances (such as when a <code>null</code> argument is passed when <code>null</code> was not expected) is discussed under <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-17189187"><em>DOMException</em></a>, and handling of <a class="def" href="#glossary-namespaceURI">namespace URIs</a> is discussed in <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations"><em>XML Namespaces</em></a>. For additional information about <a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance"><em>conformance</em></a>, please see the DOM Level 3 Core specification [<cite><a class="normative" href="#references-DOMCore">DOM3 Core</a></cite>].  A <a class="def" href="#glossary-user-agent">user agent</a> is not required to conform to the entirety of another specification in order to conform to this specification, but it must conform to the specific parts of any other specification which are called out in this specification (e.g., a conforming DOM3 Events <a class="def" href="#glossary-user-agent">user agent</a> must support the <code>DOMString</code> data type as defined in DOM3 Core, but need not support every method or data type defined in DOM3 Core in order to conform to DOM3 Events).</p>
           <p>This specification defines several classes of conformance for different <a class="def" href="#glossary-user-agent">user agents</a>, specifications, and content authors:</p>
           <dl>
             
@@ -386,9 +386,9 @@
                 <li><span class="assert mustnot">If the version parameter is omitted, the <a class="def" href="#glossary-user-agent">user agent</a> must not differentiate between the <a href="#conform-arch">DOM Events Architecture</a> as described in DOM Level 3 Events and DOM Level 2 Events, in terms of reporting support for the features indicated by the base feature string.</span></li>
               </ul>
             </li>
-            <li id="extended-feature-string">The extended feature string for each event type defined in DOM Level 3 Events shall be the base feature string “<code>Events</code>”, followed by the period character ("."), followed by the name of that event type, with the optional version string “<code>3.0</code>”, indicating that the <a class="def" href="#glossary-user-agent">user agent</a> supports that specific event type in the manner described in the appropriate <a href="#conform-module">conformance section</a>.  For example, the feature string for the <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event would be “<code>Events.textInput</code>”, with the optional version string “<code>3.0</code>”.
+            <li id="extended-feature-string">The extended feature string for each event type defined in DOM Level 3 Events shall be the base feature string “<code>Events</code>”, followed by the period character ("."), followed by the name of that event type, with the optional version string “<code>3.0</code>”, indicating that the <a class="def" href="#glossary-user-agent">user agent</a> supports that specific event type in the manner described in the appropriate <a href="#conform-module">conformance section</a>.  For example, the feature string for the <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event would be “<code>Events.textinput</code>”, with the optional version string “<code>3.0</code>”.
               <ul>
-                <li><span class="assert must">Because this specification does not retroactively define extended feature strings for DOM Level 2 Events, using the <a href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-5CED94D7"><code>DOMImplementation.hasFeature()</code></a> method with extended feature strings with a version string “<code>2.0</code>” must return false.</span><span class="warning" id="_42"><strong>Warning!</strong> Because this mechanism for discrete feature strings was not defined in earlier DOM Events specifications, older user agents which support those specifications but not this one may report false negatives in terms of supporting particular features.  For example, a browser which supports the the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type as defined in DOM Level 2 Events, but does not support this specification, is likely to return <code>false</code> to the method call <code>document.implementation.hasFeature("Events.click", "")</code>.  The content author should not take this for definitive proof that the implementation does not support the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type, but rather that other means of testing are required in that instance.  This method is best used as a means to detect positive results, not negative ones.  However, it is expected that this will prove of sufficient utility in many cases to justify its use.</span></li>
+                <li><span class="assert must">Because this specification does not retroactively define extended feature strings for DOM Level 2 Events, using the <a href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-5CED94D7"><code>DOMImplementation.hasFeature()</code></a> method with extended feature strings with a version string “<code>2.0</code>” must return false.</span><span class="warning" id="_42"><strong>Warning!</strong> Because this mechanism for discrete feature strings was not defined in earlier DOM Events specifications, older user agents which support those specifications but not this one may report false negatives in terms of supporting particular features.  For example, a browser which supports the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type as defined in DOM Level 2 Events, but does not support this specification, is likely to return <code>false</code> to the method call <code>document.implementation.hasFeature("Events.click", "")</code>.  The content author should not take this for definitive proof that the implementation does not support the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type, but rather that other means of testing are required in that instance.  This method is best used as a means to detect positive results, not negative ones.  However, it is expected that this will prove of sufficient utility in many cases to justify its use.</span></li>
                 <li><span class="assert must">A <a class="def" href="#glossary-user-agent">user agent</a> which supports an event type in a manner conforming to DOM Level 2 Events but not conforming to DOM Level 3 Events must not report a positive result to that extended feature string, regardless of the value of the version string.</span></li>
                 <li><span class="assert must">A specification or <a class="def" href="#glossary-host-language">host language</a> which <a href="#conf-specs">conforms</a> to DOM Level 3 Events, and which extends this specification in a manner consistent with the <a href="#conf-extend">extension conformance criteria</a>, may define extended feature strings for event types defined in that specification.  These extended feature strings may be used with the feature string “<code>Events</code>”.<!-- These extended feature strings may be used with the <a href="#base-feature-string">base feature string</a> of that specification, or with the feature string "<code>Events</code>"; for example, support for the SVG <code>zoom</code> event type might be tested using the method call <code>document.implementation.hasFeature("Events.zoom", "")</code> or the hypothetical <code>document.implementation.hasFeature("SVG.events.zoom", "")</code>. --></span>
                     <p class="example" id="example-zoom"><strong>Example:</strong> Support for the SVG <code>zoom</code> event type might be tested using the method call <code>document.implementation.hasFeature("Events.zoom", "")</code></p>
@@ -400,7 +400,7 @@
             </li>
             <li>For backwards compatibility, each interface defined in DOM Level 3 Events also has a feature string, which may act as a base feature string or as an extended feature string.  If used as a base feature string, it must follow the conventions of the <a href="#base-feature-string">primary base feature string</a> (e.g., “<code>KeyboardEvent</code>”, with the optional version string “<code>3.0</code>”); if used as an extended feature string, it must follow the conventions of the <a href="#extended-feature-string">extended feature strings for event types</a> (e.g., “<code>Events.KeyboardEvent</code>”, with the optional version string “<code>3.0</code>”).  In either case, the <a class="def" href="#glossary-user-agent">user agent</a> must only report a positive result if it supports that specific interface and all associated event types in the manner described in the appropriate <a href="#conform-module">conformance section</a>.  <span class="warning" id="_2"><strong>Warning!</strong> because this is not as specific as testing for a specific event type and may thus be less likely to be accurate, content authors are encouraged to use the feature strings for event types rather than interfaces.</span></li>
           </ul>
-          <p class="warning" id="_3"><strong>Warning!</strong> This specification does not provide a means to guarantee that any given element of a <a class="def" href="#glossary-host-language">host language</a> is capable of generating or dispatching an event of any given <a class="def" href="#glossary-event-type">event type</a> (e.g., an HTML <code>'img'</code> element may not dispatch a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event), or what the attributes of that event will be beyond those defined in this specification (e.g., the host language may add attributes to the event object).  A  <a class="def" href="#glossary-host-language">host language</a> may provide a different means to do so, including its own relevant feature strings.</p>
+          <p class="warning" id="_3"><strong>Warning!</strong> This specification does not provide a means to guarantee that any given element of a <a class="def" href="#glossary-host-language">host language</a> is capable of generating or dispatching an event of any given <a class="def" href="#glossary-event-type">event type</a> (e.g., an HTML <code>'img'</code> element may not dispatch a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event), or what the attributes of that event will be beyond those defined in this specification (e.g., the host language may add attributes to the event object).  A  <a class="def" href="#glossary-host-language">host language</a> may provide a different means to do so, including its own relevant feature strings.</p>
         </div>
 
 
@@ -455,10 +455,10 @@
           <dd>In the context of key values, a character value is a string representing one or more Unicode characters, such as a letter or symbol, or a set of letters.  
             <span class="note" id="note_character-value-escapes"><strong>Note:</strong> in source code, some key values, such as non-graphic characters, may be represented using the character escape syntax of the programming language in use.</span>
           </dd>
-          <!-- <dd>In the context of key values, a character value is a string representing a single Unicode character, such as a letter or symbol, as a UTF-16 character escape (e.g. <code class="value">U+0041</code> for the Latin Capital Letter A key, <code class="value charrep">A</code>.). <i class="issue" id="issue-character_value"><strong>Issue:</strong> this may not be the best way to represent a character value, see notes in key values.  Also, is “character value” the best term?</i></dd> -->
+          <!-- <dd>In the context of key values, a character value is a string representing a single Unicode character, such as a letter or symbol, as a UTF-16 character escape (e.g., <code class="value">U+0041</code> for the Latin Capital Letter A key, <code class="value charrep">A</code>.). <i class="issue" id="issue-character_value"><strong>Issue:</strong> this may not be the best way to represent a character value, see notes in key values.  Also, is “character value” the best term?</i></dd> -->
 
           <dt id="glossary-dead-key"><dfn>dead key</dfn></dt>
-          <dd>A dead key is a key or combination of key that produces no character by itself, but which in combination or sequence with another key produces a modified character, such as a character with diacritical marks (e.g. <code>&#xF6;</code>, <code>&#xE9;</code>, <code>&#xE2;</code>).</dd>
+          <dd>A dead key is a key or combination of keys which produces no character by itself, but which in combination or sequence with another key produces a modified character, such as a character with diacritical marks (e.g., <code>&#xF6;</code>, <code>&#xE9;</code>, <code>&#xE2;</code>).</dd>
 
           <dt id="glossary-default-action"><dfn>default action</dfn></dt>
           <dd>A <a class="def" href="#glossary-default-action">default action</a> is an optional supplementary behavior that an implementation must perform in combination with the dispatch of the event object.  Each event type definition, and each specification, defines the <a class="def" href="#glossary-default-action">default action</a> for that event type, if it has one.  An instance of an event may have more than one <a class="def" href="#glossary-default-action">default action</a> under some circumstances, such as when associated with an <a class="def" href="#glossary-activation-trigger">activation trigger</a>.  A <a class="def" href="#glossary-default-action">default action</a> may be cancelled through the invocation of the <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> method.  For more details, see <a href="#event-flow-default-cancel">Default actions and cancelable events</a>.</dd>
@@ -474,7 +474,7 @@
           <dd>Features marked as deprecated are included in the specification as reference to older implementations or specifications, but are optional and discouraged.  Only features which have existing or in-progress replacements shall be deprecated in this specification.  Implementations which do not already include support for the feature may implement deprecated features for reasons of backwards compatibility with existing content, but content authors creating content should not use deprecated features, unless there is no other way to solve a use case.  Other specifications which reference this specification should not use deprecated features, but should point instead to the replacements of which the feature is deprecated in favor.  Features marked as deprecated in this specification are expected to be dropped from future specifications.</dd>
 
           <dt id="glossary-dispatch"><dfn>dispatch</dfn></dt>
-          <dd>To create an event with attributes and methods appropriate to its type and context, and propagate it through the DOM tree in the specified manner. Interchangeable with the term “<a href="#glossary-fire">fire</a>", e.g. “fire a 'click' event” or “dispatch a 'load' event”.</dd>
+          <dd>To create an event with attributes and methods appropriate to its type and context, and propagate it through the DOM tree in the specified manner. Interchangeable with the term “<a href="#glossary-fire">fire</a>", e.g., “fire a 'click' event” or “dispatch a 'load' event”.</dd>
 
           <dt id="glossary-document"><dfn>document</dfn></dt>
           <dd>An object instantiating the <a href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#i-Document" title="Document Object Model Core"><code>Document</code> interface</a> [<cite><a class="normative" href="#references-DOMCore">DOM3 Core</a></cite>], representing the entire HTML or XML text document.  Conceptually, it is the root of the document tree, and provides the primary access to the document's data.</dd>
@@ -486,13 +486,13 @@
           <dd>The term “DOM Level 0” refers to a mix of HTML document functionalities, often not formally specified but traditionally supported as de facto standards, implemented originally by Netscape Navigator version 3.0 or Microsoft Internet Explorer version 3.0.  In many cases, attributes or methods have been included for reasons of backward compatibility with “DOM Level 0”.</dd>
 
           <dt id="glossary-empty-string"><dfn>empty string</dfn></dt>
-          <dd>The empty string is a value of type <code>DOMString</code> of length <code>0</code>, i.e. a string which contains no characters (neither printing nor control characters).</dd>
+          <dd>The empty string is a value of type <code>DOMString</code> of length <code>0</code>, i.e., a string which contains no characters (neither printing nor control characters).</dd>
 
           <dt id="glossary-event"><dfn>event</dfn></dt>
           <dd>An event is the representation of some occurrence (such as a mouse click on the presentation of an element, the removal of child node from an element, or any number of other possibilities) which is associated with its <a class="def" href="#glossary-proximal-event-target">proximal event target</a>.  Each event is an instantiation of one specific <a class="def" href="#glossary-event-type">event type</a>.</dd>
 
           <dt id="glossary-event-order"><dfn>event order</dfn></dt>
-          <dd>The sequence in which events from the same event source or process occur, using the same or related event interfaces.  For example, in an environment with a a mouse, a track pad, and a keyboard, each of those input devices would constitute a separate event source, and each would follow its own event order; a <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> event from the trackpad, followed by a <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> event from the mouse would not result in a <a class="eventtype" href="#event-type-click"><code>click</code></a> event.      
+          <dd>The sequence in which events from the same event source or process occur, using the same or related event interfaces.  For example, in an environment with a mouse, a track pad, and a keyboard, each of those input devices would constitute a separate event source, and each would follow its own event order; a <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> event from the trackpad followed by a <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> event from the mouse would not result in a <a class="eventtype" href="#event-type-click"><code>click</code></a> event.      
             Note that there may be interactions between different event orders; for example, a <a class="eventtype" href="#event-type-click"><code>click</code></a> event may be modified by a concurrent <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event (<code>shift+click</code>); however, the event orders of these different event sources would be distinct.
             The event order of some interfaces are device-independent; for example, a user may change focus using the <a href="#key-Tab"><code class="value keyname">'Tab'</code></a> key, or by clicking the new focused element with the mouse.  The event order in such cases depends on the state of the process, not on the state of the device that initiates the state change.
           </dd>
@@ -504,7 +504,7 @@
           <dd>The object to which an <a class="def" href="#glossary-event">event</a> is targeted.</dd>
 
           <dt id="glossary-event-type"><dfn>event type</dfn></dt>
-          <dd>The name of an <a class="def" href="#glossary-event">event</a> object which defines particular trigger conditions and other characteristics which distinguish it from other event types.  For example, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has different characteristics than the <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a> or <a class="eventtype" href="#event-type-load"><code>load</code></a> event types. The event type is exposed as the  the <a href="#events-event-type-type"><code class="interface-attribute">Event.type</code></a> attribute on the event object.  See <a href="#event-types">event types</a> for more details.  Also loosely referred to as 'event', such as the <em><a class="eventtype" href="#event-type-click"><code>click</code></a> event</em>.</dd>
+          <dd>An <em>event type</em> is an <a class="def" href="#glossary-event">event</a> object with a particular name and which defines particular trigger conditions, properties, and other characteristics which distinguish it from other event types.  For example, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has different characteristics than the <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a> or <a class="eventtype" href="#event-type-load"><code>load</code></a> event types. The event type is exposed as the <a href="#events-event-type-type"><code class="interface-attribute">Event.type</code></a> attribute on the event object.  See <a href="#event-types">event types</a> for more details.  Also loosely referred to as <em>'event'</em>, such as the <em><a class="eventtype" href="#event-type-click"><code>click</code></a> event</em>.</dd>
 
           <dt id="glossary-event-focus"><dfn>focus</dfn></dt>
           <dd>Focus is a special state of receptivity and concentration on an particular element or other <a class="def" href="#glossary-event-target">event target</a> within a document.  Each element has different behavior when focused, depending on its functionality, such as priming the element for activation (as for a button or hyperlink) or toggling state (as for a checkbox), receiving text input (as for a text form field), or copying selected text.  For more details, see <a href="#events-focusevent-doc-focus">Document Focus and Focus Context</a>.</dd>
@@ -519,18 +519,24 @@
           <dd>Any language which integrates the features of another language or API specification, while normatively referencing the origin specification rather than redefining those features, and extending those features only in ways defined by the origin specification.  An origin specification typically is only intended to be implemented in the context of one or more host languages, not as a standalone language.  For example, XHTML, HTML, and SVG are host languages for DOM 3 Events, and they integrate and extend the objects and models defined in this specification.</dd>
 
           <dt id="glossary-hysteresis"><dfn>hysteresis</dfn></dt>
-          <dd>A feature of human interface design to accept input values within a certain range of location or time, in order to improve the user experience.  For example, allowing for small deviation in the time it takes for a user to double-click a mouse button is temporal hysteresis, and no immediately closing a nested menu if the user mouses out from the parent window when transitioning to the child menu is locative hysteresis.</dd>
+          <dd>A feature of human interface design to accept input values within a certain range of location or time, in order to improve the user experience.  For example, allowing for small deviation in the time it takes for a user to double-click a mouse button is temporal hysteresis, and not immediately closing a nested menu if the user mouses out from the parent window when transitioning to the child menu is locative hysteresis.</dd>
 
           <dt id="glossary-ime"><dfn>IME</dfn></dt>
           <dt id="glossary-input-method-editor"><dfn>input method editor</dfn></dt>
-          <dd>An <em>input method editor</em> (IME), also known as a <em>front end processor</em>, is an application that performs the conversion between keystrokes and ideographs or other characters, usually by user-guided dictionary lookup, often used in East Asian languages (e.g. Chinese, Japanese, Korean).  An <a class="def" href="#glossary-ime">IME</a> may also be used for dictionary-based word completion, such as on mobile devices.  See <a href="#keys-IME">Input Method Editors</a> for treatment of IMEs in this specification.  See also <a class="def" href="#glossary-text-composition-system">text composition system</a>.</dd>
+          <dd>An <em>input method editor</em> (IME), also known as a <em>front end processor</em>, is an application that performs the conversion between keystrokes and ideographs or other characters, usually by user-guided dictionary lookup, often used in East Asian languages (e.g., Chinese, Japanese, Korean).  An <a class="def" href="#glossary-ime">IME</a> may also be used for dictionary-based word completion, such as on mobile devices.  See <a href="#keys-IME">Input Method Editors</a> for treatment of IMEs in this specification.  See also <a class="def" href="#glossary-text-composition-system">text composition system</a>.</dd>
 
           <dt id="glossary-key-value"><dfn>key value</dfn></dt>
-          <dd>A key value is <a class="def" href="#glossary-character-value">character value</a> or multi-character string (such as <code class="value">'Enter'</code>, <code class="value">'Tab'</code>, or <code class="value">'MediaNextTrack'</code>) associated with a key in a particular state.  Control keys, function keys, modifier keys, <a class="def" href="#glossary-dead-key">dead keys</a>, and others keys always have a key value, whether or not it has a <a class="def" href="#glossary-character-value">character value</a>.</dd>
+          <dd>A key value is <a class="def" href="#glossary-character-value">character value</a> or multi-character string (such as <code class="value">'Enter'</code>, <code class="value">'Tab'</code>, or <code class="value">'MediaNextTrack'</code>) associated with a key in a particular state.  Every key has a key value, whether or not it has a <a class="def" href="#glossary-character-value">character value</a>; this includes control keys, function keys, <a class="def" href="#glossary-modifier-key">modifier keys</a>, <a class="def" href="#glossary-dead-key">dead keys</a>, and any other key.  The key value of any given key at any given time depends upon the <a class="def" href="#glossary-key-mapping">key mapping</a>.</dd>
+
+          <dt id="glossary-key-mapping"><dfn>key mapping</dfn></dt>
+          <dd>Key mapping is the process of assigning a key value to a particular key, and is the result of a combination of several factors, including the operating system and the keyboard layout (e.g., <a class="def" href="#glossary-qwerty">QWERTY</a>, Dvorak, Spanish, InScript, Chinese, etc.), and after taking into account all <a class="def" href="#glossary-modifier-key">modifier key</a> (<a href="#key-Shift"><code class="value keyname">'Shift'</code></a>, <a href="#key-Alt"><code class="value keyname">'Alt'</code></a>, etc.) and <a class="def" href="#glossary-dead-key">dead key</a> states.</dd>
 
           <dt id="glossary-localname"><dfn>local name</dfn></dt>
           <dd>See local name in [<cite><a class="informative" href="#references-Namespaces10">XML Namespaces 1.0</a></cite>].</dd>
 
+          <dt id="glossary-modifier-key"><dfn>modifier key</dfn></dt>
+          <dd>A modifier key changes the normal behavior of a key, such as to produce a character of a different case (as with the <a href="#key-Shift"><code class="value keyname">'Shift'</code></a> key), or to alter what functionality the key triggers (as with the <a href="#key-Fn"><code class="value keyname">'Fn'</code></a> or <a href="#key-Alt"><code class="value keyname">'Alt'</code></a> keys).  Refer to the <a href="#events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState()</code></a> method for a list of modifier keys defined in this specification.  See also <a href="#keys-Modifiers">Modifier keys</a>.</dd>
+
           <dt id="glossary-namespaceURI"><dfn>namespace URI</dfn></dt>
           <dd>A <em>namespace URI</em> is a URI that identifies an XML namespace. This is called the namespace name in [<cite><a class="informative" href="#references-Namespaces10">XML Namespaces 1.0</a></cite>]. See also sections 1.3.2 "<a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#baseURIs-Considerations"><em>DOM URIs</em></a>" and 1.3.3 "<a class="normative" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations"><em>XML Namespaces</em></a>" regarding URIs and namespace URIs handling and comparison in the DOM APIs.</dd>
 
@@ -544,7 +550,7 @@
           <dd>The proximal event target is the object representing the <a class="def" href="#glossary-event-target">event target</a> to which an <a class="def" href="#glossary-event">event</a> is targeted using the DOM event flow.  The proximal event target is the value of the <a href="#events-event-type-target">Event.target</a> attribute.</dd>
 
           <dt id="glossary-qwerty"><dfn>QWERTY</dfn></dt>
-          <dd>QWERTY (pronounced "&#x2C8;kw&#x25C;rti") is a common keyboard layout, so named because the first five character keys on the top row of letter keys are Q, W, E, R, T, and Y.  There are many other popular keyboard layouts (including the Dvorak layout), most designed for localization or ergonomics.</dd>
+          <dd>QWERTY (pronounced "&#x2C8;kw&#x25C;rti") is a common keyboard layout, so named because the first five character keys on the top row of letter keys are Q, W, E, R, T, and Y.  There are many other popular keyboard layouts (including the Dvorak and Colemak layouts), most designed for localization or ergonomics.</dd>
 
           <dt id="glossary-roll"><dfn>roll</dfn></dt>
           <dd>A unit of <a class="def" href="#events-WheelEvent-rotation">rotation</a> for an input device using the <a href="#events-wheelevents">WheelEvent</a> interface. On some devices this may be a finite physical step. On devices with smooth <a class="def" href="#events-WheelEvent-rotation">rotation</a>, a <a class="def" href="#glossary-roll">roll</a> becomes the smallest reported amount of <a class="def" href="#events-WheelEvent-rotation">rotation</a>.</dd>
@@ -565,7 +571,7 @@
           <dd>The <a class="def" href="#glossary-topmost-event-target">topmost event target</a> shall be the element highest in the rendering order which is capable of being an <a class="def" href="#glossary-event-target">event target</a>.  In this case, 'top' shall refer not to the position on the screen, but the logical order of the element in relation to other elements in drawing or stacking order on the z-axis (where the x-axis is the screen width and the y-axis is the screen height).  In HTML and CSS, or in SVG, this is controlled by the document order, as modified in HTML and CSS by the <code>'z-index'</code> property.  In some cases, such as when using some values of the SVG <code>'pointer-events'</code> property, the topmost element may not receive pointer events, in which case, the next element in z-index order which can receive pointer-events is the <a class="def" href="#glossary-topmost-event-target">topmost event target</a>.  Note that visibility of the element does not necessarily affect its ability to be the <a class="def" href="#glossary-topmost-event-target">topmost event target</a>, since an element which is hidden by use of the CSS <code>'visibility'</code> property can still receive pointer events (though not one with a <code>'display'</code> property of <code>none</code>), and the <a class="def" href="#glossary-topmost-event-target">topmost event target</a> may be completely obscured by another element which cannot receive pointer events.  Unless otherwise noted, there is only one <a class="def" href="#glossary-topmost-event-target">topmost event target</a> in any event.  For specific details regarding hit testing and stacking order, refer to the <a class="def" href="#glossary-host-language">host language</a>.</dd>
 
           <dt id="glossary-tree"><dfn>tree</dfn></dt>
-          <dd>A data structure that represents a document as a hierarchical set of nodes with child-parent-sibling relationships, i.e. each node having one or more possible ancestors (nodes higher in the hierarchy in a direct lineage), one or more possible descendants (nodes lower in the hierarchy in a direct lineage), and one or more possible peers (nodes of the same level in the hierarchy, with the same immediate ancestor).</dd>
+          <dd>A data structure that represents a document as a hierarchical set of nodes with child-parent-sibling relationships, i.e., each node having one or more possible ancestors (nodes higher in the hierarchy in a direct lineage), one or more possible descendants (nodes lower in the hierarchy in a direct lineage), and one or more possible peers (nodes of the same level in the hierarchy, with the same immediate ancestor).</dd>
 
           <dt id="glossary-Unicode-character-categories"><dfn>Unicode character categories</dfn></dt>
           <dd>The Unicode character categories, a subset of the complete Unicode general categories, comprise the categories <abbr title="Letter, Lowercase">Ll</abbr>, <abbr title="Letter, Modifier">Lm</abbr>, <abbr title="Letter, Other">Lo</abbr>, <abbr title="Letter, Titlecase">Lt</abbr>, <abbr title="Letter, Uppercase">Lu</abbr>, <abbr title="Number, Decimal Digit">Nd</abbr>, <abbr title="Number, Letter">Nl</abbr>, <abbr title="Number, Other">No</abbr>, <abbr title="Punctuation, Connector">Pc</abbr>, <abbr title="Punctuation, Dash">Pd</abbr>, <abbr title="Punctuation, Close">Pe</abbr>, <abbr title="Punctuation, Final quote">Pf</abbr>, <abbr title="Punctuation, Initial quote">Pi</abbr>, <abbr title="Punctuation, Other">Po</abbr>, <abbr title="Punctuation, Open">Ps</abbr>, <abbr title="Symbol, Currency">Sc</abbr>, <abbr title="Symbol, Modifier">Sk</abbr>, <abbr title="Symbol, Math">Sm</abbr>, and <abbr title="Symbol, Other">So</abbr>.</dd>
@@ -638,7 +644,7 @@
       <div>
         <h3><a id="event-flow-default-cancel" href="#event-flow-default-cancel">3.2 Default actions and cancelable events</a></h3>
 
-        <p>Event objects may have one or more <a class="def" href="#glossary-default-action">default actions</a> associated with them.  These are actions the implementation must perform in combination with the dispatch of the event object.  An example is the [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] form element. When the user submits the form (e.g. by pressing on a submit button), the HTML event <code class="eventtype">submit</code> should be dispatched to the element and the <a class="def" href="#glossary-default-action">default action</a> for this <a class="def" href="#glossary-event-type">event type</a> shall be generally to send a request to a Web server with the parameters from the form.</p>
+        <p>Event objects may have one or more <a class="def" href="#glossary-default-action">default actions</a> associated with them.  These are actions the implementation must perform in combination with the dispatch of the event object.  An example is the [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] form element. When the user submits the form (e.g., by pressing on a submit button), the HTML event <code class="eventtype">submit</code> should be dispatched to the element and the <a class="def" href="#glossary-default-action">default action</a> for this <a class="def" href="#glossary-event-type">event type</a> shall be generally to send a request to a Web server with the parameters from the form.</p>
         <p><a class="def" href="#glossary-default-action">Default actions</a> should be performed after the event dispatch has been completed, but in exceptional cases also immediately before the event is dispatched.</p>
         <span class="issue"><strong>Issue:</strong> insert example here: &lt;input type="checkbox"&gt;'s .checked handling comes to mind.
         .checked is changed just before 'click' event is dispatched, and if
@@ -692,10 +698,10 @@
         
         <h4><a id="click-synthesis" href="#click-synthesis">3.5.1 Activation event synthesis</a></h4>
         
-        <p>If the instance of the <a class="def" href="#glossary-activation-trigger">activation trigger</a> is not an event of <a class="def" href="#glossary-event-type">event type</a> <a class="eventtype" href="#event-type-click"><code>click</code></a> (that is, when it does not result from a user activating a button or link using a mouse or equivalent pointing device), the implementation must synthesize and dispatch an event of <a class="def" href="#glossary-event-type">event type</a> <a class="eventtype" href="#event-type-click"><code>click</code></a> as one of the <a class="def" href="#glossary-default-action">default actions</a> of that <a class="def" href="#glossary-activation-trigger">activation trigger</a>; the value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> must be set to the <a class="def" href="#glossary-proximal-event-target">proximal event target</a> (normally, the currently focused element), and the event must simulate a <em>left click</em> (i.e. the <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a> attribute value must be <code>0</code>, and the <a href="#events-MouseEvent-buttons"><code>MouseEvent.buttons</code></a> attribute value must be <code>1</code>).  Other context information of such a simulated <a class="eventtype" href="#event-type-click"><code>click</code></a> event is implementation dependent, but for historical purposes, the interface for the <a class="eventtype" href="#event-type-click"><code>click</code></a> event must be the <a href="#events-MouseEvent"><code>MouseEvent interface</code></a>, regardless of the actual device used to activate the element.  Preventing the <a class="def" href="#glossary-default-action">default action</a> of the <a class="def" href="#glossary-activation-trigger">activation trigger</a>, such as with the <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a>, must stop the initiation of the <a class="def" href="#glossary-activation-behavior">activation behavior</a>.</p>
+        <p>If the instance of the <a class="def" href="#glossary-activation-trigger">activation trigger</a> is not an event of <a class="def" href="#glossary-event-type">event type</a> <a class="eventtype" href="#event-type-click"><code>click</code></a> (that is, when it does not result from a user activating a button or link using a mouse or equivalent pointing device), the implementation must synthesize and dispatch an event of <a class="def" href="#glossary-event-type">event type</a> <a class="eventtype" href="#event-type-click"><code>click</code></a> as one of the <a class="def" href="#glossary-default-action">default actions</a> of that <a class="def" href="#glossary-activation-trigger">activation trigger</a>; the value of the <code class="attribute-name"><a href="#events-event-type-target">Event.target</a></code> must be set to the <a class="def" href="#glossary-proximal-event-target">proximal event target</a> (normally, the currently focused element), and the event must simulate a <em>left click</em> (i.e., the <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a> attribute value must be <code>0</code>, and the <a href="#events-MouseEvent-buttons"><code>MouseEvent.buttons</code></a> attribute value must be <code>1</code>).  Other context information of such a simulated <a class="eventtype" href="#event-type-click"><code>click</code></a> event is implementation dependent, but for historical purposes, the interface for the <a class="eventtype" href="#event-type-click"><code>click</code></a> event must be the <a href="#events-MouseEvent"><code>MouseEvent interface</code></a>, regardless of the actual device used to activate the element.  Preventing the <a class="def" href="#glossary-default-action">default action</a> of the <a class="def" href="#glossary-activation-trigger">activation trigger</a>, such as with the <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a>, must stop the initiation of the <a class="def" href="#glossary-activation-behavior">activation behavior</a>.</p>
         <p class="example" id="example-activation-click"><strong>Example:</strong>  When a user activates a hyperlink using a keyboard, such as by focusing the hyperlink element and pressing the <a href="#key-Enter"><code class="value keyname">'Enter'</code></a> or <a href="#key-Spacebar"><code class="value keyname">'Space'</code></a> key, a <a class="eventtype" href="#event-type-click"><code>click</code></a> event would be dispatched as the <a class="def" href="#glossary-default-action">default action</a> of the respective <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event.</p>
-        <p>Implementations must dispatch the synthesized <a class="eventtype" href="#event-type-click"><code>click</code></a> event as described above even if they do not normally dispatch such an event (e.g. when activation is requested by a voice command, since this specification does not address <a class="def" href="#glossary-event-type">event types</a> for voice input).</p>
-        <p class="note" id="application-dependent-activation"><strong>Note:</strong> The activation of an event target is device dependent, but is also application dependent, e.g. a link in a document can be activated using a mouse click or a mouse double click.</p>
+        <p>Implementations must dispatch the synthesized <a class="eventtype" href="#event-type-click"><code>click</code></a> event as described above even if they do not normally dispatch such an event (e.g., when activation is requested by a voice command, since this specification does not address <a class="def" href="#glossary-event-type">event types</a> for voice input).</p>
+        <p class="note" id="application-dependent-activation"><strong>Note:</strong> The activation of an event target is device dependent, but is also application dependent, e.g., a link in a document can be activated using a mouse click or a mouse double click.</p>
         <p>Implementations which support the <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> <a class="def" href="#glossary-event-type">event type</a> should also dispatch a <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event as a <a class="def" href="#glossary-default-action">default action</a> of a <a class="eventtype" href="#event-type-click"><code>click</code></a> event which is associated with an <a class="def" href="#glossary-activation-trigger">activation trigger</a>.  However, such implementations should only initiate the associated <a class="def" href="#glossary-activation-behavior">activation behavior</a> once for any given occurrence of an <a class="def" href="#glossary-activation-trigger">activation trigger</a>.</p>
         <p class="example" id="example-activation-DOMActivate"><strong>Example:</strong> The <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> <a class="def" href="#glossary-event-type">event type</a> is required to be supported for XForms [<cite><a class="informative" href="#ref-xforms">XFORMS</a></cite>], which is intended for implementation within a <a class="def" href="#glossary-host-language">host language</a>.  In a scenario where a plugin or script-based implementation of XForms is intended for installation in a native implementation of this specification which does not support the <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> <a class="def" href="#glossary-event-type">event type</a>, the XForms <a class="def" href="#glossary-user-agent">user agent</a> must synthesize and dispatch its own <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> events based on the appropriate <a class="def" href="#glossary-activation-trigger">activation triggers</a>.  Thus, when a <a class="eventtype" href="#event-type-click"><code>click</code></a> event is dispatched by the DOM Level 3 Events <a class="def" href="#glossary-user-agent">user agent</a>, the XForms <a class="def" href="#glossary-user-agent">user agent</a> must determine whether to synthesize a <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event with the same relevant properties as a <a class="def" href="#glossary-default-action">default action</a> of that <a class="eventtype" href="#event-type-click"><code>click</code></a> event; appropriate cues may be whether the <a class="eventtype" href="#event-type-click"><code>click</code></a> event is <a href="#trusted-events">trusted</a>, or whether its <a class="def" href="#glossary-proximal-event-target">proximal event target</a> has a <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event listener registered.</p>
         <p class="note" id="authors-activation"><strong>Note:</strong>  Content authors should not rely upon the interoperable support of <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> in many <a class="def" href="#glossary-user-agent">user agents</a>.  Thus, content authors may use the <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> <a class="def" href="#glossary-event-type">event type</a> whenever they wish to make or react to an <a class="def" href="#glossary-activation-trigger">activation trigger</a>, but should use the <a class="eventtype" href="#event-type-click"><code>click</code></a> <a class="def" href="#glossary-event-type">event type</a> for more accessible behavior instead, due to wider implementation.</p>
@@ -814,7 +820,7 @@
                   <dd>
                     <dl>
                       <dt><a id="events-AT_TARGET"><code class="constant-name">AT_TARGET</code></a></dt>
-                      <dd>The current event is in the <a class="def" href="#glossary-target-phase">target phase</a>, i.e. it is being evaluated at the <a class="def" href="#glossary-proximal-event-target">proximal event target</a>.</dd>
+                      <dd>The current event is in the <a class="def" href="#glossary-target-phase">target phase</a>, i.e., it is being evaluated at the <a class="def" href="#glossary-proximal-event-target">proximal event target</a>.</dd>
 
                       <dt><a id="events-BUBBLING_PHASE"><code class="constant-name">BUBBLING_PHASE</code></a></dt>
                       <dd>The current event phase is the <a class="def" href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
@@ -1032,10 +1038,10 @@
             
             <p class="note" id="EventTarget-trusted"><strong>Note:</strong>  Though an event listener can be registered for any <a class="def" href="#glossary-event-target">event target</a> node, the user agent only dispatches UA-generated (trusted) events on node types that are defined as proximal event target types for that specific event type (see the <a href="#event-types-list">List of DOM3 Event Types</a>); for example, a <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a> event type registered on a text node will never be fired by the user agent, though a content author could dispatch an event of that type on the text node via script.</p>
             
-            <p>When used with the DOM event flow, this interface must be implemented by all <a class="def" href="#glossary-proximal-event-target">proximal event targets</a> and target ancestors, i.e. all DOM <code>Nodes</code> of the tree support this interface when the implementation conforms to DOM Level 3 Events and, therefore, this interface can be obtained by using binding-specific casting methods on an instance of the <code>Node</code> interface.</p>
+            <p>When used with the DOM event flow, this interface must be implemented by all <a class="def" href="#glossary-proximal-event-target">proximal event targets</a> and target ancestors, i.e., all DOM <code>Nodes</code> of the tree support this interface when the implementation conforms to DOM Level 3 Events and, therefore, this interface can be obtained by using binding-specific casting methods on an instance of the <code>Node</code> interface.</p>
             <p>Invoking <code>addEventListener</code> repeatedly on the same <code>EventTarget</code> with the same values for the parameters <code>type</code>, <code>listener</code>, and <code>useCapture</code> has no effect. Doing so does not cause the <a href="#events-EventListener"><code>EventListener</code></a> to be called more than once and does not cause a change in the triggering order.</p>
 
-            <p class="note" id="EventTarget-onfoo"><strong>Note:</strong>  In addition to the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method, some <a class="def" href="#glossary-host-language">host languages</a> may allow a content author to register event listeners by the use of attributes, e.g. <em><code>onclick="handleClick()"</code></em>.  Because the details of this are often language-specific, this type of event listener registration is not defined in this specification, but in general, any event type may be used as an attribute in this way by adding the prefix <em><code>on-</code></em> to the event type name, and events so dispatched should behave consistently with the event registration and propagation defined in this specification, with the same interfaces, properties, and methods.</p>
+            <p class="note" id="EventTarget-onfoo"><strong>Note:</strong>  In addition to the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method, some <a class="def" href="#glossary-host-language">host languages</a> may allow a content author to register event listeners by the use of attributes, e.g., <em><code>onclick="handleClick()"</code></em>.  Because the details of this are often language-specific, this type of event listener registration is not defined in this specification, but in general, any event type may be used as an attribute in this way by adding the prefix <em><code>on-</code></em> to the event type name, and events so dispatched should behave consistently with the event registration and propagation defined in this specification, with the same interfaces, properties, and methods.</p>
             <dl>
               <dt>
                 <br />
@@ -1081,7 +1087,7 @@
                             <dd><p>The <code>listener</code> parameter takes an object implemented by the user which implements the <a href="#events-EventListener"><code>EventListener</code></a> interface and contains the method to be called when the event occurs.</p></dd>
                             
                             <dt><a id="addEventListener_useCapture"><code class="parameter-name">useCapture</code></a> of type <code>boolean</code></dt>
-                            <dd><p>If true, <code>useCapture</code> indicates that the user wishes to add the event listener for the <a class="def" href="#glossary-capture-phase">capture phase</a> and <a class="def" href="#glossary-target-phase">target</a> only, i.e. this event listener will not be triggered during the <a class="def" href="#glossary-bubbling-phase">bubbling</a> phase.  If <code>false</code>, the event listener must only be triggered during the <a class="def" href="#glossary-target-phase">target</a> and <a class="def" href="#glossary-bubbling-phase">bubbling</a> phases.</p></dd>
+                            <dd><p>If true, <code>useCapture</code> indicates that the user wishes to add the event listener for the <a class="def" href="#glossary-capture-phase">capture phase</a> and <a class="def" href="#glossary-target-phase">target</a> only, i.e., this event listener will not be triggered during the <a class="def" href="#glossary-bubbling-phase">bubbling</a> phase.  If <code>false</code>, the event listener must only be triggered during the <a class="def" href="#glossary-target-phase">target</a> and <a class="def" href="#glossary-bubbling-phase">bubbling</a> phases.</p></dd>
                           </dl>
                         </div>
                       </div>
@@ -1293,8 +1299,8 @@
                           <dl>
                             <dt><code class="parameter-name">eventInterface</code> of type <code>DOMString</code></dt>
                             <dd>
-                              <p>The <code>eventInterface</code> parameter specifies the name of the DOM Events interface to be supported by the created event object, e.g. <code>"Event"</code>, <code>"MouseEvent"</code>, <code>"MutationEvent"</code>, and so on. If the <a href="#events-Event"><code>Event</code></a> is to be dispatched via the <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method, the appropriate event initialization method must be called after creation in order to initialize the <a class="noxref" href="#events-Event"><code>Event</code></a>'s values.</p>
-                              <p class="example" id="example-createEvent"><strong>Example:</strong>  A content author wishing to synthesize some kind of <a href="#events-UIEvent"><code>UIEvent</code></a> would invoke <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method could then be called on the newly created <a class="noxref" href="#events-UIEvent"><code>UIEvent</code></a> object to set the specific type of user interface event to be dispatched, <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> for example, and set its context information, e.g. <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p>
+                              <p>The <code>eventInterface</code> parameter specifies the name of the DOM Events interface to be supported by the created event object, e.g., <code>"Event"</code>, <code>"MouseEvent"</code>, <code>"MutationEvent"</code>, and so on. If the <a href="#events-Event"><code>Event</code></a> is to be dispatched via the <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method, the appropriate event initialization method must be called after creation in order to initialize the <a class="noxref" href="#events-Event"><code>Event</code></a>'s values.</p>
+                              <p class="example" id="example-createEvent"><strong>Example:</strong>  A content author wishing to synthesize some kind of <a href="#events-UIEvent"><code>UIEvent</code></a> would invoke <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method could then be called on the newly created <a class="noxref" href="#events-UIEvent"><code>UIEvent</code></a> object to set the specific type of user interface event to be dispatched, <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> for example, and set its context information, e.g., <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p>
                               <p>For backward compatibility reason, <code>"UIEvents"</code>, <code>"MouseEvents"</code>, <code>"MutationEvents"</code>, and <code>"HTMLEvents"</code> feature names are valid values for the parameter <code>eventInterface</code> and represent respectively the interfaces <a href="#events-UIEvent"><code>UIEvent</code></a>, <a href="#events-MouseEvent"><code>MouseEvent</code></a>, <a href="#events-MutationEvent"><code>MutationEvent</code></a>, and <a href="#interface-Event"><code>Event</code></a>, and the characters <code>'a'..'z'</code> are considered equivalent to the characters <code>'A'..'Z'</code>.</p>
                               <p>If the parameter does not match an event interface name supported by the implementation, the implementation must raise a <code>NOT_SUPPORTED_ERR</code>  <code>DOMException</code></p><p class="warning" id="warning-createEvent-untrusted"><strong>Warning!</strong>  For security reasons, events generated using <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("Event")</code></a> must have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute value of <code>false</code>.  See <a href="#trusted-events">trusted events</a> for more details.</p>
                             </dd>
@@ -1347,7 +1353,7 @@
       <div>
         <h4><a id="event-types-list" href="#event-types-list">5.1.1 List of DOM3 Event Types</a></h4>
 
-        <p>Depending on the level of DOM support, or the devices used for display (e.g. screen) or interaction (e.g., mouse, keyboard, touch screen, or voice), these event types can be generated by the implementation. When used with an [<cite><a class="informative" href="#references-XML">XML 1.0</a></cite>] or [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] application, the specifications of those languages may restrict the semantics and scope (in particular the possible <a class="def" href="#glossary-proximal-event-target">proximal event targets</a>) associated with an event type. Refer to the specification defining the language used in order to find those restrictions or to find event types that are not defined in this document.</p>
+        <p>Depending on the level of DOM support, or the devices used for display (e.g., screen) or interaction (e.g., mouse, keyboard, touch screen, or voice), these event types can be generated by the implementation. When used with an [<cite><a class="informative" href="#references-XML">XML 1.0</a></cite>] or [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] application, the specifications of those languages may restrict the semantics and scope (in particular the possible <a class="def" href="#glossary-proximal-event-target">proximal event targets</a>) associated with an event type. Refer to the specification defining the language used in order to find those restrictions or to find event types that are not defined in this document.</p>
         <p>The following table provides a non-normative summary of the event types defined in this specification.  All events must accomplish the capture and target phases, but not all of them must accomplish the bubbling phase (see also <a href="#event-flow">Event dispatch and DOM event flow</a>). Some events are not <a href="#events-dt-cancelable-event">cancelable</a> (see <a href="#event-flow-default-cancel">Default actions and cancelable events</a>). Some events must only be dispatched to a specific set of possible targets in the DOM event flow, specified using node types. Contextual information related to the event type must be accessible using DOM interfaces.</p>
         <table id="table-event-summary" summary="This table contains the complete list of event types defined by DOM Level 3 Events. The first column contains the local name of the event type. The second column indicates if the event accomplish the bubbling phase or not (all events accomplish the capture and target phases). The third column indicates if the default action associated with the event can be canceled. The fourth column indicates the nodes that can be target of the event. the fifth (and last) column indicates the DOM interface implemented by the event object.">
 <!-- border="1" cellpadding="2" cellspacing="0"  -->
@@ -1622,7 +1628,7 @@
             <td><code>Element</code></td>
             <td><a href="#events-KeyboardEvent"><code>KeyboardEvent</code></a></td>
             <td>Yes</td>
-            <td>Varies: <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td>
+            <td>Varies: <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td>
           </tr>
           <tr>
             <td><a class="eventtype" href="#event-type-keypress">
@@ -1633,7 +1639,7 @@
             <td><code>Element</code></td>
             <td><a href="#events-KeyboardEvent"><code>KeyboardEvent</code></a></td>
             <td>Yes</td>
-            <td>Varies: <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td>
+            <td>Varies: <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td>
           </tr>
           <tr>
             <td><a class="eventtype" href="#event-type-keyup">
@@ -1768,8 +1774,8 @@
             <td>none</td>
           </tr>
           <tr>
-            <td><a class="eventtype" href="#event-type-textInput">
-              <code>textInput</code>
+            <td><a class="eventtype" href="#event-type-textinput">
+              <code>textinput</code>
             </a></td>
             <td>Sync</td>
             <td>Yes</td>
@@ -1929,7 +1935,7 @@
               <p class="note" id="DOMActivate-click"><strong>Note:</strong>   While <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> and <a class="eventtype" href="#event-type-click"><code>click</code></a> are not completely equivalent, implemented behavior for the <a class="eventtype" href="#event-type-click"><code>click</code></a> <a class="def" href="#glossary-event-type">event type</a> has developed to encompass the most critical accessibility aspects for which the <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> <a class="def" href="#glossary-event-type">event type</a> was designed, and is more widely implemented.  Content authors are encouraged to use the <a class="eventtype" href="#event-type-click"><code>click</code></a> <a class="def" href="#glossary-event-type">event type</a> rather than the related <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> or <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> <a class="def" href="#glossary-event-type">event type</a> to ensure maximum accessibility.</p>
               
               
-              The activate event occurs when an element is activated, for instance, thru a mouse click or a keypress. A numerical argument is provided to give an indication of the type of activation that occurs: 1 for a simple activation (e.g. a simple click or Enter), 2 for hyperactivation (for instance a double click or Shift Enter).
+              The activate event occurs when an element is activated, for instance, thru a mouse click or a keypress. A numerical argument is provided to give an indication of the type of activation that occurs: 1 for a simple activation (e.g., a simple click or Enter), 2 for hyperactivation (for instance a double click or Shift Enter).
               
             </dd>
           </dl>
@@ -2156,12 +2162,12 @@
               <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a document view has been resized. This event type is dispatched after all effects for that occurrence of resizing of that particular <a class="def" href="#glossary-event-target">event target</a> have been executed by the <a class="def" href="#glossary-user-agent">user agent</a>.</p>
               <p>In the case of a user-initiated resizing, i.e when a user expands or shrinks a browser window by dragging the edge of the frame, the frame undergoes several consecutive size changes, but these intermediate stages must not be dispatched as <a class="eventtype" href="#event-type-resize"><code>resize</code></a> events.</p>
               <p class="note" id="note-resize-multiple"><strong>Note:</strong>  Some <a class="def" href="#glossary-user-agent">user agents</a> may have an optional mode in which the document is reflowed dynamically while the window is resized; in this mode, <a class="eventtype" href="#event-type-resize"><code>resize</code></a> events may be dispatched continuously while the resizing operation is in progress.</p>
-              <p>Once the user has finished resizing, in a system- and  implementation-determined manner such as the release of the pointer button or after a sufficiently long pause, or once any instant resizing (e.g. from a window maximize button or a script effect) has been executed, the <a class="def" href="#glossary-user-agent">user agent</a> must perform any relevant layout recalculations or other actions caused by the resizing, and must subsequently dispatch a single <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event that reflects the final state of the <a class="def" href="#glossary-event-target">event target</a>.  In the case where multiple <a class="eventtype" href="#event-type-resize"><code>resize</code></a> events have been triggered as the result of the same action, even for different <a class="def" href="#glossary-event-target">event target</a>, the <a class="def" href="#glossary-user-agent">user agent</a> must dispatch each <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event only after the previous <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event has completed its <a class="def" href="#glossary-propagation-path">propagation path</a> or been canceled.</p>
+              <p>Once the user has finished resizing, in a system- and  implementation-determined manner such as the release of the pointer button or after a sufficiently long pause, or once any instant resizing (e.g., from a window maximize button or a script effect) has been executed, the <a class="def" href="#glossary-user-agent">user agent</a> must perform any relevant layout recalculations or other actions caused by the resizing, and must subsequently dispatch a single <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event that reflects the final state of the <a class="def" href="#glossary-event-target">event target</a>.  In the case where multiple <a class="eventtype" href="#event-type-resize"><code>resize</code></a> events have been triggered as the result of the same action, even for different <a class="def" href="#glossary-event-target">event target</a>, the <a class="def" href="#glossary-user-agent">user agent</a> must dispatch each <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event only after the previous <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event has completed its <a class="def" href="#glossary-propagation-path">propagation path</a> or been canceled.</p>
               <p class="issue" id="issue-resize-queue"><strong>Issue:</strong>  There is no current interoperability here.  See <a href="http://www.w3.org/2008/webapps/track/issues/113" title="ISSUE-113 - Web Applications Working Group Tracker">ISSUE-113</a>.</p>
               <p>A <a class="def" href="#glossary-user-agent">user agent</a> should dispatch the <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event before the document is re-rendered, to provide the content author an opportunity to adjust the content to suit the new size.</p>
               <p class="issue" id="issue-resize-repaint"><strong>Issue:</strong> Firing the event between reflow and repaint may be difficult in some UAs (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=227495#c30">Mozilla Bug #227495</a>), but it seems the behavior most content authors would want.  Should we keep this, or change it to fire after repaint?</p>
 <!-- <p class="example" id="example-resize"><strong>Example:</strong> </p> -->
-              <p>The <a class="def" href="#glossary-defaultView"><code>defaultView</code></a> object should always be resizable.  A <a class="def" href="#glossary-host-language">host language</a> may define certain elements to be resizable, and under what conditions (e.g. specific elements like <code class="element">iframe</code>, or elements with particular characteristics like width and height); however, this specification does not define the behavior for elements.</p>
+              <p>The <a class="def" href="#glossary-defaultView"><code>defaultView</code></a> object should always be resizable.  A <a class="def" href="#glossary-host-language">host language</a> may define certain elements to be resizable, and under what conditions (e.g., specific elements like <code class="element">iframe</code>, or elements with particular characteristics like width and height); however, this specification does not define the behavior for elements.</p>
               <p class="note" id="note-resize-element"><strong>Note:</strong>  In some implementations, certain elements may be resizable, such as the <code class="element">object</code> or <code class="element">iframe</code> elements.</p>
 
               <p class="note" id="note-resize-zoom"><strong>Note:</strong>  The <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event is distinct from the SVG <code class="eventtype">zoom</code> event types, though both may occur at the same time, or as the consequence of the same user action.  In particular, browser “font zooming” or “page zooming” should not necessarily trigger a <a class="eventtype" href="#event-type-resize"><code>resize</code></a> event.</p>
@@ -2248,7 +2254,7 @@
                   
                   <p class="issue" id="issue-relatedTarget-null-document"><strong>Issue:</strong> Alternate approach:  
                     <br/>
-                    For security reasons with nested browsing contexts, when tabbing into or out of a nested context, the relevant EventTarget should be the element containing browsing context (e.g. the <code>iframe</code>), even if that element cannot normally receive focus.
+                    For security reasons with nested browsing contexts, when tabbing into or out of a nested context, the relevant EventTarget should be the element containing browsing context (e.g., the <code>iframe</code>), even if that element cannot normally receive focus.
                     <br/>
                     See [<a href="http://lists.w3.org/Archives/Public/www-dom/2010JanMar/0010.html">Comments from Olli Pettay</a>]
                     </p>
@@ -2324,8 +2330,8 @@
       <h4 class="needswork">
         <a id="events-focusevent-doc-focus" href="#events-focusevent-doc-focus">5.2.2.2 Document Focus and Focus Context</a>
       </h4>
-      <p>This event module includes event types for notification of changes in document <a class="def" href="#glossary-event-focus">focus</a>.  Depending on the environment, document focus may be distinct from <a class="def" href="#glossary-user-agent">user agent</a> focus and operating system focus; this is referred to as focus context.  For example, in a typical desktop browser environment, the operating system context focus may be on one of many different applications, one of which is the browser; when the browser has focus, the user may shift  the application context focus (such as with the tab key) among different browser user interface fields (e.g. the Web site location bar, a search field, etc.) before or after achieving document focus; once the document itself has focus, sequential shifting of focus will step through the focusable elements in the document.  The event types defined in this specification deal exclusively with document focus, and the <a class="def" href="#glossary-event-target">event target</a> identified in the event details must only be part of the document or documents in the window, never a part of the browser or operating system, even when switching from one focus context to another.</p>
-      <p>Normally, a document always has a focused element, even if it is the document element itself, and a persistent <a class="def" href="#glossary-event-focus-ring">focus ring</a>; when switching between focus contexts, the document's currently focused element and focus ring normally remain the their current state; for example, if a document has three focusable elements, with the second element focused, when a user changes operating system focus to another application and then back to the browser, the second element will still be focused within the document, and tabbing will change the focus to the third element.  A <a class="def" href="#glossary-host-language">host language</a> may define specific elements which may or may not receive focus, the conditions user which an element may receive focus, the means by which focus may be changed, and the order in which the focus changes.  For example, in some cases an element may be given focus by moving a pointer over it, while other circumstances may require a mouse click; some elements may not be focusable at all, and some may be focusable only by special means (clicking on the element), but not by tabbing to it.  Documents may contain multiple focus rings.  Other specifications may define a more complex focus model than is described in this specification, including allowing multiple elements to have the current focus.</p>
+      <p>This event module includes event types for notification of changes in document <a class="def" href="#glossary-event-focus">focus</a>.  Depending on the environment, document focus may be distinct from <a class="def" href="#glossary-user-agent">user agent</a> focus and operating system focus; this is referred to as focus context.  For example, in a typical desktop browser environment, the operating system context focus may be on one of many different applications, one of which is the browser; when the browser has focus, the user may shift  the application context focus (such as with the tab key) among different browser user interface fields (e.g., the Web site location bar, a search field, etc.) before or after achieving document focus; once the document itself has focus, sequential shifting of focus will step through the focusable elements in the document.  The event types defined in this specification deal exclusively with document focus, and the <a class="def" href="#glossary-event-target">event target</a> identified in the event details must only be part of the document or documents in the window, never a part of the browser or operating system, even when switching from one focus context to another.</p>
+      <p>Normally, a document always has a focused element, even if it is the document element itself, and a persistent <a class="def" href="#glossary-event-focus-ring">focus ring</a>; when switching between focus contexts, the document's currently focused element and focus ring normally remain in their current state; for example, if a document has three focusable elements, with the second element focused, when a user changes operating system focus to another application and then back to the browser, the second element will still be focused within the document, and tabbing will change the focus to the third element.  A <a class="def" href="#glossary-host-language">host language</a> may define specific elements which may or may not receive focus, the conditions user which an element may receive focus, the means by which focus may be changed, and the order in which the focus changes.  For example, in some cases an element may be given focus by moving a pointer over it, while other circumstances may require a mouse click; some elements may not be focusable at all, and some may be focusable only by special means (clicking on the element), but not by tabbing to it.  Documents may contain multiple focus rings.  Other specifications may define a more complex focus model than is described in this specification, including allowing multiple elements to have the current focus.</p>
 
 <!-- blur -->
       <div class="event-definition assert must">
@@ -2531,7 +2537,7 @@
           <p>The <code>MouseEvent</code> interface provides specific contextual information associated with Mouse events.</p>
           <p>In the case of nested elements mouse events are always targeted at the most deeply nested element. Ancestors of the targeted element may use bubbling to obtain notification of mouse events which occur within their descendent elements.</p>
           <p>To create an instance of the <code>MouseEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MouseEvent")</code></a> method call.</p>
-          <p class="note" id="_10"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code> or <code>initMouseEventNS</code>, implementations should use the client coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">DOM Level 0</a> implementations or other proprietary attributes, e.g. <code>pageX</code>).</p>
+          <p class="note" id="_10"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code> or <code>initMouseEventNS</code>, implementations should use the client coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">DOM Level 0</a> implementations or other proprietary attributes, e.g., <code>pageX</code>).</p>
           <dl>
             <dt>
               <br />
@@ -2601,7 +2607,7 @@
                   <li><code>4</code> must indicate the auxiliary button (in general, the middle button, often combined with a mouse wheel).</li>
                 </ul>
                 <p>Some pointing devices may provide or simulate more buttons.  To represent such buttons, the value must be doubled for each successive button (in the binary series <code>8</code>, <code>16</code>, <code>32</code>, ... ), and the buttons should alternate sides of the device, from left to right.  For example, with a 5-button mouse, the primary button (on the left) would have the value <code>1</code>, the secondary button (on the right) would have the value <code>2</code>, the auxiliary button (in the middle) would have the value <code>4</code>, the fourth button (on the left) would have the value <code>8</code>, and the fifth button (on the right) would have the value <code>16</code>.</p>              
-                <p class="note" id="buttons-mask"><strong>Note:</strong> Because the sum of any set of button values is a unique number, a content author can use a bitwise operation to determine how many buttons are currently being pressed and which buttons they are, for an arbitrary number of mouse buttons on a device, e.g. the value <code>3</code> indicates that the left and right button are currently both pressed, while the value <code>5</code> indicates that the left and middle button are currently both pressed.</p>
+                <p class="note" id="buttons-mask"><strong>Note:</strong> Because the sum of any set of button values is a unique number, a content author can use a bitwise operation to determine how many buttons are currently being pressed and which buttons they are, for an arbitrary number of mouse buttons on a device, e.g., the value <code>3</code> indicates that the left and right button are currently both pressed, while the value <code>5</code> indicates that the left and middle button are currently both pressed.</p>
                 </dd>
 
                 <dt><code class="attribute-name"><a id="events-MouseEvent-clientX">clientX</a></code> of type <code>long</code>, readonly</dt>
@@ -2816,16 +2822,16 @@
               </tr>
             </table>
             
-            <p>The <a class="eventtype" href="#event-type-click"><code>click</code></a> event type must be dispatched on the <a class="def" href="#glossary-topmost-event-target">topmost event target</a> indicated by the pointer, when the user presses down and releases the pointer button, or otherwise activates the pointer in a manner that simulates such an action.  The actuation method of the mouse button must depend upon the pointer device and the environment configuration, e.g. it may depend on the screen location or the delay between the press and release of the pointing device button.</p>
-            <p>The <a class="eventtype" href="#event-type-click"><code>click</code></a> event may be preceded by the <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> and <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> events on the same element, disregarding changes between other node types (e.g. text nodes).  Depending upon the environment configuration, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event may be dispatched if one or more of the event types <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>, <a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a>, and <a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a> occur between the press and release of the pointing device button.  The <a class="eventtype" href="#event-type-click"><code>click</code></a> event may also be followed by the <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> event.</p>
+            <p>The <a class="eventtype" href="#event-type-click"><code>click</code></a> event type must be dispatched on the <a class="def" href="#glossary-topmost-event-target">topmost event target</a> indicated by the pointer, when the user presses down and releases the pointer button, or otherwise activates the pointer in a manner that simulates such an action.  The actuation method of the mouse button must depend upon the pointer device and the environment configuration, e.g., it may depend on the screen location or the delay between the press and release of the pointing device button.</p>
+            <p>The <a class="eventtype" href="#event-type-click"><code>click</code></a> event may be preceded by the <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> and <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a> events on the same element, disregarding changes between other node types (e.g., text nodes).  Depending upon the environment configuration, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event may be dispatched if one or more of the event types <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>, <a class="eventtype" href="#event-type-mousemove"><code>mousemove</code></a>, and <a class="eventtype" href="#event-type-mouseout"><code>mouseout</code></a> occur between the press and release of the pointing device button.  The <a class="eventtype" href="#event-type-click"><code>click</code></a> event may also be followed by the <a class="eventtype" href="#event-type-dblclick"><code>dblclick</code></a> event.</p>
             
-            <p id="example-mousemove-click" class="example"><strong>Example:</strong> If a user mouses down on a text node child of a &lt;p&gt; element which has been styled with a large line-height, shifts the mouse slightly such that it is no longer over an area containing text but is still within the containing block of that &lt;p&gt; element (i.e. the pointer is between lines of the same text block, but not over the text node per se), then subsequently mouses up, this should still trigger a <a class="eventtype" href="#event-type-click"><code>click</code></a> event (if it falls within the normal temporal hysteresis for a <a class="eventtype" href="#event-type-click"><code>click</code></a>), since the user has stayed within the scope of the same element; user-agent-generated mouse events are not dispatched on text nodes.</p>
+            <p id="example-mousemove-click" class="example"><strong>Example:</strong> If a user mouses down on a text node child of a &lt;p&gt; element which has been styled with a large line-height, shifts the mouse slightly such that it is no longer over an area containing text but is still within the containing block of that &lt;p&gt; element (i.e., the pointer is between lines of the same text block, but not over the text node per se), then subsequently mouses up, this should still trigger a <a class="eventtype" href="#event-type-click"><code>click</code></a> event (if it falls within the normal temporal hysteresis for a <a class="eventtype" href="#event-type-click"><code>click</code></a>), since the user has stayed within the scope of the same element; user-agent-generated mouse events are not dispatched on text nodes.</p>
             
             <!-- text nodes cannot be registered as event listeners, serve as the target of events, only element and document nodes are event targets. -->
             
             <p>In addition to being associated with pointer devices, the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type must be dispatched as part of an element activation, as described in <a href="#event-flow-activation">Activation triggers and behavior</a>.</p>
             
-            <p class="note" id="click-activation"><strong>Note:</strong>  For maximum accessibility, content authors should use the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type when defining activation behavior for custom controls, rather than other pointing-device event types such as <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> or <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>, which are more device-specific.  Though the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has its origins in pointer devices (e.g. a mouse), subsequent implementation enhancements have extended it beyond that association, and it should be considered a device-independent event type for element activation.</p>
+            <p class="note" id="click-activation"><strong>Note:</strong>  For maximum accessibility, content authors should use the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type when defining activation behavior for custom controls, rather than other pointing-device event types such as <a class="eventtype" href="#event-type-mousedown"><code>mousedown</code></a> or <a class="eventtype" href="#event-type-mouseup"><code>mouseup</code></a>, which are more device-specific.  Though the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type has its origins in pointer devices (e.g., a mouse), subsequent implementation enhancements have extended it beyond that association, and it should be considered a device-independent event type for element activation.</p>
             
             <p>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type varies based on the <a class="def" href="#glossary-proximal-event-target">proximal event target</a> of the event and the value of the <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a> or <a href="#events-MouseEvent-buttons"><code>MouseEvent.buttons</code></a> attributes.  Typical <a class="def" href="#glossary-default-action">default actions</a> of the <a class="eventtype" href="#event-type-click"><code>click</code></a> event type are as follows:</p>
             <ul>
@@ -3447,7 +3453,7 @@
         <h3><a id="events-textevents" href="#events-textevents">5.2.5 Text Event Types</a></h3>
 
         <p>This module defines the feature TextEvents 3.0 and depends on the feature UIEvents 3.0.</p>
-        <p>The text event module originates from the [<cite><a class="informative" href="#references-HTML40">HTML 4.01</a></cite>] <code>onkeypress</code> attribute. Unlike this attribute, the event type <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> applies only to characters and is designed for use with any text input devices, not just keyboards. Refer to <a href="#keys">Keyboard events and key values</a> for examples on how text events are used in combination with keyboard events.</p>
+        <p>The text event module originates from the [<cite><a class="informative" href="#references-HTML40">HTML 4.01</a></cite>] <code>onkeypress</code> attribute. Unlike this attribute, the event type <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> applies only to characters and is designed for use with any text input devices, not just keyboards. Refer to <a href="#keys">Keyboard events and key values</a> for examples on how text events are used in combination with keyboard events.</p>
         <dl>
           <dt><strong>Interface <em><a id="events-TextEvent">TextEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
           <dd>
@@ -3592,15 +3598,15 @@
         </dl>
         <p>The text event type is listed below.</p>
 
-<!-- textInput -->
+<!-- textinput -->
         <div class="event-definition assert must">
           <dl>
-            <dt id="event-type-textInput"><dfn>
-                <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>
+            <dt id="event-type-textinput"><dfn>
+                <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>
               </dfn></dt>
             <dd>
               <table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0">
-                <tr class="assert must"><th>Type</th><td class="eventname"><strong><code>textInput</code></strong></td></tr>
+                <tr class="assert must"><th>Type</th><td class="eventname"><strong><code>textinput</code></strong></td></tr>
                 <tr class="assert must"><th>Interface</th><td><a href="#events-TextEvent"><code>TextEvent</code></a></td></tr>
                 <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
                 <tr class="assert must"><th>Bubbles</th><td>Yes</td></tr>
@@ -3619,7 +3625,7 @@
                   </td>
                 </tr>
               </table>
-              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when one or more characters have been entered. These characters may originate from a variety of sources, e.g., characters resulting from a key being pressed or released on a keyboard device, from the processing of an <a class="def" href="#glossary-ime">input method editor</a>, or resulting from a voice command.  Where a “paste” operation generates a simple sequence of characters, i.e. a text passage without any structure or style information, this event type should be generated as well.</p>
+              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when one or more characters have been entered. These characters may originate from a variety of sources, e.g., characters resulting from a key being pressed or released on a keyboard device, from the processing of an <a class="def" href="#glossary-ime">input method editor</a>, or resulting from a voice command.  Where a “paste” operation generates a simple sequence of characters, i.e., a text passage without any structure or style information, this event type should be generated as well.</p>
             </dd>
           </dl>
         </div>
@@ -3629,7 +3635,7 @@
         <h3><a id="events-keyboardevents" href="#events-keyboardevents">5.2.6 Keyboard Event Types</a></h3>
 
         <p>This module defines the feature KeyboardEvents 3.0 and depends on the feature UIEvents 3.0.</p>
-        <p>Keyboard events are device dependent, i.e. they rely on the capabilities of the input devices and how they are mapped in the operating systems. It is therefore highly recommended to rely on <a href="#events-TextEvent">Text event types</a> when dealing with character input.  Refer to <a href="#keys">Keyboard events and key values</a> for more details, including examples on how Keyboard Events are used in combination with Composition Events.</p>
+        <p>Keyboard events are device dependent, i.e., they rely on the capabilities of the input devices and how they are mapped in the operating systems. It is therefore highly recommended to rely on <a href="#events-TextEvent">Text event types</a> when dealing with character input.  Refer to <a href="#keys">Keyboard events and key values</a> for more details, including examples on how Keyboard Events are used in combination with Composition Events.</p>
         <dl>
           <dt><strong>Interface <em><a id="events-KeyboardEvent">KeyboardEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
           <dd>
@@ -3736,13 +3742,14 @@
 
                   <dt><code class="attribute-name"><a id="events-KeyboardEvent-metaKey">metaKey</a></code> of type <code>boolean</code>, readonly</dt>
                   <dd><code>true</code> if the meta (Meta) key modifier is activated.
-  <p class="note" id="_26"><strong>Note:</strong> The Command key modifier on Macintosh systems must be represented using this key modifier.</p></dd>
+                    <p class="note" id="_26"><strong>Note:</strong> The <code>'Command'</code> key modifier on Macintosh systems must be represented using this key modifier.</p>
+                  </dd>
 
                   <dt><code class="attribute-name"><a id="events-KeyboardEvent-shiftKey">shiftKey</a></code> of type <code>boolean</code>, readonly</dt>
                   <dd><p><code>true</code> if the shift (Shift) key modifier is activated.</p></dd>
 
                   <dt><code class="attribute-name"><a id="events-KeyboardEvent-repeat">repeat</a></code> of type <code>boolean</code>, readonly</dt>
-                  <dd><code>true</code> if the key has been pressed in a sustained manner.  Depending on the system configuration, holding down a key results may result in multiple consecutive <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> events, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events, and <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> events, for appropriate keys.   For mobile devices which have <em>long-key-press</em> behavior, the first key event with a <a href="#events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> shall serve as an indication of a <em>long-key-press</em>.  The length of time that the key must be pressed in order to begin repeating is configuration-dependent.</dd>
+                  <dd><code>true</code> if the key has been pressed in a sustained manner.  Depending on the system configuration, holding down a key results may result in multiple consecutive <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> events, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events, and <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> events, for appropriate keys.   For mobile devices which have <em>long-key-press</em> behavior, the first key event with a <a href="#events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> shall serve as an indication of a <em>long-key-press</em>.  The length of time that the key must be pressed in order to begin repeating is configuration-dependent.</dd>
 
                 </dl>
               </dd>
@@ -3765,17 +3772,18 @@
                             <dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt>
                             <dd>
                               <p>A modifier key value.  Modifier keys defined in this specification are 
-                              <code class="value">'Alt'</code>, 
-                              <code class="value">'AltGraph'</code>, 
-                              <code class="value">'CapsLock'</code>, 
-                              <code class="value">'Control'</code>, 
-                              <code class="value">'Fn'</code>, 
-                              <code class="value">'Meta'</code>, 
-                              <code class="value">'NumLock'</code>, 
-                              <code class="value">'Scroll'</code>, 
-                              <code class="value">'Shift'</code>, and 
-                              <code class="value">'Win'</code>.  
-                              User agents may support additional implementation-specific modifier keys depending on the environment.</p>
+                                <a href="#key-Alt"><code class="value keyname">'Alt'</code></a>
+                                <a href="#key-AltGraph"><code class="value keyname">'AltGraph'</code></a>
+                                <a href="#key-CapsLock"><code class="value keyname">'CapsLock'</code></a>
+                                <a href="#key-Control"><code class="value keyname">'Control'</code></a>
+                                <a href="#key-Fn"><code class="value keyname">'Fn'</code></a>
+                                <a href="#key-Meta"><code class="value keyname">'Meta'</code></a>
+                                <a href="#key-NumLock"><code class="value keyname">'NumLock'</code></a>
+                                <a href="#key-Scroll"><code class="value keyname">'Scroll'</code></a>
+                                <a href="#key-Shift"><code class="value keyname">'Shift'</code></a>
+                                <a href="#key-SymbolLock"><code class="value keyname">'SymbolLock'</code></a>, and 
+                                <a href="#key-Win"><code class="value keyname">'Win'</code></a>
+                                User agents may support additional implementation-specific modifier keys depending on the environment.</p>
                               <p class="note" id="_27"><strong>Note:</strong> If an application wishes to distinguish between right and left modifiers, this information could be deduced using keyboard events and <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p>
                             </dd>
                           </dl>
@@ -3864,18 +3872,18 @@
             <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>
           </li>
         </ol>
-        <p>Keys associated with a <a class="def" href="#glossary-character-value">character value</a> must, under normal circumstances, produce a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event as well.  The order of text events relative to keyboard events is as follows:</p>
+        <p>Keys associated with a <a class="def" href="#glossary-character-value">character value</a> must, under normal circumstances, produce a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event as well.  The order of text events relative to keyboard events is as follows:</p>
         <ol>
           <li>
             <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>
           </li>
           <li><a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> (only for keys which produce a <a class="def" href="#glossary-character-value">character value</a>)</li>
-          <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a></li>
+          <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a></li>
           <li>If the key is depressed for a sustained period,<!-- the key should seek counseling, and --> the following events may repeat at an environment-dependent rate:
             <ul>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> (with <a href="#events-KeyboardEvent-repeat">repeat</a> attribute set to <code class="value">true</code>)</li>
               <li><a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> (with <a href="#events-KeyboardEvent-repeat">repeat</a> attribute set to <code class="value">true</code>; only for keys which produce a <a class="def" href="#glossary-character-value">character value</a>)</li>
-              <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a></li>
+              <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a></li>
             </ul>
           </li>
           <li>
@@ -3887,7 +3895,7 @@
         </ol>
         <p class="note" id="key-default"><strong>Note:</strong>  Typically, any <a class="def" href="#glossary-default-action">default actions</a> associated with any particular key must be completed before the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event is dispatched, which may delay the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event slightly (though this is not likely to be a perceptible delay).</p>
         
-        <p class="warning" id="_28"><strong>Warning!</strong> Because of hardware limitations, on some keyboard devices, the order between the text event and keyboard events may differ.  For example, some mobile devices may dispatch the <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event after the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event.</p>
+        <p class="warning" id="_28"><strong>Warning!</strong> Because of hardware limitations, on some keyboard devices, the order between the text event and keyboard events may differ.  For example, some mobile devices may dispatch the <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event after the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event.</p>
         
         <p>The <a class="def" href="#glossary-event-target">target</a> of a key event is the currently focused element which is processing the keyboard activity; this is often an HTML <code>input</code> element or a textual element which is editable, but may be an element defined by the <a class="def" href="#glossary-host-language">host language</a> to accept keyboard input for non-text purposes, such as the activation of a hotkey or trigger of some other behavior; if no suitable element is in focus, the event target will be the root element.</p>
         <p class="note" id="key-focus"><strong>Note:</strong>  The <a class="def" href="#glossary-event-target">event target</a> may change between different key events; for example, a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event on the <a href="#key-Tab"><code class="value keyname">'Tab'</code></a> key will likely have a different <a class="def" href="#glossary-event-target">event target</a> than the  <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event on the same keystroke.</p>
@@ -3906,7 +3914,7 @@
                 <tr class="assert must"><th>Bubbles</th><td>Yes</td></tr>
                 <tr class="assert must"><th>Target</th><td><code>Element</code></td></tr>
                 <tr class="assert must"><th>Cancelable</th><td>Yes</td></tr>
-                <tr class="assert must"><th>Default action</th><td>Varies: <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td></tr>
+                <tr class="assert must"><th>Default action</th><td>Varies: <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -3924,12 +3932,12 @@
                   </td>
                 </tr>
               </table>
-              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched before the <a class="eventtype" href="#event-type-compositionstart"><code>keypress</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events event associated with the same key.  Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.</p>
+              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the <a class="def" href="#glossary-key-mapping">key mapping</a> but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched before the <a class="eventtype" href="#event-type-compositionstart"><code>keypress</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events event associated with the same key.  Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.</p>
               <p>The default action of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event depends upon the key:</p>
               <ul>
-                <li>if the key is associated with a character, the default action shall be to dispatch a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event with the character as the value of the <a href="#events-TextEvent-data"><code>TextEvent.data</code></a> attribute
+                <li>if the key is associated with a character, the default action shall be to dispatch a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event with the character as the value of the <a href="#events-TextEvent-data"><code>TextEvent.data</code></a> attribute
                    <ul>
-                     <li>if the document's currently focused element can receive text (such as a form input or an editable text block), the default action shall be to dispatch a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event with the character as the value of the <a href="#events-TextEvent-data"><code>TextEvent.data</code></a> attribute, and the focused element as the value of the <a href="#events-event-type-target">Event.target</a> attribute, and for that character to be appended to the text content of that element</li>
+                     <li>if the document's currently focused element can receive text (such as a form input or an editable text block), the default action shall be to dispatch a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event with the character as the value of the <a href="#events-TextEvent-data"><code>TextEvent.data</code></a> attribute, and the focused element as the value of the <a href="#events-event-type-target">Event.target</a> attribute, and for that character to be appended to the text content of that element</li>
                    </ul>
                  </li>
                 <li>if the key is associated with a <a class="def" href="#glossary-text-composition-system">text composition system</a>, the default action shall be to launch that system</li>
@@ -3957,7 +3965,7 @@
                 <tr class="assert must"><th>Bubbles</th><td>Yes</td></tr>
                 <tr class="assert must"><th>Target</th><td><code>Element</code></td></tr>
                 <tr class="assert must"><th>Cancelable</th><td>Yes</td></tr>
-                <tr class="assert must"><th>Default action</th><td>Varies: <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td></tr>
+                <tr class="assert must"><th>Default action</th><td>Varies: <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event; launch <a class="def" href="#glossary-text-composition-system">text composition system</a>; <a class="eventtype" href="#event-type-blur"><code>blur</code></a> and <a class="eventtype" href="#event-type-focus"><code>focus</code></a> events; <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; other event</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -3975,9 +3983,9 @@
                   </td>
                 </tr>
               </table>
-              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is pressed down, if and only if that key normally produces a <a class="def" href="#glossary-character-value">character value</a>. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event and before the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event associated with the same key.</p>
+              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is pressed down, if and only if that key normally produces a <a class="def" href="#glossary-character-value">character value</a>. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the <a class="def" href="#glossary-key-mapping">key mapping</a> but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event and before the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event associated with the same key.</p>
               <p class="note" id="_31"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event is traditionally associated with detecting a <a class="def" href="#glossary-character-value">character value</a> rather than a physical key, and may not be available on all keys in some configurations.</p>
-              <p class="warning" id="_32"><strong>Warning!</strong> the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event type.</p>
+              <p class="warning" id="_32"><strong>Warning!</strong> the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event type is defined in this specification for reference and completeness, but this specification <a class="def" href="#glossary-deprecated">deprecates</a> the use of this event type in favor of the <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event type.</p>
             </dd>
           </dl>
         </div>
@@ -4014,7 +4022,7 @@
                   </td>
                 </tr>
               </table>
-              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is released.  The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system.  This event type shall be generated after the keyboard mapping. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events event associated with the same key.  Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.</p>
+              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a key is released.  The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system.  This event type shall be generated after the <a class="def" href="#glossary-key-mapping">key mapping</a>. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events event associated with the same key.  Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.</p>
               <p class="note" id="_33"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events are traditionally associated with detecting any key, not just those which produce a <a class="def" href="#glossary-character-value">character value</a>.</p>
             </dd>
           </dl>
@@ -4115,11 +4123,11 @@
           <li><a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a> (multiple events)</li>
           <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a></li>
         </ol>
-        <p>Composition events which are not canceled and which do not have the <a class="def" href="#glossary-empty-string">empty string</a> as a value produce a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event as well.  The order of text events relative to composition events is as follows:</p>
+        <p>Composition events which are not canceled and which do not have the <a class="def" href="#glossary-empty-string">empty string</a> as a value produce a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event as well.  The order of text events relative to composition events is as follows:</p>
         <ol>
           <li><a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a></li>
           <li><a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a> (multiple events)</li>
-          <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a></li>
+          <li>If a <a class="def" href="#glossary-character-value">character value</a> is produced, <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a></li>
           <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a></li>
         </ol>
 
@@ -4151,7 +4159,7 @@
               </table>
               
               <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a <a class="def" href="#glossary-text-composition-system">text composition system</a> is invoked in preparation for composing a passage of text.  This event type is device-dependent, and may rely upon the capabilities of the text conversion system and how it is mapped into the operating system.  When a keyboard is used to feed an input method editor, this event type is generated after a <code>keydown</code> event, but speech or handwriting recognition systems may send this event type without keyboard events.  Some implemenations may populate the <a href="#events-CompositionEvent-data"><code>data</code></a> attribute of the <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> event with the text currently selected in the document (for editing and replacement); otherwise, the value of the <a href="#events-CompositionEvent-data"><code>data</code></a> attribute shall be  the <a class="def" href="#glossary-empty-string">empty string</a>.</p>
-              <p>This event must be dispatched immediately before a <a class="def" href="#glossary-text-composition-system">text composition system</a> is launched, and before the DOM is modified due to the composition process.  The default action of this event is to launch the appropriate <a class="def" href="#glossary-text-composition-system">text composition system</a>.  If this event is canceled, the <a class="def" href="#glossary-text-composition-system">text composition system</a> must not be launched.  Note that canceling the <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> <em>event type</em> is distinct from canceling the <a class="def" href="#glossary-text-composition-system">text composition system</a> session (e.g. by hitting a cancel button or closing an <a class="def" href="#glossary-ime">IME</a> window).</p>
+              <p>This event must be dispatched immediately before a <a class="def" href="#glossary-text-composition-system">text composition system</a> is launched, and before the DOM is modified due to the composition process.  The default action of this event is to launch the appropriate <a class="def" href="#glossary-text-composition-system">text composition system</a>.  If this event is canceled, the <a class="def" href="#glossary-text-composition-system">text composition system</a> must not be launched.  Note that canceling the <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a> <em>event type</em> is distinct from canceling the <a class="def" href="#glossary-text-composition-system">text composition system</a> session (e.g., by hitting a cancel button or closing an <a class="def" href="#glossary-ime">IME</a> window).</p>
               <!-- <p>(<i class="issue" id="issue-composition_events"><strong>Issue:</strong> see <a href="http://lists.w3.org/Archives/Public/www-dom/2009JulSep/0143.html" title="Extra notes on composition events from Daniel Danilatos on 2009-08-07 ([email protected] from July to September 2009)">Extra notes on composition events</a> for more details.</i>)</p> -->
             </dd>
           </dl>
@@ -4203,7 +4211,7 @@
                 <tr class="assert must"><th>Bubbles</th><td>Yes</td></tr>
                 <tr class="assert must"><th>Target</th><td><code>Element</code></td></tr>
                 <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event</td></tr>
+                <tr class="assert must"><th>Default action</th><td><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4216,13 +4224,13 @@
                   </td>
                 </tr>
               </table>
-              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a <a class="def" href="#glossary-text-composition-system">text composition system</a> completes the composition of its active text passage, or cancels the composition process.  If the result of the <a class="def" href="#glossary-text-composition-system">text composition system</a> is not null and does not contain the <a class="def" href="#glossary-empty-string">empty string</a>, this event type will be preceded by a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event type with the appropriate 
+              <p>A <a class="def" href="#glossary-user-agent">user agent</a> must dispatch this event when a <a class="def" href="#glossary-text-composition-system">text composition system</a> completes the composition of its active text passage, or cancels the composition process.  If the result of the <a class="def" href="#glossary-text-composition-system">text composition system</a> is not null and does not contain the <a class="def" href="#glossary-empty-string">empty string</a>, this event type will be preceded by a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event type with the appropriate 
                 <a href="#events-TextEvent-inputMethod">inputMethod</a> value, such as 
                 <a href="#events-DOM_INPUT_METHOD_IME">DOM_INPUT_METHOD_IME</a>, 
                 <a href="#events-DOM_INPUT_METHOD_HANDWRITING">DOM_INPUT_METHOD_HANDWRITING</a>, 
                 <a href="#events-DOM_INPUT_METHOD_VOICE">DOM_INPUT_METHOD_VOICE</a>, or 
                 <a href="#events-DOM_INPUT_METHOD_MULTIMODAL">DOM_INPUT_METHOD_MULTIMODAL</a>.</p>
-              <p>This event is dispatched immediately after the <a class="def" href="#glossary-text-composition-system">text composition system</a> is completed (e.g. the <a class="def" href="#glossary-ime">IME</a> closed, minimized, switched out of focus, or otherwise dismissed, with the focus switched back to the <a class="def" href="#glossary-user-agent">user agent</a>).</p>
+              <p>This event is dispatched immediately after the <a class="def" href="#glossary-text-composition-system">text composition system</a> is completed (e.g., the <a class="def" href="#glossary-ime">IME</a> closed, minimized, switched out of focus, or otherwise dismissed, with the focus switched back to the <a class="def" href="#glossary-user-agent">user agent</a>).</p>
             </dd>
           </dl>
         </div>
@@ -4239,7 +4247,7 @@
                 <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>: <code class="value">'test'</code></li>
               <li><em>[User rejects first word-match suggestion, selects different match]</em>
                 <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>: <code class="value">'text'</code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'text'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_HANDWRITING'</code>)</li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'text'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_HANDWRITING'</code>)</li>
               <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a>: <code class="value">'text'</code></li>
             </ol>
           </div>
@@ -4835,44 +4843,74 @@
         <h4><a id="key-legends" href="#key-legends">6.1.1 Key Legends</a></h4>
 
         <p><em>This section is informative</em></p>
-        <p>The visual markings normally consist of one or more characters which a keystroke on that key will produce (such as <code class="value">'F'</code>, <code class="value">'8'</code>, or <code class="value">'ш'</code>), or names or symbols which indicate that key's function (such as an upward-pointing arrow &#x21E7; indicating <code class="value">'Shift'</code>, or the string <code class="value">'Enter'</code>).  Keys are often referred to by this marking (e.g. “Press the <code class="value">'Shift'</code> and <code class="value">'F'</code> keys.”).  However, 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 class="value">'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 class="value">'F'</code> key (the key marked with the glyph <code class="value">'F'</code>), will produce the character value <code class="value">'f'</code> when pressing without an active modifier key (<code class="value">'Shift'</code>) or modifier state (<code class="value">'CapsLock'</code>).</p>
+        <p>The visual markings normally consist of one or more characters which a keystroke on that key will produce (such as <code class="value">'F'</code>, <code class="value">'8'</code>, or <code class="value">'ш'</code>), or names or symbols which indicate that key's function (such as an upward-pointing arrow &#x21E7; indicating <code class="value">'Shift'</code>, or the string <code class="value">'Enter'</code>).  Keys are often referred to by this marking (e.g., “Press the <code class="value">'Shift'</code> and <code class="value">'F'</code> keys.”).  However, 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 class="value">'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 class="value">'F'</code> key (the key marked with the glyph <code class="value">'F'</code>), will produce the character value <code class="value">'f'</code> when pressing without an active modifier key (<code class="value">'Shift'</code>) or modifier state (<code class="value">'CapsLock'</code>).</p>
         <p>Note that the key legends for function keys do not normally produce any characters, although the symbol may have a Unicode equivalent; for example, the <code class="value">'Shift'</code> key may bear the symbol &#x21E7;, which has the <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> <code class="value">'21E7'</code>, but pressing the <code class="value">'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="value">'Shift'</code>.</p>
         <h4><a id="keyboard-layout" href="#keyboard-layout">6.1.2 Keyboard Layout</a></h4>
 
         <p><em>This section is informative</em></p>
-        <p>As with the key labels, the physical layout of the keys on the keyboard does not not affect the digital key value for any given key.  It is outside the scope of this specification to provide key values based on keyboard layout, particularly since there are so many possible layouts for a keyboard, and since users can change the mapping of keys in their operating system, e.g. by selecting a Dvorak key mapping.</p>
+        <p>As with the key labels, the physical layout of the keys on the keyboard does not not affect the digital key value for any given key.  It is outside the scope of this specification to provide key values based on keyboard layout, particularly since there are so many possible layouts for a keyboard, and since users can change the mapping of keys in their operating system, e.g., by selecting a Dvorak <a class="def" href="#glossary-key-mapping">key mapping</a>.</p>
         <p>To illustrate the concept of keyboard layout mappings and its relation with keyboard events and key values, on the same keyboard (a PC/AT US keyboard), pressing the key labeled <code>Q</code> (with no modifier key activated) will produce different key values based on the mapping.  With a typical US <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard layout mapping, it will produce the character <code class="value">'q'</code> (<code class="value">U+0071</code>, Latin Small Letter Q).  If the keyboard layout mapping is switched to a French mapping, pressing the same key will produce the character <code class="value">'a'</code> (<code class="value">U+0041</code>, Latin Capital Letter A).  If the keyboard layout mapping is switched to a Serbian (Cyrillic) mapping, pressing the same key will produce the character <code class="value">'&#x459;'</code> (<code class="value">U+0459</code>, Cyrillic Small Letter LJE).</p>
         <p>However, the physical layout of the keys may be of interest to content authors developing games or other applications in which the location of the keys has an ergonomic relationship as the desired user interface controls, with little or no attention paid to the representational value of the key itself.  For example, many games may use the keys <code class="value">'A'</code>, <code class="value">'S'</code>, <code class="value">'D'</code>, and <code class="value">'W'</code> for <code class="value">'left'</code>, <code class="value">'down'</code>, <code class="value">'right'</code>, and <code class="value">'up'</code> respectively.  Content authors should provide a means for the user to assign such controller keys to a custom setting appropriate to their keyboard configurations.  Implementations may provide a means for the user to more comprehensively map the keyboard to their customized keyboard layout, but this is beyond the scope of this specification.</p>
         <p class="note" id="_60"><strong>Note:</strong> Key values should not be confused with <em>scan codes</em>, which are the low-level hexadecimal signals produced for each key by the keyboard driver software, and which are mapped at the operating system to a <acronym title="Virtual Key">VK</acronym> ("virtual key"), which in turn may be mapped to the user-defined key configuration.  Key values are a high-level abstraction of that final mapping.</p>
         
-        <h5><a id="keyboard-desktop" href="#keyboard-desktop">6.1.2.1 Desktop and Laptop Keyboards</a></h5>
-
-        <p>In the case where a content author wishes to rely on the mechanical layout of a desktop or laptop keyboard, this specification suggests the keyboard configuration specified in ISO/IEC 9995, parts 2 and 3 [<cite><a class="informative" href="#references-ISO-9995-2-3">ISO-9995-2/3</a></cite>], which defines a common layout for primary, secondary, and auxiliary key mappings on a typical alphanumeric keyboard, as a common layout appropriate to some international uses.</p>
-        <p class="note" id="_51"><strong>Note:</strong> This keyboard layout is still, in essence, a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard, and will not match the keyboards or configurations of many users.  Content authors cannot rely upon any particular configuration, and should create content in an internationalized and localizable manner.</p>
-        <div id="figure-keyboard" class="figure" style="text-align: center">
-          <object type="image/svg+xml" data="images/ISOIEC-9995-3-FCD-2009A.svg" width="900" height="300">
-            <img src="images/ISOIEC-9995-3-FCD-2009A.png" alt="A graphical depiction of an ISO standard defining layouts of computer keyboards, ISO/IEC 9995, parts 2 and 3" />
-          </object>
-          <p style="text-align:left">
-            <em>Figure 3: A graphical depiction of an ISO standard defining layouts of computer keyboards, ISO 9995, parts 2 and 3</em>
-          </p>
+        <div id="keyboard-desktop-section">
+          <h5><a id="keyboard-desktop" href="#keyboard-desktop">6.1.2.1 Desktop and Laptop Keyboards</a></h5>
+
+          <p>In the case where a content author wishes to rely on the mechanical layout of a desktop or laptop keyboard, this specification suggests the keyboard configuration specified in ISO/IEC 9995, parts 2 and 3 [<cite><a class="informative" href="#references-ISO-9995-2-3">ISO-9995-2/3</a></cite>], which defines a common layout for primary, secondary, and auxiliary <a class="def" href="#glossary-key-mapping">key mappings</a> on a typical alphanumeric keyboard, as a common layout appropriate to some international uses.</p>
+          <p class="note" id="_51"><strong>Note:</strong> This keyboard layout is still, in essence, a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard, and will not match the keyboards or configurations of many users.  Content authors cannot rely upon any particular configuration, and should create content in an internationalized and localizable manner.</p>
+          <div id="figure-keyboard" class="figure" style="text-align: center">
+            <object type="image/svg+xml" data="images/ISOIEC-9995-3-FCD-2009A.svg" width="900" height="300">
+              <img src="images/ISOIEC-9995-3-FCD-2009A.png" alt="A graphical depiction of an ISO standard defining layouts of computer keyboards, ISO/IEC 9995, parts 2 and 3" />
+            </object>
+            <p style="text-align:left">
+              <em>Figure 3: A graphical depiction of an ISO standard defining layouts of computer keyboards, ISO 9995, parts 2 and 3</em>
+            </p>
+          </div>
         </div>
-        <h5><a id="keyboard-mobile" href="#keyboard-mobile">6.1.2.2 Mobile Keypads</a></h5>
-
-        <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 <abbr title="a-z">\u0061..\u007A</abbr> to the number keys <code>2</code> through <code>9</code>, as a common layout appropriate to some international uses.</p>
-        <p class="note" id="_52"><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 should create content in an internationalized and localizable manner.</p>
-        <div id="figure-numberpad" class="figure" style="text-align: center">
-          <object type="image/svg+xml" data="images/ISOIEC-9995-8-2006.svg" width="180" height="240">
-            <img src="images/ISOIEC-9995-8-2006.png" alt="A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006" />
-          </object>
-          <p style="text-align:left">
-            <em>Figure 4: A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006</em>
-          </p>
+        
+
+        <div id="keyboard-mobile-section">
+
+          <div id="figure-numberpad" class="figure" style="float:right; width:220px; margin:0px 20px 0px 20px;">
+            <object type="image/svg+xml" data="images/ISOIEC-9995-8-2006.svg" width="180" height="240">
+              <img src="images/ISOIEC-9995-8-2006.png" alt="A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006" />
+            </object>
+            <p style="text-align:left">
+              <em>Figure 4: A graphical depiction of an ISO standard defining layouts of numeric keypads, with distribution of letters on the keys, ISO/IEC 9995-8:2006</em>
+            </p>
+          </div>
+
+          <h5><a id="keyboard-mobile" href="#keyboard-mobile">6.1.2.2 Mobile Keypads</a></h5>
+
+          <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 <abbr title="a-z">\u0061..\u007A</abbr> to the number keys <code>2</code> through <code>9</code>, as a common layout appropriate to some international uses.</p>
+          <p class="note" id="_52"><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 should create content in an internationalized and localizable manner.</p>
         </div>
-
-        <div>
-          <h5><a id="keyboard-chording-virtual" href="#keyboard-chording-virtual">6.1.2.3 Virtual Keyboards and Chording Keyboards</a></h5>
+        
+        
+        <div id="remote-control-section" style="clear:right;">
+
+          <div id="figure-remotecontrol" class="figure" style="float:right; width:220px; margin:0px 20px 0px 20px;">
+            <object type="image/svg+xml" data="images/remote-control.svg" width="102" height="422">
+              <img src="images/remote-control.png" alt="A graphical depiction of a media remote control, with buttons mapped to specific keys values" />
+            </object>
+            <p style="text-align:left">
+              <em>Figure 5: A graphical depiction of a media remote control, with buttons mapped to specific keys values</em>
+            </p>
+          </div>
+
+          <h5><a id="remote-control" href="#remote-control">6.1.2.3 Media Remote Controls</a></h5>
+
+          <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).</p>
+          
+          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
+        </div>
+        
+        
+        <div style="clear:right;">
+          <h5><a id="keyboard-chording-virtual" href="#keyboard-chording-virtual">6.1.2.4 Virtual Keyboards and Chording Keyboards</a></h5>
 
           <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-values">key values set</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>
         
@@ -4888,7 +4926,7 @@
 
         <p>A key value is a <code>DOMString</code> that can be used to indicate any given key on a keyboard, regardless of position or state, by the value it produces.  These key values may be used as return values for keyboard events generated by the implementation, or as input values by the content author to specify desired input (such as for keyboard shortcuts).  This specification defines a set of common key values (called the <a href="#key-values">Key Values Set</a>), and rules for production of new key values.</p>
         
-        <p class="issue" id="issue-keyvalues-textInput"><strong>Issue:</strong> Add mention of textInput and it's relationship to key values, per <a href="http://lists.w3.org/Archives/Public/www-dom/2010JanMar/0052.html">Ishida</a></p>
+        <p class="issue" id="issue-keyvalues-textinput"><strong>Issue:</strong> Add mention of textinput and it's relationship to key values, per <a href="http://lists.w3.org/Archives/Public/www-dom/2010JanMar/0052.html">Ishida</a></p>
         <!-- It is therefore highly recommended to rely on <a href="#events-TextEvent">Text event types</a> when dealing with character input. -->
         
         <p>Key values can be used to detect the value of a key which has been pressed, using the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes.  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 value</a> of control keys, modifier keys, function keys, or other keys that do not generate characters; these values can be used for monitoring particular input strings, for detecting and acting on modifier key input in combination with other inputs (such as a mouse), for creating virtual keyboards, or for any number of other purposes.</p>
@@ -4896,12 +4934,12 @@
         <p class="issue"><strong>Issue:</strong> mention that content author should use case-insensitive matching to capture both "t" and "T" for hotkeys, etc.?</p>
         <p class="note" id="_53"><strong>Note:</strong> While implementations are recommended to use the most relevant value for a key independently of the platform or keyboard layout mappings, content authors should not make assumption on the ability of keyboard devices to generate them.  When using keyboard events and key values for shortcut-key combinations, content authors should <q>consider using numbers and function keys (F4, F5, and so on) instead of letters</q> ([<cite><a class="informative" href="#references-DWW95">DWW95</a></cite>]) given that most keyboard layouts will provide keys for those.</p>
 <!-- , and where the key used should default to the most appropriate key for the function, language, operating system, device, and other environmental factors (such as <code>ctrl+c</code> for copy operations) -->
-        <p>It is important to note that a key value does not indicate a specific key on the physical keyboard, nor does it reflect the character printed on the key; a key value indicates the current value of the event with consideration to the current state of all active keys and key input modes (including shift modes and <a class="def" href="#glossary-dead-key">dead keys</a>), as reflected in the operating-system mapping of the keyboard and reported to the implementation.  In other words, the key value for the key marked <code>'O'</code> on a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard has the key value <code>'o'</code> in an unshifted state, <code>'O'</code> in a shifted state, <code>'&#xF6;'</code> in an unshifted state during a dead-key operation to add an umlaut diacritic, and <code>'&#xD6;'</code> in a shifted state during a dead-key operation to add an umlaut diacritic.  Because a user may map their keyboard to an arbitrary custom configuration, the content author should not assume that a relationship exists between the shifted and unshifted states of a key and the majuscule form (uppercase or capital letters) and minuscule form (lowercase or small letters) of a character representation, but should instead use the value of the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes.  The keyboard depicted in <a href="#figure-keyboard">Figure 3</a> illustrates one possible set of key mappings on one possible keyboard layout; many others exist, both standard and idiosyncratic.</p>
+        <p>It is important to note that a key value does not indicate a specific key on the physical keyboard, nor does it reflect the character printed on the key; a key value indicates the current value of the event with consideration to the current state of all active keys and key input modes (including shift modes and <a class="def" href="#glossary-dead-key">dead keys</a>), as reflected in the operating-system mapping of the keyboard and reported to the implementation.  In other words, the key value for the key marked <code>'O'</code> on a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard has the key value <code>'o'</code> in an unshifted state, <code>'O'</code> in a shifted state, <code>'&#xF6;'</code> in an unshifted state during a dead-key operation to add an umlaut diacritic, and <code>'&#xD6;'</code> in a shifted state during a dead-key operation to add an umlaut diacritic.  Because a user may map their keyboard to an arbitrary custom configuration, the content author should not assume that a relationship exists between the shifted and unshifted states of a key and the majuscule form (uppercase or capital letters) and minuscule form (lowercase or small letters) of a character representation, but should instead use the value of the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes.  The keyboard depicted in <a href="#figure-keyboard">Figure 3</a> illustrates one possible set of <a class="def" href="#glossary-key-mapping">key mappings</a> on one possible keyboard layout; many others exist, both standard and idiosyncratic.</p>
         <p>It is also important to note that there is not a one-to-one relationship between key event states and key values.  A particular key value may be associated with multiple keys; for example, many standard keyboards contain more than one key with the <code class="value">'Shift'</code> key value (normally distinguished by the <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> values <a href="#events-DOM_KEY_LOCATION_LEFT"><code class="constant-name">DOM_KEY_LOCATION_LEFT</code></a> and <a href="#events-DOM_KEY_LOCATION_RIGHT"><code class="constant-name">DOM_KEY_LOCATION_RIGHT</code></a>) or <code class="value">'8'</code> key value (normally distinguished by the <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> values <a href="#events-DOM_KEY_LOCATION_STANDARD"><code class="constant-name">DOM_KEY_LOCATION_STANDARD</code></a> and <a href="#events-DOM_KEY_LOCATION_NUMPAD"><code class="constant-name">DOM_KEY_LOCATION_NUMPAD</code></a>), and user-configured custom keyboard layouts may duplicate any key value in multiple key-state scenarios (note that <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> is intended for standard keyboard layouts, and cannot always indicate a meaningful distinction).</p>
 
         <p>Similarly, a given key event state may have different key values.  For most keys which represent characters, such as the letter <code>'m'</code> or the question mark (<code>'?'</code>), the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> and <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes will be the same.  However, for <em>printing control characters</em>, such as the backspace/back key, the <em>character value</em> is distinct from the <em>key value</em>, with different values for the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> and <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes; see the <a href="#key-values">Key Values Set</a> for more details.  Certain keys in some states, called <em>modifier keys</em> or <em>control keys</em>, have only a <a class="def" href="#glossary-key-value">key value</a> and no <a class="def" href="#glossary-character-value">character value</a>, such as the volume mute key, which has the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute value <code class="value">'VolumeMute'</code> and the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute value <code>null</code>.</p>
         
-        <p>Finally, the meaning of any given character representation is context-dependent and complex.  For example, in some contexts, the asterisk (star) glyph (<code class="value">'*'</code>) represents a footnote or emphasis (when bracketing a passage of text); however, in some documents or executable programs it is equivalent to the mathematical multiplication operation, while in other documents or executable programs, that function is reserved for the multiplication symbol (<code class="value">'&#xD7;'</code>, Unicode value <code class="value">U+00D7</code>) or the Latin small letter <code class="value">'x'</code> (due to the lack of a multiplication key on many keyboard and the superficial resemblance of the glyphs <code class="value">'&#xD7;'</code> and <code class="value">'x'</code>).  Thus, the semantic meaning or function of character representations is outside the scope of this specification.</p>
+        <p>Finally, the meaning of any given character representation is context-dependent and complex.  For example, in some contexts, the asterisk (star) glyph (<code class="value">'*'</code>) represents a footnote or emphasis (when bracketing a passage of text); however, in some documents or executable programs it is equivalent to the mathematical multiplication operation, while in other documents or executable programs, that function is reserved for the multiplication symbol (<code class="value">'&#xD7;'</code>, Unicode value <code class="value">U+00D7</code>) or the Latin small letter <code class="value">'x'</code> (due to the lack of a multiplication key on many keyboards and the superficial resemblance of the glyphs <code class="value">'&#xD7;'</code> and <code class="value">'x'</code>).  Thus, the semantic meaning or function of character representations is outside the scope of this specification.</p>
         
         <div>
           <h4><a id="keys-unicode" href="#keys-unicode">6.2.1 Key Values and Unicode</a></h4>
@@ -4949,7 +4987,7 @@
   } 
             </code></pre>
           </div>
-          <p>In addition, because Unicode categorizes each assigned <a class="def" href="#glossary-unicode-code-point">code point</a> into a group of code points used by a particular human writing system, even more advanced capabilities are possible.  For example, a content author can match characters from a particular human script (e.g. Tibetan) using a regular expression such as <code class="example inline">\p{Tibetan}</code>, to filter out other characters, or discover if a <a class="def" href="#glossary-unicode-code-point">code point</a> is in a certain code block (range of code points), using a regular expression like <code class="example inline">\p{InCyrillic}</code>.</p>
+          <p>In addition, because Unicode categorizes each assigned <a class="def" href="#glossary-unicode-code-point">code point</a> into a group of code points used by a particular human writing system, even more advanced capabilities are possible.  For example, a content author can match characters from a particular human script (e.g., Tibetan) using a regular expression such as <code class="example inline">\p{Tibetan}</code>, to filter out other characters, or discover if a <a class="def" href="#glossary-unicode-code-point">code point</a> is in a certain code block (range of code points), using a regular expression like <code class="example inline">\p{InCyrillic}</code>.</p>
           <p>To facilitate this, implementations should support Unicode range detection using regular expressions, in a manner such as the Perl Compatible Regular Expressions (PCRE) [<a href="#references-pcre">PCRE</a>].</p>
         </div>
 
@@ -4964,18 +5002,18 @@
             <ol>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Shift'</code>, <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'Q'</code></li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'Q'</code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Shift'</code></li>
             </ol>
           </div>
-          <p>The following example describes an alternate sequence of keys to the example above, where the <code class="value">'Shift'</code> key is released before the <code class="value">'Q'</code> key.  The key value for the key labeled <code class="value">'Q'</code> will revert to its unshifted value for the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event, after the production of the <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event, thus:</p>
+          <p>The following example describes an alternate sequence of keys to the example above, where the <code class="value">'Shift'</code> key is released before the <code class="value">'Q'</code> key.  The key value for the key labeled <code class="value">'Q'</code> will revert to its unshifted value for the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event, after the production of the <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event, thus:</p>
           <div class="example" id="example-keyvalue_Q_keyup">
             <p><strong>Example:</strong></p>
             <ol>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Shift'</code>, <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'Q'</code></li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'Q'</code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Shift'</code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'q'</code> (<code class="value">U+0071</code>, Latin Small Letter Q key)</li>
             </ol>
@@ -5012,7 +5050,7 @@
                 <i class="issue" id="issue-key-intercept"><strong>Issue:</strong> is this correct for the case of composition events?</i>
               </li>
               <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a>: <code class="value">'ê'</code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'ê'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_IME'</code>)</li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'ê'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_IME'</code>)</li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'e'</code> (<code class="value">U+0065</code>, Latin Small Letter E key)</li>
             </ol>
           </div>
@@ -5026,7 +5064,7 @@
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">\u0302</code> (Combining Circumflex Accent key)</li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'q'</code> (<code class="value">U+0071</code>, The Latin Small Letter Q key)</li>
               <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a>: <code class="value">''</code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'q'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_KEYBOARD'</code>)</li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'q'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_KEYBOARD'</code>)</li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'q'</code> (<code class="value">U+0071</code>, The Latin Small Letter Q key)</li>
             </ol>
           </div>
@@ -5037,7 +5075,7 @@
 
           <p>This specification includes a model for <a class="def" href="#glossary-ime">input method editors (IMEs)</a>, through the <a href="#events-compositionevents">CompositionEvent</a> interface and events.  However, composition events and keyboard events do not necessarily map as a one-to-one relationship.  As an example, receiving a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> for the <a href="#key-Accept"><code class="value keyname">'Accept'</code></a> key value does not necessarily imply that the text currently selected in the <a class="def" href="#glossary-ime">IME</a> is being accepted, but indicates only that a keystroke happened, disconnected from the <a class="def" href="#glossary-ime">IME</a> Accept functionality (which would normally result in a <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event in most <a class="def" href="#glossary-ime">IME</a> systems).  Keyboard events cannot be used to determine the current state of the input method editor, which should be obtained through the <a href="#events-CompositionEvent-data"><code>data</code></a> attribute of the <a href="#events-compositionevents">CompositionEvent</a> interface.  Additionally, <a class="def" href="#glossary-ime">IME</a> systems and devices vary in their functionality, and in which keys are used for activating that functionality, such that the <code class="value">'Convert'</code> and <code class="value">'Accept'</code> keys may be represented by other available keys.</p>
           <p>Keyboard events correspond to the events generated by the input device after the keyboard layout mapping but before the processing of the input method editor.</p>
-          <p>The following example describes a possible sequence of keys to generate the Unicode character &#x5E02; (Kanji character, part of CJK Unified Ideographs) using Japanese input methods. This example assumes that the input method editor is activated and in the Japanese-Romaji input mode. The keys <code class="value">'Convert'</code> and <code class="value">'Accept'</code> may be replaced by others depending on the input device in use and the configuration of the IME, e.g. it could be respectively <code class="value">U+0020</code> (Space key) and <code class="value">'Enter'</code>. <span class="note" id="_54"><strong>Note:</strong><code class="value">'&#x8A69;'</code> ("poem") and <code class="value">'&#x5E02;'</code> ("city") are homophones, both pronounced “shi”, so the user must use the <code class="value">'Convert'</code> key to select the proper option.</span></p>
+          <p>The following example describes a possible sequence of keys to generate the Unicode character &#x5E02; (Kanji character, part of CJK Unified Ideographs) using Japanese input methods. This example assumes that the input method editor is activated and in the Japanese-Romaji input mode. The keys <code class="value">'Convert'</code> and <code class="value">'Accept'</code> may be replaced by others depending on the input device in use and the configuration of the IME, e.g., it could be respectively <code class="value">U+0020</code> (Space key) and <code class="value">'Enter'</code>. <span class="note" id="_54"><strong>Note:</strong><code class="value">'&#x8A69;'</code> ("poem") and <code class="value">'&#x5E02;'</code> ("city") are homophones, both pronounced “shi”, so the user must use the <code class="value">'Convert'</code> key to select the proper option.</span></p>
           <div class="example" id="example-compo">
             <p><strong>Example:</strong></p>
             <ol>
@@ -5054,11 +5092,11 @@
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Convert'</code></li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Accept'</code></li>
               <li><a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a>: <code class="value">'&#x5E02;'</code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'&#x5E02;'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_IME'</code>)</li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'&#x5E02;'</code> (<code>"inputMethod"</code>: <code class="value">'DOM_INPUT_METHOD_IME'</code>)</li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Accept'</code></li>
             </ol>
           </div>
-          <p>IME composition may also be canceled as in the following example, with conditions identical to the previous example.  The key <a href="#key-Cancel"><code class="value keyname">'Cancel'</code></a> may also be replaced by others depending on the input device in use and the configuration of the IME, e.g. it could be "\u001B" (Escape key).</p>
+          <p>IME composition may also be canceled as in the following example, with conditions identical to the previous example.  The key <a href="#key-Cancel"><code class="value keyname">'Cancel'</code></a> may also be replaced by others depending on the input device in use and the configuration of the IME, e.g., it could be "\u001B" (Escape key).</p>
           <div class="example" id="example-compo_cancel">
             <p><strong>Example:</strong></p>
             <ol>
@@ -5090,17 +5128,17 @@
         <div>
           <h4><a id="keys-cancelable_keys" href="#keys-cancelable_keys">6.2.5 Default actions and cancelable keyboard events</a></h4>
 
-          <p>Canceling the <a class="def" href="#glossary-default-action">default action</a> of a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event must not affect its respective <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event, but it must prevent the respective <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event from being generated. The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
+          <p>Canceling the <a class="def" href="#glossary-default-action">default action</a> of a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event must not affect its respective <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event, but it must prevent the respective <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event from being generated. The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
           <div class="example" id="example-cancel_keys">
             <p><strong>Example:</strong></p>
             <ol>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Shift'</code>, <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li>
-                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
+                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g., by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
               </li>
               <li>
-                <em>No <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event is generated</em>
+                <em>No <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event is generated</em>
               </li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Shift'</code></li>
@@ -5112,10 +5150,10 @@
             <ol>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Shift'</code>, <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li>
-                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
+                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g., by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
               </li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'Q'</code></li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'Q'</code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Q'</code> (<code class="value">U+0051</code>, Latin Capital Letter Q key), <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Shift'</code></li>
             </ol>
@@ -5124,24 +5162,24 @@
 <!-- <p>If the key is a modifier key, the keystroke must not be taken into account for the modifiers states. The following example describes a possible sequence of keys to generate the Unicode character Q (Latin Capital Letter Q) on a PC/AT US keyboard using a US mapping:</p>
           <ol>
             <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'Shift'</code>, <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
-            <li><em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em></li>
+            <li><em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g., by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em></li>
             <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'q'</code> (<code class="value">U+0071</code>, Latin Small Letter Q key), no <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
-            <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'q'</code></li>
+            <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'q'</code></li>
             <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'q'</code> (<code class="value">U+0071</code>, Latin Small Letter Q key), no <code class="attribute-name"><a href="#events-MouseEvent-shiftKey">shiftKey</a></code></li>
             <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'Shift'</code></li>
           </ol> -->
-          <p>If the key is part of a sequence of several keystrokes, whether it is a <a class="def" href="#glossary-dead-key">dead key</a> or it is contributing to an Input Method Editor sequence, the keystroke shall be ignored (not taken into account) only if the <a class="def" href="#glossary-default-action">default action</a> is canceled on the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event. Canceling a <a class="def" href="#glossary-dead-key">dead key</a> on a <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event has no effect on <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> events. The following example uses the keystrokes <code class="value">U+0302</code> (Combining Circumflex Accent key) and the key marked <code class="value">'e'</code> (<code class="value">U+0065</code>, Latin Small Letter E key) (on a PC/AT french keyboard using a french mapping and without any modifier activated):</p>
+          <p>If the key is part of a sequence of several keystrokes, whether it is a <a class="def" href="#glossary-dead-key">dead key</a> or it is contributing to an Input Method Editor sequence, the keystroke shall be ignored (not taken into account) only if the <a class="def" href="#glossary-default-action">default action</a> is canceled on the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event. Canceling a <a class="def" href="#glossary-dead-key">dead key</a> on a <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event has no effect on <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> events. The following example uses the keystrokes <code class="value">U+0302</code> (Combining Circumflex Accent key) and the key marked <code class="value">'e'</code> (<code class="value">U+0065</code>, Latin Small Letter E key) (on a PC/AT french keyboard using a french mapping and without any modifier activated):</p>
           LATIN SMALL LETTER E WITH ACUTE' (U+00E9)
           <div class="example" id="example-default_action_cancel">
             <p><strong>Example:</strong></p>
             <ol>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">U+0302</code> (Combining Circumflex Accent key)</li>
               <li>
-                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g. by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
+                <em>The <a class="def" href="#glossary-default-action">default action</a> of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event is prevented, e.g., by invoking <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> during the dispatch of the keydown event object</em>
               </li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">U+0302</code> (Combining Circumflex Accent key)</li>
               <li><a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>: <code class="value">'é'</code> (<code class="value">U+00E9</code>, LATIN SMALL LETTER E WITH ACUTE)</li>
-              <li><a class="eventtype" href="#event-type-textInput"><code>textInput</code></a>: <code class="value">'é'</code></li>
+              <li><a class="eventtype" href="#event-type-textinput"><code>textinput</code></a>: <code class="value">'é'</code></li>
               <li><a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>: <code class="value">'é'</code></li>
             </ol>
           </div>
@@ -5193,7 +5231,7 @@
           <div class="example" id="example-keyvalues">
             <p><strong>Examples:</strong></p>
             <ul>
-              <li>On a PC/AT US keyboard with a right-handed single-hand Dvorak keyboard mapping, the key labeled <code class="value">'Q'</code> maps to the key values <code class="value">'5'</code> (unmodified) and <code class="value">'%'</code> (shifted).  The primary function of this key is to generate the character <code class="value">'5'</code> (<code class="value">U+0035</code>).  Since this character is a character (in Unicode general category <abbr title="Number, Decimal Digit">Nd</abbr>), the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> and <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute values for the unmodified key will be <code class="value">'5'</code>.</li>
+              <li>On a PC/AT US keyboard with a right-handed single-hand Dvorak <a class="def" href="#glossary-key-mapping">key mapping</a>, the key labeled <code class="value">'Q'</code> maps to the key values <code class="value">'5'</code> (unmodified) and <code class="value">'%'</code> (shifted).  The primary function of this key is to generate the character <code class="value">'5'</code> (<code class="value">U+0035</code>).  Since this character is a character (in Unicode general category <abbr title="Number, Decimal Digit">Nd</abbr>), the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> and <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute values for the unmodified key will be <code class="value">'5'</code>.</li>
               <li>On a French PC keyboard with a standard French mapping, the primary function of the <code class="value">'^'</code> key is as a <a class="def" href="#glossary-dead-key">dead key</a> for the circumflex diacritical mark.  This corresponds to the combining Unicode character <code class="value">U+0302</code>.  Since this character is in general category <abbr title="Mark, Nonspacing">Mn</abbr>, the key value shall be <code class="value">U+0302</code>.</li>
               <li>On a Korean PC keyboard with a standard Korean mapping, the primary function of the <code class="value">'Ha/En'</code> key is to switch between Hangul and English input.  The predefined key value list has an appropriate entry for this key, <code class="value">'HangulMode'</code>, so this shall be the key value.</li>
               <li>On some models of mobile devices, the primary function of the key with a picture of a calendar on it is to launch the calendaring program. Since there is no Unicode character that corresponds to this function, and there is no appropriate entry in the predefined key value list, a new value may be devised, such as <code class="value">'Calendar'</code>.</li>
@@ -5219,8 +5257,8 @@
         <div>
           <h4><a id="key-values" href="#key-values">6.2.7 Key Values Set</a></h4>
 
-          <p>This section defines a list of key values which implementations must support, at a minimum, in addition to support for the full range of Unicode [<a href="#references-Unicode">Unicode</a>] codepoints.  Implementations may support additional key values, in a manner conforming to the <a href="#keys-Guide">guidelines for selecting and defining key values</a>.  Each key value defines one or both of the following: a <a class="def" href="#glossary-character-value">character value</a> and a <a class="def" href="#glossary-key-value">key value</a>.  The <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute of an event must always contain one of these control key or character values (even if the value is <code>'Unidentified'</code>), and the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute must have a value if the key represents a printable character.  If the key represents one of the set of printable control characters which has a Unicode character entry, such as the tab key, the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute must have the key value (e.g. <a href="#key-Tab"><code class="value keyname">'Tab'</code></a>), while the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute must have the Unicode character value equivalent (e.g. <a href="#key-U-0009"><code class="value charval">\u0009</code></a>).  This affords content authors the opportunity to deal with the key as a control key or as direct input into the text stream.</p>  
-          <p>The <a class="def" href="#glossary-key-value">key values</a> defined in this specification are based on the sets of keycodes from the <code>java.awt.event.KeyEvent</code> interface of the Java Platform, Standard Edition 6 API Specification [<cite><a class="informative" href="#references-KeyEvent">KeyEvent for Java</a></cite>], and the <code>System.Windows.Forms.Keys</code> key enumeration of the Microsoft .NET Framework 4.0 Class Library [<cite><a class="informative" href="#references-Keys">Keys enumeration for .Net</a></cite>].  The <a class="def" href="#glossary-character-value">character values</a> defined in this specification are derived from the Unicode standard [<a href="#references-Unicode">Unicode</a>].</p>
+          <p>This section defines a list of key values which implementations must support, at a minimum, in addition to support for the full range of Unicode [<a href="#references-Unicode">Unicode</a>] codepoints.  Implementations may support additional key values, in a manner conforming to the <a href="#keys-Guide">guidelines for selecting and defining key values</a>.  Each key value defines one or both of the following: a <a class="def" href="#glossary-character-value">character value</a> and a <a class="def" href="#glossary-key-value">key value</a>.  The <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute of an event must always contain one of these control key or character values (even if the value is <code>'Unidentified'</code>), and the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute must have a value if the key represents a printable character.  If the key represents one of the set of printable control characters which has a Unicode character entry, such as the tab key, the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute must have the key value (e.g., <a href="#key-Tab"><code class="value keyname">'Tab'</code></a>), while the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attribute must have the Unicode character value equivalent (e.g., <a href="#key-U-0009"><code class="value charval">\u0009</code></a>).  This affords content authors the opportunity to deal with the key as a control key or as direct input into the text stream.</p>  
+          <p>The <a class="def" href="#glossary-key-value">key values</a> defined in this specification are based in part on the sets of keycodes from the <code>java.awt.event.KeyEvent</code> interface of the Java Platform, Standard Edition 6 API Specification [<cite><a class="informative" href="#references-KeyEvent">KeyEvent for Java</a></cite>], and the <code>System.Windows.Forms.Keys</code> key enumeration of the Microsoft .NET Framework 4.0 Class Library [<cite><a class="informative" href="#references-Keys">Keys enumeration for .Net</a></cite>].  The <a class="def" href="#glossary-character-value">character values</a> defined in this specification are derived from the Unicode standard [<a href="#references-Unicode">Unicode</a>].</p>
           <p class="note" id="_56"><strong>Note:</strong> The key names <code class="value">'NumPad0'</code>, <code class="value">'NumPad1'</code>, <code class="value">'NumPad2'</code>, <code class="value">'NumPad3'</code>, <code class="value">'NumPad4'</code>, <code class="value">'NumPad5'</code>, <code class="value">'NumPad6'</code>, <code class="value">'NumPad7'</code>, <code class="value">'NumPad8'</code>, and <code class="value">'NumPad9'</code>, found in some keyboard enumeration sets, are not distinguished from other numerical key values in this set; a content author may use the <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> attribute to discover if a key originated from the numeric keypad.</p>
           <p>Future versions of this specification may include key values not included here, which have become common since the publication of this specification.</p>
 <!-- <p>Javascript escaped characters may have issues because they are based on UTF-16 encoding, in that it uses surrogate pairs for values outside the Basic Multilingual Plane.</p> -->
@@ -5244,483 +5282,919 @@
           </ul>
           
           <div id="key-values-list">
-          
-          <dl id="key-value-set">
-            <dt><a id="key-Accept"><code class="value keyname">'Accept'</code></a></dt>
-            <dd>The Accept (Commit, OK) key.</dd>
-
-            <dt><a id="key-Add"><code class="value keyname">'Add'</code></a></dt>
-            <dd>The Add key.</dd>
-
-            <dt><a id="key-Again"><code class="value keyname">'Again'</code></a></dt>
-            <dd>The Again key.</dd>
-
-            <dt><a id="key-AllCandidates"><code class="value keyname">'AllCandidates'</code></a></dt>
-            <dd>The All Candidates key.</dd>
-
-            <dt><a id="key-Alphanumeric"><code class="value keyname">'Alphanumeric'</code></a></dt>
-            <dd>The Alphanumeric key.</dd>
-
-            <dt><a id="key-Alt"><code class="value keyname">'Alt'</code></a></dt>
-            <dd>The Alt (Menu) key.</dd>
-
-            <dt><a id="key-AltGraph"><code class="value keyname">'AltGraph'</code></a></dt>
-            <dd>The Alt-Graph key.</dd>
-
-            <dt><a id="key-Apps"><code class="value keyname">'Apps'</code></a></dt>
-            <dd>The Application key.</dd>
-
-            <dt><a id="key-Attn"><code class="value keyname">'Attn'</code></a></dt>
-            <dd>The ATTN key.</dd>
-
-            <dt><a id="key-BrowserBack"><code class="value keyname">'BrowserBack'</code></a></dt>
-            <dd>The Browser Back key.</dd>
-
-            <dt><a id="key-BrowserFavorites"><code class="value keyname">'BrowserFavorites'</code></a></dt>
-            <dd>The Browser Favorites key.</dd>
-
-            <dt><a id="key-BrowserForward"><code class="value keyname">'BrowserForward'</code></a></dt>
-            <dd>The Browser Forward key.</dd>
-
-            <dt><a id="key-BrowserHome"><code class="value keyname">'BrowserHome'</code></a></dt>
-            <dd>The Browser Home key.</dd>
-
-            <dt><a id="key-BrowserRefresh"><code class="value keyname">'BrowserRefresh'</code></a></dt>
-            <dd>The Browser Refresh key.</dd>
-
-            <dt><a id="key-BrowserSearch"><code class="value keyname">'BrowserSearch'</code></a></dt>
-            <dd>The Browser Search key.</dd>
-
-            <dt><a id="key-BrowserStop"><code class="value keyname">'BrowserStop'</code></a></dt>
-            <dd>The Browser Stop key.</dd>
-
-            <dt><a id="key-Camera"><code class="value keyname">'Camera'</code></a></dt>
-            <dd>The Camera key.</dd>
-
-            <dt><a id="key-CapsLock"><code class="value keyname">'CapsLock'</code></a></dt>
-            <dd>The Caps Lock (Capital) key.</dd>
-
-            <dt><a id="key-Clear"><code class="value keyname">'Clear'</code></a></dt>
-            <dd>The Clear key.</dd>
-
-            <dt><a id="key-CodeInput"><code class="value keyname">'CodeInput'</code></a></dt>
-            <dd>The Code Input key.</dd>
-
-            <dt><a id="key-Compose"><code class="value keyname">'Compose'</code></a></dt>
-            <dd>The Compose key.</dd>
-
-            <dt><a id="key-Control"><code class="value keyname">'Control'</code></a></dt>
-            <dd>The Control (Ctrl) key.</dd>
-
-            <dt><a id="key-Crsel"><code class="value keyname">'Crsel'</code></a></dt>
-            <dd>The Crsel key.</dd>
-
-            <dt><a id="key-Convert"><code class="value keyname">'Convert'</code></a></dt>
-            <dd>The Convert key.</dd>
-
-            <dt><a id="key-Copy"><code class="value keyname">'Copy'</code></a></dt>
-            <dd>The Copy key.</dd>
-
-            <dt><a id="key-Cut"><code class="value keyname">'Cut'</code></a></dt>
-            <dd>The Cut key.</dd>
-
-            <dt><a id="key-Decimal"><code class="value keyname">'Decimal'</code></a></dt>
-            <dd>The Decimal key.</dd>
-
-            <dt><a id="key-Divide"><code class="value keyname">'Divide'</code></a></dt>
-            <dd>The Divide key.</dd>
-
-            <dt><a id="key-Down"><code class="value keyname">'Down'</code></a></dt>
-            <dd>The Down Arrow key.</dd>
-
-            <dt><a id="key-DownLeft"><code class="value keyname">'DownLeft'</code></a></dt>
-            <dd>The diagonal Down-Left Arrow key.</dd>
-
-            <dt><a id="key-DownRight"><code class="value keyname">'DownRight'</code></a></dt>
-            <dd>The diagonal Down-Right Arrow key.</dd>
-
-            <dt><a id="key-Eject"><code class="value keyname">'Eject'</code></a></dt>
-            <dd>The Eject key.</dd>
-
-            <dt><a id="key-End"><code class="value keyname">'End'</code></a></dt>
-            <dd>The End key.</dd>
-
-            <dt><a id="key-Enter"><code class="value keyname">'Enter'</code></a></dt>
-            <dd>The Enter key.
-             <span class="note" id="_58"><strong>Note:</strong> This key value must also be used for the <code>Return</code> (Macintosh numpad) key.</span>
-            </dd>
-
-            <dt><a id="key-EraseEof"><code class="value keyname">'EraseEof'</code></a></dt>
-            <dd>The Erase EOF key.</dd>
-
-            <dt><a id="key-Execute"><code class="value keyname">'Execute'</code></a></dt>
-            <dd>The Execute key.</dd>
-
-            <dt><a id="key-Exsel"><code class="value keyname">'Exsel'</code></a></dt>
-            <dd>The Exsel key.</dd>
-
-            <dt><a id="key-Fn"><code class="value keyname">'Fn'</code></a></dt>
-            <dd>The Function switch key.</dd>
-
-            <dt><a id="key-F1"><code class="value keyname">'F1'</code></a></dt>
-            <dd>The F1 key.</dd>
-
-            <dt><a id="key-F2"><code class="value keyname">'F2'</code></a></dt>
-            <dd>The F2 key.</dd>
-
-            <dt><a id="key-F3"><code class="value keyname">'F3'</code></a></dt>
-            <dd>The F3 key.</dd>
-
-            <dt><a id="key-F4"><code class="value keyname">'F4'</code></a></dt>
-            <dd>The F4 key.</dd>
-
-            <dt><a id="key-F5"><code class="value keyname">'F5'</code></a></dt>
-            <dd>The F5 key.</dd>
-
-            <dt><a id="key-F6"><code class="value keyname">'F6'</code></a></dt>
-            <dd>The F6 key.</dd>
-
-            <dt><a id="key-F7"><code class="value keyname">'F7'</code></a></dt>
-            <dd>The F7 key.</dd>
-
-            <dt><a id="key-F8"><code class="value keyname">'F8'</code></a></dt>
-            <dd>The F8 key.</dd>
-
-            <dt><a id="key-F9"><code class="value keyname">'F9'</code></a></dt>
-            <dd>The F9 key.</dd>
-
-            <dt><a id="key-F10"><code class="value keyname">'F10'</code></a></dt>
-            <dd>The F10 key.</dd>
-
-            <dt><a id="key-F11"><code class="value keyname">'F11'</code></a></dt>
-            <dd>The F11 key.</dd>
-
-            <dt><a id="key-F12"><code class="value keyname">'F12'</code></a></dt>
-            <dd>The F12 key.</dd>
-
-            <dt><a id="key-F13"><code class="value keyname">'F13'</code></a></dt>
-            <dd>The F13 key.</dd>
-
-            <dt><a id="key-F14"><code class="value keyname">'F14'</code></a></dt>
-            <dd>The F14 key.</dd>
-
-            <dt><a id="key-F15"><code class="value keyname">'F15'</code></a></dt>
-            <dd>The F15 key.</dd>
-
-            <dt><a id="key-F16"><code class="value keyname">'F16'</code></a></dt>
-            <dd>The F16 key.</dd>
-
-            <dt><a id="key-F17"><code class="value keyname">'F17'</code></a></dt>
-            <dd>The F17 key.</dd>
-
-            <dt><a id="key-F18"><code class="value keyname">'F18'</code></a></dt>
-            <dd>The F18 key.</dd>
-
-            <dt><a id="key-F19"><code class="value keyname">'F19'</code></a></dt>
-            <dd>The F19 key.</dd>
-
-            <dt><a id="key-F20"><code class="value keyname">'F20'</code></a></dt>
-            <dd>The F20 key.</dd>
-
-            <dt><a id="key-F21"><code class="value keyname">'F21'</code></a></dt>
-            <dd>The F21 key.</dd>
-
-            <dt><a id="key-F22"><code class="value keyname">'F22'</code></a></dt>
-            <dd>The F22 key.</dd>
-
-            <dt><a id="key-F23"><code class="value keyname">'F23'</code></a></dt>
-            <dd>The F23 key.</dd>
-
-            <dt><a id="key-F24"><code class="value keyname">'F24'</code></a></dt>
-            <dd>The F24 key.</dd>
-
-            <dt><a id="key-FinalMode"><code class="value keyname">'FinalMode'</code></a></dt>
-            <dd>The Final Mode (Final) key used on some asian keyboards.</dd>
-
-            <dt><a id="key-Find"><code class="value keyname">'Find'</code></a></dt>
-            <dd>The Find key.</dd>
-
-            <dt><a id="key-FullWidth"><code class="value keyname">'FullWidth'</code></a></dt>
-            <dd>The Full-Width Characters key.</dd>
-
-            <dt><a id="key-HalfWidth"><code class="value keyname">'HalfWidth'</code></a></dt>
-            <dd>The Half-Width Characters key.</dd>
-
-            <dt><a id="key-HangulMode"><code class="value keyname">'HangulMode'</code></a></dt>
-            <dd>The Hangul (Korean characters) Mode key.</dd>
-
-            <dt><a id="key-HanjaMode"><code class="value keyname">'HanjaMode'</code></a></dt>
-            <dd>The Hanja (Korean characters) Mode key.</dd>
-
-            <dt><a id="key-Help"><code class="value keyname">'Help'</code></a></dt>
-            <dd>The Help key.</dd>
-
-            <dt><a id="key-Hiragana"><code class="value keyname">'Hiragana'</code></a></dt>
-            <dd>The Hiragana (Japanese Kana characters) key.</dd>
-
-            <dt><a id="key-Home"><code class="value keyname">'Home'</code></a></dt>
-            <dd>The Home key.</dd>
-
-            <dt><a id="key-Insert"><code class="value keyname">'Insert'</code></a></dt>
-            <dd>The Insert (Ins) key.</dd>
-
-            <dt><a id="key-JapaneseHiragana"><code class="value keyname">'JapaneseHiragana'</code></a></dt>
-            <dd>The Japanese-Hiragana key.</dd>
-
-            <dt><a id="key-JapaneseKatakana"><code class="value keyname">'JapaneseKatakana'</code></a></dt>
-            <dd>The Japanese-Katakana key.</dd>
-
-            <dt><a id="key-JapaneseRomaji"><code class="value keyname">'JapaneseRomaji'</code></a></dt>
-            <dd>The Japanese-Romaji key.</dd>
-
-            <dt><a id="key-JunjaMode"><code class="value keyname">'JunjaMode'</code></a></dt>
-            <dd>The Junja Mode key.</dd>
-
-            <dt><a id="key-KanaMode"><code class="value keyname">'KanaMode'</code></a></dt>
-            <dd>The Kana Mode (Kana Lock) key.</dd>
-
-            <dt><a id="key-KanjiMode"><code class="value keyname">'KanjiMode'</code></a></dt>
-            <dd>The Kanji (Japanese name for ideographic characters of Chinese origin) Mode key.</dd>
-
-            <dt><a id="key-Katakana"><code class="value keyname">'Katakana'</code></a></dt>
-            <dd>The Katakana (Japanese Kana characters) key.</dd>
-
-            <dt><a id="key-LaunchApplication1"><code class="value keyname">'LaunchApplication1'</code></a></dt>
-            <dd>The Start Application One key.</dd>
-
-            <dt><a id="key-LaunchApplication2"><code class="value keyname">'LaunchApplication2'</code></a></dt>
-            <dd>The Start Application Two key.</dd>
-
-            <dt><a id="key-LaunchMail"><code class="value keyname">'LaunchMail'</code></a></dt>
-            <dd>The Start Mail key.</dd>
-
-            <dt><a id="key-Left"><code class="value keyname">'Left'</code></a></dt>
-            <dd>The Left Arrow key.</dd>
-
-            <dt><a id="key-Menu"><code class="value keyname">'Menu'</code></a></dt>
-            <dd>The Menu key.</dd>
-
-            <dt><a id="key-Meta"><code class="value keyname">'Meta'</code></a></dt>
-            <dd>The Meta key.
-              <span class="note" id="_59"><strong>Note:</strong> This key value shall be also used for the Apple <code>Command</code> key.</span>
-            </dd>
-
-            <dt><a id="key-MediaNextTrack"><code class="value keyname">'MediaNextTrack'</code></a></dt>
-            <dd>The Media Next Track key.</dd>
-
-            <dt><a id="key-MediaPlayPause"><code class="value keyname">'MediaPlayPause'</code></a></dt>
-            <dd>The Media Play Pause key.</dd>
-
-            <dt><a id="key-MediaPreviousTrack"><code class="value keyname">'MediaPreviousTrack'</code></a></dt>
-            <dd>The Media Previous Track key.</dd>
-
-            <dt><a id="key-MediaStop"><code class="value keyname">'MediaStop'</code></a></dt>
-            <dd>The Media Stop key.</dd>
-
-            <dt><a id="key-ModeChange"><code class="value keyname">'ModeChange'</code></a></dt>
-            <dd>The Mode Change key.</dd>
-
-            <dt><a id="key-NextCandidate"><code class="value keyname">'NextCandidate'</code></a></dt>
-            <dd>The Next Candidate function key.</dd>
-
-            <dt><a id="key-Nonconvert"><code class="value keyname">'Nonconvert'</code></a></dt>
-            <dd>The Nonconvert (Don't Convert) key.</dd>
-
-            <dt><a id="key-NumLock"><code class="value keyname">'NumLock'</code></a></dt>
-            <dd>The Number Lock key.</dd>
-
-            <dt><a id="key-PageDown"><code class="value keyname">'PageDown'</code></a></dt>
-            <dd>The Page Down (Next) key.</dd>
-
-            <dt><a id="key-PageUp"><code class="value keyname">'PageUp'</code></a></dt>
-            <dd>The Page Up key.</dd>
-
-            <dt><a id="key-Paste"><code class="value keyname">'Paste'</code></a></dt>
-            <dd>The Paste key.</dd>
-
-            <dt><a id="key-Pause"><code class="value keyname">'Pause'</code></a></dt>
-            <dd>The Pause key.</dd>
-
-            <dt><a id="key-Play"><code class="value keyname">'Play'</code></a></dt>
-            <dd>The Play key.</dd>
-
-            <dt><a id="key-Power"><code class="value keyname">'Power'</code></a></dt>
-            <dd>The Power key.
-             <span class="note" id="_61"><strong>Note:</strong> Some devices may not expose this key to the operating environment.</span>
-            </dd>
-
-            <dt><a id="key-PreviousCandidate"><code class="value keyname">'PreviousCandidate'</code></a></dt>
-            <dd>The Previous Candidate function key.</dd>
-
-            <dt><a id="key-PrintScreen"><code class="value keyname">'PrintScreen'</code></a></dt>
-            <dd>The Print Screen (PrintScrn, SnapShot) key.</dd>
-
-            <dt><a id="key-Process"><code class="value keyname">'Process'</code></a></dt>
-            <dd>The Process key.</dd>
-
-            <dt><a id="key-Props"><code class="value keyname">'Props'</code></a></dt>
-            <dd>The Props key.</dd>
-
-            <dt><a id="key-Right"><code class="value keyname">'Right'</code></a></dt>
-            <dd>The Right Arrow key.</dd>
-
-            <dt><a id="key-RomanCharacters"><code class="value keyname">'RomanCharacters'</code></a></dt>
-            <dd>The Roman Characters function key.</dd>
-
-            <dt><a id="key-Scroll"><code class="value keyname">'Scroll'</code></a></dt>
-            <dd>The Scroll Lock key.</dd>
-
-            <dt><a id="key-Select"><code class="value keyname">'Select'</code></a></dt>
-            <dd>The Select key.</dd>
-
-            <dt><a id="key-SelectMedia"><code class="value keyname">'SelectMedia'</code></a></dt>
-            <dd>The Select Media key.</dd>
-
-            <dt><a id="key-Separator"><code class="value keyname">'Separator'</code></a></dt>
-            <dd>The Separator key.</dd>
-
-            <dt><a id="key-Shift"><code class="value keyname">'Shift'</code></a></dt>
-            <dd>The Shift key.</dd>
-
-            <dt><a id="key-Soft1"><code class="value keyname">'Soft1'</code></a></dt>
-            <dd>The Soft1 key.</dd>
-
-            <dt><a id="key-Soft2"><code class="value keyname">'Soft2'</code></a></dt>
-            <dd>The Soft2 key.</dd>
-
-            <dt><a id="key-Soft3"><code class="value keyname">'Soft3'</code></a></dt>
-            <dd>The Soft3 key.</dd>
-
-            <dt><a id="key-Soft4"><code class="value keyname">'Soft4'</code></a></dt>
-            <dd>The Soft4 key.</dd>
-
-            <dt><a id="key-Stop"><code class="value keyname">'Stop'</code></a></dt>
-            <dd>The Stop key.</dd>
-
-            <dt><a id="key-Subtract"><code class="value keyname">'Subtract'</code></a></dt>
-            <dd>The Subtract key.</dd>
-
-            <dt><a id="key-SymbolLock"><code class="value keyname">'SymbolLock'</code></a></dt>
-            <dd>The Symbol Lock key.</dd>
-
-            <dt><a id="key-Up"><code class="value keyname">'Up'</code></a></dt>
-            <dd>The Up Arrow key.</dd>
-
-            <dt><a id="key-UpLeft"><code class="value keyname">'UpLeft'</code></a></dt>
-            <dd>The diagonal Up-Left Arrow key.</dd>
-
-            <dt><a id="key-UpRight"><code class="value keyname">'UpRight'</code></a></dt>
-            <dd>The diagonal Up-Right Arrow key.</dd>
-
-            <dt><a id="key-Undo"><code class="value keyname">'Undo'</code></a></dt>
-            <dd>The Undo key.</dd>
-
-            <dt><a id="key-VolumeDown"><code class="value keyname">'VolumeDown'</code></a></dt>
-            <dd>The Volume Down key.</dd>
-
-            <dt><a id="key-VolumeMute"><code class="value keyname">'VolumeMute'</code></a></dt>
-            <dd>The Volume Mute key.</dd>
-
-            <dt><a id="key-VolumeUp"><code class="value keyname">'VolumeUp'</code></a></dt>
-            <dd>The Volume Up key.</dd>
-
-            <dt><a id="key-Win"><code class="value keyname">'Win'</code></a></dt>
-            <dd>The Windows Logo key.</dd>
-
-            <dt><a id="key-Zoom"><code class="value keyname">'Zoom'</code></a></dt>
-            <dd>The Zoom key.</dd>
-
-            <dt><a id="key-Backspace"><code class="value keyname">'Backspace'</code></a></dt>
-            <dt><a id="key-U-0008"><code class="value charval">\u0008</code></a></dt>
-            <dd>The Backspace (Back) key.
-             <span class="note" id="_62"><strong>Note:</strong> This key value shall be also used for the key labeled <code class="value">'delete'</code> MacOS keyboards when not modified by the <code class="value">'Fn'</code> key.</span>
-            </dd>
-
-            <dt><a id="key-Tab"><code class="value keyname">'Tab'</code></a></dt>
-            <dt><a id="key-U-0009"><code class="value charval">\u0009</code></a></dt>
-            <dd>The Horizontal Tabulation (Tab) key.</dd>
-
-            <dt><a id="key-Cancel"><code class="value keyname">'Cancel'</code></a></dt>
-            <dt><a id="key-U-0018"><code class="value charval">\u0018</code></a></dt>
-            <dd>The Cancel key.</dd>
-
-            <dt><a id="key-Esc"><code class="value keyname">'Esc'</code></a></dt>
-            <dt><a id="key-U-001B"><code class="value charval">\u001B</code></a></dt>
-            <dd>The Escape (Esc) key.</dd>
-
-            <dt><a id="key-Spacebar"><code class="value keyname">'Spacebar'</code></a></dt>
-            <dt><a id="key-U-0020"><code class="value charval">\u0020</code></a></dt>
-            <dd>The Space (Spacebar) key: <code class="value charrep">&nbsp;</code>.</dd>
-
-            <dt><a id="key-Del"><code class="value keyname">'Del'</code></a></dt>
-            <dt><a id="key-U-007F"><code class="value charval">\u007F</code></a></dt>
-            <dd>The Delete (Del) Key.
-             <span class="note" id="_63"><strong>Note:</strong> This key value shall be also used for the key labeled <code class="value">'delete'</code> MacOS keyboards when modified by the <code class="value">'Fn'</code> key.</span>
-            </dd>
-
-            <dt><a id="key-DeadGrave"><code class="value keyname">'DeadGrave'</code></a></dt>
-            <dt><a id="key-U-0300"><code class="value charval">\u0300</code></a></dt>
-            <dd>The Combining Grave Accent (Greek Varia, Dead Grave) key.</dd>
-
-            <dt><a id="key-DeadEacute"><code class="value keyname">'DeadEacute'</code></a></dt>
-            <dt><a id="key-U-0301"><code class="value charval">\u0301</code></a></dt>
-            <dd>The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute) key.</dd>
-
-            <dt><a id="key-DeadCircumflex"><code class="value keyname">'DeadCircumflex'</code></a></dt>
-            <dt><a id="key-U-0302"><code class="value charval">\u0302</code></a></dt>
-            <dd>The Combining Circumflex Accent (Hat, Dead Circumflex) key.</dd>
-
-            <dt><a id="key-DeadTilde"><code class="value keyname">'DeadTilde'</code></a></dt>
-            <dt><a id="key-U-0303"><code class="value charval">\u0303</code></a></dt>
-            <dd>The Combining Tilde (Dead Tilde) key.</dd>
-
-            <dt><a id="key-DeadMacron"><code class="value keyname">'DeadMacron'</code></a></dt>
-            <dt><a id="key-U-0304"><code class="value charval">\u0304</code></a></dt>
-            <dd>The Combining Macron (Long, Dead Macron) key.</dd>
-
-            <dt><a id="key-DeadBreve"><code class="value keyname">'DeadBreve'</code></a></dt>
-            <dt><a id="key-U-0306"><code class="value charval">\u0306</code></a></dt>
-            <dd>The Combining Breve (Short, Dead Breve) key.</dd>
-
-            <dt><a id="key-DeadAboveDot"><code class="value keyname">'DeadAboveDot'</code></a></dt>
-            <dt><a id="key-U-0307"><code class="value charval">\u0307</code></a></dt>
-            <dd>The Combining Dot Above (Derivative, Dead Above Dot) key.</dd>
-
-            <dt><a id="key-DeadUmlaut"><code class="value keyname">'DeadUmlaut'</code></a></dt>
-            <dt><a id="key-U-0308"><code class="value charval">\u0308</code></a></dt>
-            <dd>The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika, Double Derivative, Dead Diaeresis) key.</dd>
-
-            <dt><a id="key-DeadAboveRing"><code class="value keyname">'DeadAboveRing'</code></a></dt>
-            <dt><a id="key-U-030A"><code class="value charval">\u030A</code></a></dt>
-            <dd>The Combining Ring Above (Dead Above Ring) key.</dd>
-
-            <dt><a id="key-DeadDoubleacute"><code class="value keyname">'DeadDoubleacute'</code></a></dt>
-            <dt><a id="key-U-030B"><code class="value charval">\u030B</code></a></dt>
-            <dd>The Combining Double Acute Accent (Dead Doubleacute) key.</dd>
-
-            <dt><a id="key-DeadCaron"><code class="value keyname">'DeadCaron'</code></a></dt>
-            <dt><a id="key-U-030C"><code class="value charval">\u030C</code></a></dt>
-            <dd>The Combining Caron (Hacek, V Above, Dead Caron) key.</dd>
-
-            <dt><a id="key-DeadCedilla"><code class="value keyname">'DeadCedilla'</code></a></dt>
-            <dt><a id="key-U-0327"><code class="value charval">\u0327</code></a></dt>
-            <dd>The Combining Cedilla (Dead Cedilla) key.</dd>
-
-            <dt><a id="key-DeadOgonek"><code class="value keyname">'DeadOgonek'</code></a></dt>
-            <dt><a id="key-U-0328"><code class="value charval">\u0328</code></a></dt>
-            <dd>The Combining Ogonek (Nasal Hook, Dead Ogonek) key.</dd>
-
-            <dt><a id="key-DeadIota"><code class="value keyname">'DeadIota'</code></a></dt>
-            <dt><a id="key-U-0345"><code class="value charval">\u0345</code></a></dt>
-            <dd>The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota Subscript, Dead Iota) key.</dd>
-
-            <dt><a id="key-DeadVoicedSound"><code class="value keyname">'DeadVoicedSound'</code></a></dt>
-            <dt><a id="key-U-3099"><code class="value charval">\u3099</code></a></dt>
-            <dd>The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key.</dd>
-
-            <dt><a id="key-DeadSemivoicedSound"><code class="value keyname">'DeadSemivoicedSound'</code></a></dt>
-            <dt><a id="key-U-309A"><code class="value charval">\u309A</code></a></dt>
-            <dd>The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced Sound) key.</dd>
+            <table id="table-key-values" summary="">
+              <tr>
+                <th>Key</th>
+                <th>Char</th>
+                <th>Typical Usage</th>
+              </tr>
+
+              <tr>
+                <td><a id="key-Accept"><code class="value keyname">'Accept'</code></a></td>
+                <td> - </td>
+                <td>The Accept (Commit, OK) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Add"><code class="value keyname">'Add'</code></a></td>
+                <td> - </td>
+                <td>The Add key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Again"><code class="value keyname">'Again'</code></a></td>
+                <td> - </td>
+                <td>The Again key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-AllCandidates"><code class="value keyname">'AllCandidates'</code></a></td>
+                <td> - </td>
+                <td>The All Candidates key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Alphanumeric"><code class="value keyname">'Alphanumeric'</code></a></td>
+                <td> - </td>
+                <td>The Alphanumeric key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Alt"><code class="value keyname">'Alt'</code></a></td>
+                <td> - </td>
+                <td>The Alt (Menu) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-AltGraph"><code class="value keyname">'AltGraph'</code></a></td>
+                <td> - </td>
+                <td>The Alt-Graph key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Apps"><code class="value keyname">'Apps'</code></a></td>
+                <td> - </td>
+                <td>The Application key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Attn"><code class="value keyname">'Attn'</code></a></td>
+                <td> - </td>
+                <td>The ATTN key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrightnessDown"><code class="value keyname">'BrightnessDown'</code></a></td>
+                <td> - </td>
+                <td>The Brightness Down key.  Typically controls the display brightness.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrightnessUp"><code class="value keyname">'BrightnessUp'</code></a></td>
+                <td> - </td>
+                <td>The Brightness Up key.  Typically controls the display brightness.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserBack"><code class="value keyname">'BrowserBack'</code></a></td>
+                <td> - </td>
+                <td>The Browser Back key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserFavorites"><code class="value keyname">'BrowserFavorites'</code></a></td>
+                <td> - </td>
+                <td>The Browser Favorites key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserForward"><code class="value keyname">'BrowserForward'</code></a></td>
+                <td> - </td>
+                <td>The Browser Forward key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserHome"><code class="value keyname">'BrowserHome'</code></a></td>
+                <td> - </td>
+                <td>The Browser Home key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserRefresh"><code class="value keyname">'BrowserRefresh'</code></a></td>
+                <td> - </td>
+                <td>The Browser Refresh key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserSearch"><code class="value keyname">'BrowserSearch'</code></a></td>
+                <td> - </td>
+                <td>The Browser Search key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-BrowserStop"><code class="value keyname">'BrowserStop'</code></a></td>
+                <td> - </td>
+                <td>The Browser Stop key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Camera"><code class="value keyname">'Camera'</code></a></td>
+                <td> - </td>
+                <td>The Camera key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-CapsLock"><code class="value keyname">'CapsLock'</code></a></td>
+                <td> - </td>
+                <td>The Caps Lock (Capital) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Clear"><code class="value keyname">'Clear'</code></a></td>
+                <td> - </td>
+                <td>The Clear key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-CodeInput"><code class="value keyname">'CodeInput'</code></a></td>
+                <td> - </td>
+                <td>The Code Input key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Compose"><code class="value keyname">'Compose'</code></a></td>
+                <td> - </td>
+                <td>The Compose key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Control"><code class="value keyname">'Control'</code></a></td>
+                <td> - </td>
+                <td>The Control (Ctrl) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Crsel"><code class="value keyname">'Crsel'</code></a></td>
+                <td> - </td>
+                <td>The Crsel key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Convert"><code class="value keyname">'Convert'</code></a></td>
+                <td> - </td>
+                <td>The Convert key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Copy"><code class="value keyname">'Copy'</code></a></td>
+                <td> - </td>
+                <td>The Copy key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Cut"><code class="value keyname">'Cut'</code></a></td>
+                <td> - </td>
+                <td>The Cut key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Decimal"><code class="value keyname">'Decimal'</code></a></td>
+                <td> - </td>
+                <td>The Decimal key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Divide"><code class="value keyname">'Divide'</code></a></td>
+                <td> - </td>
+                <td>The Divide key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Down"><code class="value keyname">'Down'</code></a></td>
+                <td> - </td>
+                <td>The Down Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DownLeft"><code class="value keyname">'DownLeft'</code></a></td>
+                <td> - </td>
+                <td>The diagonal Down-Left Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DownRight"><code class="value keyname">'DownRight'</code></a></td>
+                <td> - </td>
+                <td>The diagonal Down-Right Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Eject"><code class="value keyname">'Eject'</code></a></td>
+                <td> - </td>
+                <td>The Eject key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-End"><code class="value keyname">'End'</code></a></td>
+                <td> - </td>
+                <td>The End key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Enter"><code class="value keyname">'Enter'</code></a></td>
+                <td> - </td>
+                <td>The Enter key.
+                 <span class="note" id="_58"><strong>Note:</strong> This key value must also be used for the <code>Return</code> (Macintosh numpad) key.</span></td>
+              </tr>
+
+              <tr>
+                <td><a id="key-EraseEof"><code class="value keyname">'EraseEof'</code></a></td>
+                <td> - </td>
+                <td>The Erase EOF key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Execute"><code class="value keyname">'Execute'</code></a></td>
+                <td> - </td>
+                <td>The Execute key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Exsel"><code class="value keyname">'Exsel'</code></a></td>
+                <td> - </td>
+                <td>The Exsel key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Fn"><code class="value keyname">'Fn'</code></a></td>
+                <td> - </td>
+                <td>The Function switch key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F1"><code class="value keyname">'F1'</code></a></td>
+                <td> - </td>
+                <td>The F1 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F2"><code class="value keyname">'F2'</code></a></td>
+                <td> - </td>
+                <td>The F2 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F3"><code class="value keyname">'F3'</code></a></td>
+                <td> - </td>
+                <td>The F3 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F4"><code class="value keyname">'F4'</code></a></td>
+                <td> - </td>
+                <td>The F4 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F5"><code class="value keyname">'F5'</code></a></td>
+                <td> - </td>
+                <td>The F5 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F6"><code class="value keyname">'F6'</code></a></td>
+                <td> - </td>
+                <td>The F6 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F7"><code class="value keyname">'F7'</code></a></td>
+                <td> - </td>
+                <td>The F7 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F8"><code class="value keyname">'F8'</code></a></td>
+                <td> - </td>
+                <td>The F8 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F9"><code class="value keyname">'F9'</code></a></td>
+                <td> - </td>
+                <td>The F9 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F10"><code class="value keyname">'F10'</code></a></td>
+                <td> - </td>
+                <td>The F10 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F11"><code class="value keyname">'F11'</code></a></td>
+                <td> - </td>
+                <td>The F11 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F12"><code class="value keyname">'F12'</code></a></td>
+                <td> - </td>
+                <td>The F12 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F13"><code class="value keyname">'F13'</code></a></td>
+                <td> - </td>
+                <td>The F13 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F14"><code class="value keyname">'F14'</code></a></td>
+                <td> - </td>
+                <td>The F14 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F15"><code class="value keyname">'F15'</code></a></td>
+                <td> - </td>
+                <td>The F15 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F16"><code class="value keyname">'F16'</code></a></td>
+                <td> - </td>
+                <td>The F16 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F17"><code class="value keyname">'F17'</code></a></td>
+                <td> - </td>
+                <td>The F17 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F18"><code class="value keyname">'F18'</code></a></td>
+                <td> - </td>
+                <td>The F18 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F19"><code class="value keyname">'F19'</code></a></td>
+                <td> - </td>
+                <td>The F19 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F20"><code class="value keyname">'F20'</code></a></td>
+                <td> - </td>
+                <td>The F20 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F21"><code class="value keyname">'F21'</code></a></td>
+                <td> - </td>
+                <td>The F21 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F22"><code class="value keyname">'F22'</code></a></td>
+                <td> - </td>
+                <td>The F22 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F23"><code class="value keyname">'F23'</code></a></td>
+                <td> - </td>
+                <td>The F23 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-F24"><code class="value keyname">'F24'</code></a></td>
+                <td> - </td>
+                <td>The F24 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-FinalMode"><code class="value keyname">'FinalMode'</code></a></td>
+                <td> - </td>
+                <td>The Final Mode (Final) key used on some asian keyboards.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Find"><code class="value keyname">'Find'</code></a></td>
+                <td> - </td>
+                <td>The Find key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-FullWidth"><code class="value keyname">'FullWidth'</code></a></td>
+                <td> - </td>
+                <td>The Full-Width Characters key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-HalfWidth"><code class="value keyname">'HalfWidth'</code></a></td>
+                <td> - </td>
+                <td>The Half-Width Characters key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-HangulMode"><code class="value keyname">'HangulMode'</code></a></td>
+                <td> - </td>
+                <td>The Hangul (Korean characters) Mode key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-HanjaMode"><code class="value keyname">'HanjaMode'</code></a></td>
+                <td> - </td>
+                <td>The Hanja (Korean characters) Mode key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Help"><code class="value keyname">'Help'</code></a></td>
+                <td> - </td>
+                <td>The Help key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Hiragana"><code class="value keyname">'Hiragana'</code></a></td>
+                <td> - </td>
+                <td>The Hiragana (Japanese Kana characters) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Home"><code class="value keyname">'Home'</code></a></td>
+                <td> - </td>
+                <td>The Home key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Insert"><code class="value keyname">'Insert'</code></a></td>
+                <td> - </td>
+                <td>The Insert (Ins) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-JapaneseHiragana"><code class="value keyname">'JapaneseHiragana'</code></a></td>
+                <td> - </td>
+                <td>The Japanese-Hiragana key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-JapaneseKatakana"><code class="value keyname">'JapaneseKatakana'</code></a></td>
+                <td> - </td>
+                <td>The Japanese-Katakana key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-JapaneseRomaji"><code class="value keyname">'JapaneseRomaji'</code></a></td>
+                <td> - </td>
+                <td>The Japanese-Romaji key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-JunjaMode"><code class="value keyname">'JunjaMode'</code></a></td>
+                <td> - </td>
+                <td>The Junja Mode key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-KanaMode"><code class="value keyname">'KanaMode'</code></a></td>
+                <td> - </td>
+                <td>The Kana Mode (Kana Lock) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-KanjiMode"><code class="value keyname">'KanjiMode'</code></a></td>
+                <td> - </td>
+                <td>The Kanji (Japanese name for ideographic characters of Chinese origin) Mode key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Katakana"><code class="value keyname">'Katakana'</code></a></td>
+                <td> - </td>
+                <td>The Katakana (Japanese Kana characters) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-LaunchApplication1"><code class="value keyname">'LaunchApplication1'</code></a></td>
+                <td> - </td>
+                <td>The Start Application One key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-LaunchApplication2"><code class="value keyname">'LaunchApplication2'</code></a></td>
+                <td> - </td>
+                <td>The Start Application Two key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-LaunchMail"><code class="value keyname">'LaunchMail'</code></a></td>
+                <td> - </td>
+                <td>The Start Mail key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Left"><code class="value keyname">'Left'</code></a></td>
+                <td> - </td>
+                <td>The Left Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Menu"><code class="value keyname">'Menu'</code></a></td>
+                <td> - </td>
+                <td>The Menu key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Meta"><code class="value keyname">'Meta'</code></a></td>
+                <td> - </td>
+                <td>The Meta key.
+                  <span class="note" id="_59">
+                    <strong>Note:</strong> This key value must also be used for the Apple <code>'Command'</code> key.
+                  </span></td>
+              </tr>
+
+              <tr>
+                <td><a id="key-MediaNextTrack"><code class="value keyname">'MediaNextTrack'</code></a></td>
+                <td> - </td>
+                <td>The Media Next Track key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-MediaPlayPause"><code class="value keyname">'MediaPlayPause'</code></a></td>
+                <td> - </td>
+                <td>The Media Play Pause key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-MediaPreviousTrack"><code class="value keyname">'MediaPreviousTrack'</code></a></td>
+                <td> - </td>
+                <td>The Media Previous Track key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-MediaStop"><code class="value keyname">'MediaStop'</code></a></td>
+                <td> - </td>
+                <td>The Media Stop key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-ModeChange"><code class="value keyname">'ModeChange'</code></a></td>
+                <td> - </td>
+                <td>The Mode Change key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-NextCandidate"><code class="value keyname">'NextCandidate'</code></a></td>
+                <td> - </td>
+                <td>The Next Candidate function key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Nonconvert"><code class="value keyname">'Nonconvert'</code></a></td>
+                <td> - </td>
+                <td>The Nonconvert (Don't Convert) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-NumLock"><code class="value keyname">'NumLock'</code></a></td>
+                <td> - </td>
+                <td>The Number Lock key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-PageDown"><code class="value keyname">'PageDown'</code></a></td>
+                <td> - </td>
+                <td>The Page Down (Next) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-PageUp"><code class="value keyname">'PageUp'</code></a></td>
+                <td> - </td>
+                <td>The Page Up key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Paste"><code class="value keyname">'Paste'</code></a></td>
+                <td> - </td>
+                <td>The Paste key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Pause"><code class="value keyname">'Pause'</code></a></td>
+                <td> - </td>
+                <td>The Pause key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Play"><code class="value keyname">'Play'</code></a></td>
+                <td> - </td>
+                <td>The Play key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Power"><code class="value keyname">'Power'</code></a></td>
+                <td> - </td>
+                <td>The Power key.
+                 <span class="note" id="_61"><strong>Note:</strong> Some devices may not expose this key to the operating environment.</span></td>
+              </tr>
+
+              <tr>
+                <td><a id="key-PreviousCandidate"><code class="value keyname">'PreviousCandidate'</code></a></td>
+                <td> - </td>
+                <td>The Previous Candidate function key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-PrintScreen"><code class="value keyname">'PrintScreen'</code></a></td>
+                <td> - </td>
+                <td>The Print Screen (PrintScrn, SnapShot) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Process"><code class="value keyname">'Process'</code></a></td>
+                <td> - </td>
+                <td>The Process key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Props"><code class="value keyname">'Props'</code></a></td>
+                <td> - </td>
+                <td>The Props key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Right"><code class="value keyname">'Right'</code></a></td>
+                <td> - </td>
+                <td>The Right Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-RomanCharacters"><code class="value keyname">'RomanCharacters'</code></a></td>
+                <td> - </td>
+                <td>The Roman Characters function key, also known as the <code>'Youngja'</code> or <code>'Young'</code> key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Scroll"><code class="value keyname">'Scroll'</code></a></td>
+                <td> - </td>
+                <td>The Scroll Lock key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Select"><code class="value keyname">'Select'</code></a></td>
+                <td> - </td>
+                <td>The Select key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-SelectMedia"><code class="value keyname">'SelectMedia'</code></a></td>
+                <td> - </td>
+                <td>The Select Media key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Separator"><code class="value keyname">'Separator'</code></a></td>
+                <td> - </td>
+                <td>The Separator key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Shift"><code class="value keyname">'Shift'</code></a></td>
+                <td> - </td>
+                <td>The Shift key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Soft1"><code class="value keyname">'Soft1'</code></a></td>
+                <td> - </td>
+                <td>The Soft1 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Soft2"><code class="value keyname">'Soft2'</code></a></td>
+                <td> - </td>
+                <td>The Soft2 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Soft3"><code class="value keyname">'Soft3'</code></a></td>
+                <td> - </td>
+                <td>The Soft3 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Soft4"><code class="value keyname">'Soft4'</code></a></td>
+                <td> - </td>
+                <td>The Soft4 key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Stop"><code class="value keyname">'Stop'</code></a></td>
+                <td> - </td>
+                <td>The Stop key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Subtract"><code class="value keyname">'Subtract'</code></a></td>
+                <td> - </td>
+                <td>The Subtract key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-SymbolLock"><code class="value keyname">'SymbolLock'</code></a></td>
+                <td> - </td>
+                <td>The Symbol Lock key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Up"><code class="value keyname">'Up'</code></a></td>
+                <td> - </td>
+                <td>The Up Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-UpLeft"><code class="value keyname">'UpLeft'</code></a></td>
+                <td> - </td>
+                <td>The diagonal Up-Left Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-UpRight"><code class="value keyname">'UpRight'</code></a></td>
+                <td> - </td>
+                <td>The diagonal Up-Right Arrow key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Undo"><code class="value keyname">'Undo'</code></a></td>
+                <td> - </td>
+                <td>The Undo key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-VolumeDown"><code class="value keyname">'VolumeDown'</code></a></td>
+                <td> - </td>
+                <td>The Volume Down key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-VolumeMute"><code class="value keyname">'VolumeMute'</code></a></td>
+                <td> - </td>
+                <td>The Volume Mute key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-VolumeUp"><code class="value keyname">'VolumeUp'</code></a></td>
+                <td> - </td>
+                <td>The Volume Up key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Win"><code class="value keyname">'Win'</code></a></td>
+                <td> - </td>
+                <td>The Windows Logo key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Zoom"><code class="value keyname">'Zoom'</code></a></td>
+                <td> - </td>
+                <td>The Zoom key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Backspace"><code class="value keyname">'Backspace'</code></a></td>
+                <td><a id="key-U-0008"><code class="value charval">'\u0008'</code></a></td>
+                <td>The Backspace (Back) key.
+                 <span class="note" id="_62"><strong>Note:</strong> This key value shall be also used for the key labeled <code class="value">'delete'</code> MacOS keyboards when not modified by the <code class="value">'Fn'</code> key.</span></td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Tab"><code class="value keyname">'Tab'</code></a></td>
+                <td><a id="key-U-0009"><code class="value charval">'\u0009'</code></a></td>
+                <td>The Horizontal Tabulation (Tab) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Cancel"><code class="value keyname">'Cancel'</code></a></td>
+                <td><a id="key-U-0018"><code class="value charval">'\u0018'</code></a></td>
+                <td>The Cancel key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Esc"><code class="value keyname">'Esc'</code></a></td>
+                <td><a id="key-U-001B"><code class="value charval">'\u001B'</code></a></td>
+                <td>The Escape (Esc) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Spacebar"><code class="value keyname">'Spacebar'</code></a></td>
+                <td><a id="key-U-0020"><code class="value charval">'\u0020'</code></a></td>
+                <td>The Space (Spacebar) key: <code class="value charrep">&nbsp;</code>.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-Del"><code class="value keyname">'Del'</code></a></td>
+                <td><a id="key-U-007F"><code class="value charval">'\u007F'</code></a></td>
+                <td>The Delete (Del) Key. <span class="note" id="_63"><strong>Note:</strong> This key value shall be also used for the key labeled <code class="value">'delete'</code> MacOS keyboards when modified by the <code class="value">'Fn'</code> key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadGrave"><code class="value keyname">'DeadGrave'</code></a></td>
+                <td><a id="key-U-0300"><code class="value charval">'\u0300'</code></a></td>
+                <td>The Combining Grave Accent (Greek Varia, Dead Grave) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadEacute"><code class="value keyname">'DeadEacute'</code></a></td>
+                <td><a id="key-U-0301"><code class="value charval">'\u0301'</code></a></td>
+                <td>The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead Eacute) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadCircumflex"><code class="value keyname">'DeadCircumflex'</code></a></td>
+                <td><a id="key-U-0302"><code class="value charval">'\u0302'</code></a></td>
+                <td>The Combining Circumflex Accent (Hat, Dead Circumflex) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadTilde"><code class="value keyname">'DeadTilde'</code></a></td>
+                <td><a id="key-U-0303"><code class="value charval">'\u0303'</code></a></td>
+                <td>The Combining Tilde (Dead Tilde) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadMacron"><code class="value keyname">'DeadMacron'</code></a></td>
+                <td><a id="key-U-0304"><code class="value charval">'\u0304'</code></a></td>
+                <td>The Combining Macron (Long, Dead Macron) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadBreve"><code class="value keyname">'DeadBreve'</code></a></td>
+                <td><a id="key-U-0306"><code class="value charval">'\u0306'</code></a></td>
+                <td>The Combining Breve (Short, Dead Breve) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadAboveDot"><code class="value keyname">'DeadAboveDot'</code></a></td>
+                <td><a id="key-U-0307"><code class="value charval">'\u0307'</code></a></td>
+                <td>The Combining Dot Above (Derivative, Dead Above Dot) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadUmlaut"><code class="value keyname">'DeadUmlaut'</code></a></td>
+                <td><a id="key-U-0308"><code class="value charval">'\u0308'</code></a></td>
+                <td>The Combining Diaeresis (Double Dot Abode, Umlaut, Greek Dialytika, Double Derivative, Dead Diaeresis) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadAboveRing"><code class="value keyname">'DeadAboveRing'</code></a></td>
+                <td><a id="key-U-030A"><code class="value charval">'\u030A'</code></a></td>
+                <td>The Combining Ring Above (Dead Above Ring) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadDoubleacute"><code class="value keyname">'DeadDoubleacute'</code></a></td>
+                <td><a id="key-U-030B"><code class="value charval">'\u030B'</code></a></td>
+                <td>The Combining Double Acute Accent (Dead Doubleacute) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadCaron"><code class="value keyname">'DeadCaron'</code></a></td>
+                <td><a id="key-U-030C"><code class="value charval">'\u030C'</code></a></td>
+                <td>The Combining Caron (Hacek, V Above, Dead Caron) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadCedilla"><code class="value keyname">'DeadCedilla'</code></a></td>
+                <td><a id="key-U-0327"><code class="value charval">'\u0327'</code></a></td>
+                <td>The Combining Cedilla (Dead Cedilla) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadOgonek"><code class="value keyname">'DeadOgonek'</code></a></td>
+                <td><a id="key-U-0328"><code class="value charval">'\u0328'</code></a></td>
+                <td>The Combining Ogonek (Nasal Hook, Dead Ogonek) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadIota"><code class="value keyname">'DeadIota'</code></a></td>
+                <td><a id="key-U-0345"><code class="value charval">'\u0345'</code></a></td>
+                <td>The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below, Iota Subscript, Dead Iota) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadVoicedSound"><code class="value keyname">'DeadVoicedSound'</code></a></td>
+                <td><a id="key-U-3099"><code class="value charval">'\u3099'</code></a></td>
+                <td>The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced Sound) key.</td>
+              </tr>
+
+              <tr>
+                <td><a id="key-DeadSemivoicedSound"><code class="value keyname">'DeadSemivoicedSound'</code></a></td>
+                <td><a id="key-U-309A"><code class="value charval">'\u309A'</code></a></td>
+                <td>The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead Semivoiced Sound) key.</td>
+              </tr>
+            </table>
 
             <dt><a id="key-Unidentified"><code class="value keyname">'Unidentified'</code></a></dt>
             <dd>This key value is used when an implementations is unable to identify another key value, due to either hardware, platform, or software constraints.  <span class="warning" id="_64"><strong>Warning!</strong> Conforming implementation must only use this key value when there is no way for the implementation to detect the key value, and does not indicate a conforming implementation by itself.</span></dd>