added informative section on keyCode, charCode, and which; cleaned up acknowledgments
authorschepers
Fri, 06 May 2011 01:48:34 +0900
changeset 307 3749b2383002
parent 306 7663f855f785
child 308 91deb6953c38
added informative section on keyCode, charCode, and which; cleaned up acknowledgments
html/DOM3-Events.html
--- a/html/DOM3-Events.html	Fri May 06 00:01:15 2011 +0900
+++ b/html/DOM3-Events.html	Fri May 06 01:48:34 2011 +0900
@@ -28,13 +28,13 @@
       <h2 id="Overview-W3C-doctype">W3C Editor's Draft <time datetime="2011-05-05">5 May 2011</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.180">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.180</a></dd>
+        <dd><a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.181">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.181</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.179">http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.179</a></dd>
+        <dd><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.180">http://dev.w3.org/cvsweb/~checkout~/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.180</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>
@@ -49,7 +49,9 @@
       <dl>
         <dt>Editors:</dt>
         <dd>Doug Schepers, <em>W3C</em></dd>
-		<dd>Jacob Rossi, <em>Microsoft</em></dd><br>
+		    <dd>Jacob Rossi, <em>Microsoft</em></dd>
+		    
+		    <br/>
         <dd>Bj&#xF6;rn H&#xF6;hrmann, <em>Invited Expert (until December 2007)</em></dd>
         <dd>Philippe Le H&#xE9;garet, <em>W3C (until November 2003)</em></dd>
         <dd>Tom Pixley, <em>Netscape Communications Corporation (until July 2002)</em></dd>
@@ -269,9 +271,9 @@
               <li><a href="#keys-cancelable_keys">6.2.5 Default actions and cancelable keyboard events</a></li>
               <li><a href="#keys-Guide">6.2.6 Guidelines for selecting and defining key values</a></li>
               <li><a href="#key-values">6.2.7 Key Values Set</a></li>
-              <li><a href="#keys-keyCode-charCode">6.2.8 Key values, keyCode, charCode, and which</a></li>
             </ul>
           </li>
+          <li><a href="#keys-keyCode-charCode-which">6.3 Legacy key attributes: keyCode, charCode, and which</a></li>
         </ul>
       </li>
       <li><a href="#extending_events">Appendix A: Extending Events</a>
@@ -1928,12 +1930,12 @@
             <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>DOMActivate</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -1949,7 +1951,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 <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>. 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>
@@ -1964,12 +1966,12 @@
             <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>load</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Async</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Async</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -1993,12 +1995,12 @@
             <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>DOMContentLoaded</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2025,12 +2027,12 @@
             <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>unload</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2056,12 +2058,12 @@
             <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>abort</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2087,12 +2089,12 @@
             <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>error</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Async</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Async</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2118,12 +2120,12 @@
             <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>select</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a> if generated from a user interface, <a href="#events-Event"><code>Event</code></a> otherwise.</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2156,12 +2158,12 @@
             <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>resize</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a></td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a></td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2191,12 +2193,12 @@
             <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>scroll</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-UIEvent"><code>UIEvent</code></a></td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Async</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No / <a href="#scroll-document">Yes</a></td></tr>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-UIEvent"><code>UIEvent</code></a></td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Async</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No / <a href="#scroll-document">Yes</a></td></tr>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -2348,12 +2350,12 @@
           <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>blur</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</code></a></td></tr>
-              <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-              <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</code></a></td></tr>
+              <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+              <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2379,12 +2381,12 @@
           <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>DOMFocusIn</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2411,12 +2413,12 @@
           <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>DOMFocusOut</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2443,12 +2445,12 @@
           <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>focus</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</code></a></td></tr>
-              <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-              <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</code></a></td></tr>
+              <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+              <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2474,12 +2476,12 @@
           <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>focusin</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2506,12 +2508,12 @@
           <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>focusout</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-FocusEvent"><code>FocusEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-FocusEvent"><code>FocusEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2800,12 +2802,12 @@
           <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>click</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2872,12 +2874,12 @@
           <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>dblclick</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2922,12 +2924,12 @@
           <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>mousedown</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -2964,12 +2966,12 @@
           <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>mouseenter</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td></tr>
-              <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-              <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td></tr>
+              <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+              <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3006,12 +3008,12 @@
           <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>mouseleave</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td></tr>
-              <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-              <tr class="assert must"><th>Bubbles</th><td>No</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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td></tr>
+              <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+              <tr class="assert must"><th>Bubbles</th> <td>No</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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3048,12 +3050,12 @@
           <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>mousemove</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3089,12 +3091,12 @@
           <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>mouseout</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3132,12 +3134,12 @@
             <table summary="This table contains information about the semantics of the given event type" border="0" cellpadding="2" cellspacing="0">
               <tbody>
                 <tr class="assert must"><th>Type</th><td class="eventname"><strong><code>mouseover</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -3175,12 +3177,12 @@
           <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>mouseup</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-MouseEvent"><code>MouseEvent</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>
-              <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>none</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-MouseEvent"><code>MouseEvent</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>
+              <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>none</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3384,12 +3386,12 @@
           <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>wheel</code></strong></td></tr>
-              <tr class="assert must"><th>Interface</th><td><a href="#events-WheelEvent"><code>WheelEvent</code></a></td></tr>
-              <tr class="assert must"><th>Sync / Async</th><td>Async</td></tr>
-              <tr class="assert must"><th>Bubbles</th><td>Yes</td></tr>
-              <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>scroll (or zoom) the document</td></tr>
+              <tr class="assert must"><th>Interface</th> <td><a href="#events-WheelEvent"><code>WheelEvent</code></a></td></tr>
+              <tr class="assert must"><th>Sync / Async</th> <td>Async</td></tr>
+              <tr class="assert must"><th>Bubbles</th> <td>Yes</td></tr>
+              <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <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>scroll (or zoom) the document</td></tr>
               <tr class="assert must"><th>Context info</th>
                 <td>
                   <ul>
@@ -3593,12 +3595,12 @@
             <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>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>
-                <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>none</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -3725,7 +3727,7 @@
                    </dd>
 
                   <!-- <dt><code class="attribute-name"><a id="events-KeyboardEvent-keyCode">keyCode</a></code> of type <code>unsigned long</code>, readonly</dt>
-                  <dd><p><code>keyCode</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed.  Unlike the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes, the set of possible values are not defined in this specification; typically, these value of the <em>keyCode</em> should represent the decimal codepoint in ASCII [<a href="#ref-rfc20">RFC20</a>][<a href="#ref-US-ASCII">US-ASCII</a>] or Windows 1252 [<a href="#ref-WIN1252">WIN1252</a>], but may be drawn from a different appropriate character set.  Implementations that are unable to identify a key must use the key value <code class="value">0</code>.</p></dd> -->
+                  <dd><p><code>keyCode</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed.  Unlike the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes, the set of possible values are not defined in this specification; typically, these value of the <code class="attr-name">keyCode</code> should represent the decimal codepoint in ASCII [<a href="#ref-rfc20">RFC20</a>][<a href="#ref-US-ASCII">US-ASCII</a>] or Windows 1252 [<a href="#ref-WIN1252">WIN1252</a>], but may be drawn from a different appropriate character set.  Implementations that are unable to identify a key must use the key value <code class="value">0</code>.</p></dd> -->
 
                   <dt><code class="attribute-name"><a id="events-KeyboardEvent-location">location</a></code> of type <code>unsigned long</code>, readonly</dt>
                   <dd><p>The <code>location</code> attribute contains an indication of the location of the key on the device, as described in <a href="#events-ID-KeyboardEvent-KeyLocationCode">Keyboard event types</a>.</p></dd>
@@ -3739,7 +3741,7 @@
                   <dd><p><code>true</code> if the shift (Shift) key modifier was active.</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.  Holding down a key must result in the repeating the events <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> (when supported by the user agent), and <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> (when the keypress results in text input) in this order, at a rate determined by the system configuration. 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> must 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.  Holding down a key must result in the repeating the events <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> (when supported by the user agent), and <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> (when the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> results in text input) in this order, at a rate determined by the system configuration. 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> must 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>
 
                   <dt><code class="attribute-name"><a id="events-KeyboardEvent-locale">locale</a></code> of type <code>DOMString</code>, readonly</dt>
                   <dd>
@@ -3850,7 +3852,7 @@
             </dl>
           </dd>
         </dl>
-        <p class="warning" id="keycode-charcode"><strong>Warning!</strong>  Legacy keyboard event implementations may include two additional attributes, <code>keyCode</code> and <code>charCode</code>.  The <code>keyCode</code> attribute indicates a numeric value associated with a particular key on a computer keyboard, while the <code>charCode</code> attribute indicates the <acronym title="American Standard Code for Information Interchange">ASCII</acronym> value of the character associated with that key (which may or may not be the same as the <code>keyCode</code> value) and is applicable only to keys that produce a <a class="def" href="#glossary-character-value">character value</a>.  In practice, <code>keyCode</code> and <code>charCode</code> are inconsistent across platforms and even the same implementation on different operating systems or using different localizations.  DOM Level 3 Events  does not define values for either <code>keyCode</code> or <code>charCode</code>, or behavior for <code>charCode</code>; content authors should use <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> instead, in conforming DOM Level 3 Events implementations.  <em>For more information, see the informative table in <a href="#keys-keyCode-charCode">Key values, keyCode, and charCode</a>.</em></p>
+        <p class="warning" id="keycode-charcode"><strong>Warning!</strong>  Legacy keyboard event implementations may include three additional attributes, <code>keyCode</code>, <code>charCode</code>, and <code>which</code>.  The <code>keyCode</code> attribute indicates a numeric value associated with a particular key on a computer keyboard, while the <code>charCode</code> attribute indicates the <acronym title="American Standard Code for Information Interchange">ASCII</acronym> value of the character associated with that key (which may or may not be the same as the <code>keyCode</code> value) and is applicable only to keys that produce a <a class="def" href="#glossary-character-value">character value</a>.  In practice, <code>keyCode</code> and <code>charCode</code> are inconsistent across platforms and even the same implementation on different operating systems or using different localizations.  DOM Level 3 Events  does not define values for either <code>keyCode</code> or <code>charCode</code>, or behavior for <code>charCode</code>; content authors should use <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> instead, in conforming DOM Level 3 Events implementations.  <em>For more information, see the informative section on a id="keys-keyCode-charCode-which" href="#keys-keyCode-charCode-which">Legacy key attributes: keyCode, charCode, and which</a>.</em></p>
         <p class="note" id="note-virtual-keyboards"><strong>Note:</strong>  For compatibility with existing content, virtual keyboards, such as software keyboards on screen-based input devices, should produce the normal range of keyboard events, even though they do not possess physical keys.</p>
         <p>The keyboard event types are listed below.</p>
         <h4 class="needswork">
@@ -3913,12 +3915,12 @@
             <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>keydown</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
-                <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-keypress"><code>keypress</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>Interface</th> <td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
+                <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-keypress"><code>keypress</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>
@@ -3943,7 +3945,7 @@
               <ul>
                 <li>if the key is associated with a character, the default action must be to dispatch a <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event
 					<ul>
-						<li>if the user agent does not support the keypress event, then the default action must be to dispatch a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event with the <a href="#events-TextEvent-data"><code class="attribute-name">data</code></a> attribute set to the value of the <a href="#events-KeyboardEvent-char"><code class="attribute-name">char</code></a> attribute of the <a class="eventtype" href="#event-type-keypress"><code>keydown</code></a> event</li>
+						<li>if the user agent does not support the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event, then the default action must be to dispatch a <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event with the <a href="#events-TextEvent-data"><code class="attribute-name">data</code></a> attribute set to the value of the <a href="#events-KeyboardEvent-char"><code class="attribute-name">char</code></a> attribute of the <a class="eventtype" href="#event-type-keypress"><code>keydown</code></a> event</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 must be to launch that system</li>
@@ -3966,12 +3968,12 @@
             <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>keypress</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
-                <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>Interface</th> <td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
+                <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>Context info</th>
                   <td>
                     <ul>
@@ -4008,12 +4010,12 @@
             <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>keyup</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-KeyboardEvent"><code>KeyboardEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4162,12 +4164,12 @@
             <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>compositionstart</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
-                <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>Launch <a class="def" href="#glossary-text-composition-system">text composition system</a></td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
+                <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>Launch <a class="def" href="#glossary-text-composition-system">text composition system</a></td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4197,12 +4199,12 @@
             <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>compositionupdate</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4229,12 +4231,12 @@
             <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>compositionend</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
-                <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>Interface</th> <td><a href="#events-CompositionEvent"><code>CompositionEvent</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>
+                <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>Context info</th>
                   <td>
                     <ul>
@@ -4432,12 +4434,12 @@
             <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>DOMAttrModified</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4467,12 +4469,12 @@
             <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>DOMCharacterDataModified</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</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>
-                <tr class="assert must"><th>Target</th><td><code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>ProcessingInstruction</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</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>
+                <tr class="assert must"><th>Target</th> <td><code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>ProcessingInstruction</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4502,12 +4504,12 @@
             <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>DOMNodeInserted</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</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>
-                <tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</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>
+                <tr class="assert must"><th>Target</th> <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4538,12 +4540,12 @@
             <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>DOMNodeInsertedIntoDocument</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4574,12 +4576,12 @@
             <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>DOMNodeRemoved</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</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>
-                <tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</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>
+                <tr class="assert must"><th>Target</th> <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4610,12 +4612,12 @@
             <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>DOMNodeRemovedFromDocument</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td></tr>
-                <tr class="assert must"><th>Sync / Async</th><td>Sync</td></tr>
-                <tr class="assert must"><th>Bubbles</th><td>No</td></tr>
-                <tr class="assert must"><th>Target</th><td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td></tr>
+                <tr class="assert must"><th>Sync / Async</th> <td>Sync</td></tr>
+                <tr class="assert must"><th>Bubbles</th> <td>No</td></tr>
+                <tr class="assert must"><th>Target</th> <td><code>Element</code>, <code>Attr</code>, <code>Text</code>, <code>Comment</code>, <code>CDATASection</code>, <code>DocumentType</code>, <code>EntityReference</code>, <code>ProcessingInstruction</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4647,12 +4649,12 @@
             <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>DOMSubtreeModified</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationEvent"><code>MutationEvent</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>
-                <tr class="assert must"><th>Target</th><td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <code>DocumentFragment</code>, <code>Element</code>, <code>Attr</code></td></tr>
-                <tr class="assert must"><th>Cancelable</th><td>No</td></tr>
-                <tr class="assert must"><th>Default action</th><td>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationEvent"><code>MutationEvent</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>
+                <tr class="assert must"><th>Target</th> <td><a class="def" href="#glossary-defaultView"><code>defaultView</code></a>, <code>Document</code>, <code>DocumentFragment</code>, <code>Element</code>, <code>Attr</code></td></tr>
+                <tr class="assert must"><th>Cancelable</th> <td>No</td></tr>
+                <tr class="assert must"><th>Default action</th> <td>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4773,12 +4775,12 @@
             <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>DOMElementNameChanged</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationNameEvent"><code>MutationNameEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationNameEvent"><code>MutationNameEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4810,12 +4812,12 @@
             <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>DOMAttributeNameChanged</code></strong></td></tr>
-                <tr class="assert must"><th>Interface</th><td><a href="#events-MutationNameEvent"><code>MutationNameEvent</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>
-                <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>none</td></tr>
+                <tr class="assert must"><th>Interface</th> <td><a href="#events-MutationNameEvent"><code>MutationNameEvent</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>
+                <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>none</td></tr>
                 <tr class="assert must"><th>Context info</th>
                   <td>
                     <ul>
@@ -4970,7 +4972,7 @@
           <p>The <a class="def" href="#glossary-character-value">character values</a> described in this specification are Unicode [<a href="#references-Unicode">Unicode</a>] codepoints, and as such, have certain advantages.</p>
           <p>The most obvious advantage is that it allows the content author to use the full range of internationalized language functionality available in the implementation, regardless of the limitations of the text input devices on the system.  This opens up possibilities for virtual keyboards and Web-application-based <a class="def" href="#glossary-ime">input method editors</a>.</p>
           <p>Another benefit is that it allows the content author to utilize the Unicode general category properties <!-- <a class="def" href="#glossary-Unicode-character-categories">Unicode character categories</a> --> programmatically.</p>
-          <p>With legacy keyboard event attributes such as <code>keyCode</code> and <code>charCode</code>, content authors are forced to filter key input using cryptic, platform- and implementation-specific numeric codes, with poor internationalization, such as the following pseudocode:</p>
+          <p>With legacy keyboard event attributes such as <code class="attr-name">keyCode</code> and <code class="attr-name">charCode</code>, content authors are forced to filter key input using cryptic, platform- and implementation-specific numeric codes, with poor internationalization, such as the following pseudocode:</p>
           <div class="example" id="example-keyCode_charCode">
             <p><strong>Example:</strong></p>
             <pre><code>
@@ -5158,7 +5160,7 @@
               <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 <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event object</em>
               </li>
               <li>
                 <em>No <a class="eventtype" href="#event-type-textinput"><code>textinput</code></a> event is generated</em>
@@ -5173,7 +5175,7 @@
             <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 <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> 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>
@@ -5185,7 +5187,7 @@
 <!-- <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 <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> 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-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>
@@ -5198,7 +5200,7 @@
             <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 <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> 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>
@@ -6271,18 +6273,149 @@
 <!-- div2 KeySet-Set -->
 
         <div>
-          <h4><a id="keys-keyCode-charCode" href="#keys-keyCode-charCode">6.2.8 Key values, keyCode, charCode, and which</a></h4>
-
-          <p>Browser support for keyboards has traditionally relied on three ad-hoc attributes, <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, and <code class="attr-name">which</code>.  
-            All three of these attributes return a numerical code that represents some aspect of the key pressed: <code class="attr-name">keyCode</code> is an index of the key itself; <code class="attr-name">charCode</code> is the ASCII value of the character keys; <code class="attr-name">which</code> is the character value where available and otherwise the key index.  The values for these attributes, and the availability of the attribute, is inconsistent across platforms, keyboard languages and layouts, <a class="def" href="#glossary-user-agent">user agents</a>, versions, and even event types.  A significant amount of legacy content, including script libraries, relies upon detecting the <a class="def" href="#glossary-user-agent">user agent</a> and acting accordingly, and any changes to <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, or <code class="attr-name">which</code> risk breaking as much content as they fix or enable.  Additionally, these attributes are not suitable for international usage, or accessibility concerns.</p>
+          <h3><a id="keys-keyCode-charCode-which" href="#keys-keyCode-charCode-which">6.3 Legacy key attributes: <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, and <code class="attr-name">which</code></a></h3>
+          <p><em>This section is informative</em></p>
+
+          <p>Browser support for keyboards has traditionally relied on three ad-hoc attributes, <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, and <code class="attr-name">which</code>.</p>  
+          <p>All three of these attributes return a numerical code that represents some aspect of the key pressed: <code class="attr-name">keyCode</code> is an index of the key itself; <code class="attr-name">charCode</code> is the ASCII value of the character keys; <code class="attr-name">which</code> is the character value where available and otherwise the key index.  The values for these attributes, and the availability of the attribute, is inconsistent across platforms, keyboard languages and layouts, <a class="def" href="#glossary-user-agent">user agents</a>, versions, and even event types.  A significant amount of legacy content, including script libraries, relies upon detecting the <a class="def" href="#glossary-user-agent">user agent</a> and acting accordingly, and any changes to <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, or <code class="attr-name">which</code> risk breaking as much content as they fix or enable.  Additionally, these attributes are not suitable for international usage, or accessibility concerns.</p>
             
-          <p>Therefore, this specification does not normatively define the values for the <code class="attr-name">keyCode</code>, <code class="attr-name">charCode</code>, or <code class="attr-name">which</code> attributes, relying instead only on the more robust key values, which can be used safely and consistently in any <a class="def" href="#glossary-user-agent">user agent</a> which conforms to this specification.</p>  
+          <p>Therefore, this specification does not normatively define the <code class="attr-name">charCode</code>, <code class="attr-name">keyCode</code>, or <code class="attr-name">which</code> attributes on the <a href="#events-KeyboardEvent">KeyboardEvent</a> interface, though they may be present in <a class="def" href="#glossary-user-agent">user agents</a> for compatibility with legacy content.  Authors should use the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> and <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attributes instead of the <code class="attr-name">charCode</code> and <code class="attr-name">keyCode</code> attributes, respectively.</p>
           
-          <p>However, for the purpose of documenting the current state of these attributes and their relation to equivalent key values, this specification refers to the Legacy Keyboard Event Properties [<cite><a class="informative" href="#references-KeyProps">KeyProps</a></cite>] WG Note, which contains an informative reference table that documents some common values for the <code class="attr-name">keyCode</code> and <code class="attr-name">charCode</code> properties in different implementations.</p>
-
-          <!-- <p>Additionally, in order to provide raw access to any available environment-specific keys, absent the effect of modifier keys, the <a href="#events-KeyboardEvent">KeyboardEvent</a> interface does define the legacy <a href="#events-KeyboardEvent-keyCode">KeyboardEvent.keyCode</a> attribute, but the value of the attribute may vary between implementations and even between the same implementation on different operating systems.  Normally, for modified values, the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute should be used instead of the <a href="#events-KeyboardEvent-keyCode">KeyboardEvent.keyCode</a> attribute.</p> -->
-          
-          <p>This specification does not define the <code class="attr-name">charCode</code>, <code class="attr-name">keyCode</code>, or <code class="attr-name">which</code> attributes on the <a href="#events-KeyboardEvent">KeyboardEvent</a> interface, though they may be present in <a class="def" href="#glossary-user-agent">user agents</a> for compatibility with legacy content.  Authors should use the <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> and <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attributes instead of the <code class="attr-name">charCode</code> and <code class="attr-name">keyCode</code> attributes, respectively.</p>
+          <p>However, for the purpose of documenting the current state of these attributes and their relation to equivalent key values, this section describes an informative supplemental IDL for <a href="#events-KeyboardEvent">KeyboardEvent</a> containing these attributes, and informative definitions for determining their attribute values.</p>
+
+          <p>For implementations which do support these attributes, it is suggested to use this supplementary <a href="#events-KeyboardEvent">KeyboardEvent</a> IDL:</p>
+          <dl>
+            <dt>
+              <br>
+              <strong>IDL Definition</strong>
+            </dt>
+            <dd>
+              <pre class="idl" id="idl-interface-KeyboardEvent-supplementary">
+          <code>
+          // Legacy, introduced in DOM Level 3:
+          interface <a href="#events-KeyboardEvent">KeyboardEvent</a> : <a href="#events-UIEvent">UIEvent</a> {
+            readonly attribute unsigned long   <a href="#events-KeyboardEvent-charCode">charCode</a>;
+            readonly attribute unsigned long   <a href="#events-KeyboardEvent-keyCode">keyCode</a>;
+            readonly attribute unsigned long   <a href="#events-KeyboardEvent-which">which</a>;
+          };
+                          </code>
+          </pre>
+            </dd>
+            <dt>
+              <strong>Attributes</strong>
+            </dt>
+            <dd>
+              <dl>
+                <dt>
+                  <code class="attribute-name"><a id="events-KeyboardEvent-charCode" name="events-KeyboardEvent-charCode">charCode</a></code> of type <code>unsigned long</code>, readonly
+                </dt>
+                <dd>
+                  <p>
+                    <code class="attr-name">charCode</code> holds a character value, for <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events which generate character input.  The value is the Unicode reference number (code point) of that character (e.g. <code>event.charCode = event.char.charCodeAt(0)</code>). For <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> or  <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events, the value of <code class="attr-name">charCode</code> is <code>0</code>.
+                  </p>
+                </dd>
+
+                <dt>
+                  <code class="attribute-name"><a id="events-KeyboardEvent-keyCode">keyCode</a></code> of type <code>unsigned long</code>, readonly
+                </dt>
+                <dd>
+                  <p>
+                    <code class="attr-name">keyCode</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed. Unlike the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a> attributes, the set of possible values are not normatively defined in this specification; typically, these value of the <code class="attr-name">keyCode</code> should represent the decimal codepoint in ASCII [<a href="#ref-rfc20">RFC20</a>][<a href="#ref-US-ASCII">US-ASCII</a>] or Windows 1252 [<a href="#ref-WIN1252">WIN1252</a>], but may be drawn from a different appropriate character set. Implementations that are unable to identify a key must use the key value <code class="value">0</code>.  
+                  </p>
+                  <p>See <a href="#legacy-key-models">Legacy key models</a> for more details on how to determine the values for <code class="attr-name">keyCode</code>.</p>
+                </dd>
+
+                <dt>
+                  <code class="attribute-name"><a id="events-KeyboardEvent-which" name="events-KeyboardEvent-which">which</a></code> of type <code>unsigned long</code>, readonly
+                </dt>
+                <dd>
+                  <p>
+                    <code>which</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed.  In most cases, the value is identical to <code class="attribute-name"><a href="#events-KeyboardEvent-keyCode">keyCode</a></code>.
+                  </p>
+                </dd>
+              </dl>
+            </dd>
+          </dl>
+
+          <h4 id="legacy-key-models">Legacy key models</h4>
+          <p><em>This section is informative</em></p>
+          <p>Implementations differ on which values are exposed on these attributes for different event types.  An implementation may choose to expose both virtual key codes and character codes in the <code class="attr-name">keyCode</code> property (<em>conflated model</em>), or report separate <code class="attr-name">keyCode</code> and <code class="attr-name">charCode</code> properties (<em>split model</em>).</p>
+
+          <h5 id="calc-keydown-keyup-keyCode">How to calculate <code class="attr-name">keyCode</code> for <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events</h5>
+          <p>The <code class="attr-name">keyCode</code> for <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> or <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events is calculated as follows:</p>
+          <ol>
+          <li>Read the virtual key code from the operating system's event information, if such information is available.</li>
+          <li>If an Input Method Editor is processing key input and the event is keydown, return 229.</li>
+          <li>If input key when pressed without modifiers would insert a numerical character (0-9), return the ASCII code of that numerical character.</li>
+          <li>If input key when pressed without modifiers would insert a a lower case character in the a-z alphabetical range, return the ASCII code of the upper case equivalent.</li>
+          <li>If the implementation supports a key code conversion table for the operating system and platform, look up the value. If the conversion table specifies an alternate virtual key value for the given input, return the specified value.</li>
+          <li>If the key's function, as determined in an implementation-specific way, corresponds to one of the keys in the <a href="#fixed-virtual-key-codes">table of fixed virtual key codes</a>, return the corresponding key code.</li>
+           <li>Return the virtual key code from the operating system.</li>
+          <li>If no key code was found, return 0.</li>
+          </ol>
+
+          <h5 id="calc-keypress-keyCode">How to calculate <code class="attr-name">keyCode</code> for <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events</h5>
+          <p><em>This section is informative</em></p>
+          <p>The <code class="attr-name">keyCode</code> for <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events is calculated as follows:</p>
+          <ol>
+          <li>If the implementation supports a <em>conflated model</em>, set <code class="attr-name">keyCode</code> to the Unicode code point of the character being entered.</li>
+          <li>If the implementation supports a <em>split model</em>, set <code class="attr-name">keyCode</code> to 0.</li>
+          </ol>
+
+
+          <h5 id="fixed-virtual-key-codes">Fixed virtual key codes</h5>
+          <p><em>This section is informative</em></p>
+          <p>The virtual key codes for the following keys do not usually change with keyboard layouts on desktop systems:</p>
+          <table border="1" cellpadding="2" cellspacing="0">
+            <tr><th>The key</th><th>virtual key code</th></tr>
+            <tr><th>Backspace</th> <td>8</td></tr>
+            <tr><th>Tab</th> <td>9</td></tr>
+            <tr><th>Enter</th> <td>13</td></tr>
+            <tr><th>Shift</th> <td>16</td></tr>
+            <tr><th>Control</th> <td>17</td></tr>
+            <tr><th>Alt</th> <td>18</td></tr>
+            <tr><th>Caps Lock</th> <td>20</td></tr>
+            <tr><th>Escape</th> <td>27</td></tr>
+            <tr><th>Space</th> <td>32</td></tr>
+            <tr><th>Page up</th> <td>33</td></tr>
+            <tr><th>Page down</th> <td>34</td></tr>
+            <tr><th>End</th> <td>35</td></tr>
+            <tr><th>Home</th> <td>36</td></tr>
+            <tr><th>Left</th> <td>37</td></tr>
+            <tr><th>Up</th> <td>38</td></tr>
+            <tr><th>Right</th> <td>39</td></tr>
+            <tr><th>Down</th> <td>40</td></tr>
+            <tr><th>Delete</th> <td>46</td></tr>
+          </table>
+
+          <h5>Optionally fixed virtual key codes</h5>
+          <p><em>This section is informative</em></p>
+          <p>The following punctuation characters may change virtual codes between keyboard layouts, but reporting these values will likely be more compatible with legacy content expecting US-English keyboard layout:</p>
+        	<table border="1" cellpadding="2" cellspacing="0">
+          	<tr><th>The key</th><th>virtual key code</th></tr>
+          	<tr><th>Semicolon (;)</th> <td>186</td></tr>
+          	<tr><th>Colon (:)</th> <td>186</td></tr>
+          	<tr><th>Plus (+)</th> <td>187</td></tr>
+          	<tr><th>Equals sign (=)</th> <td>187</td></tr>
+          	<tr><th>Comma (,)</th> <td>188</td></tr>
+          	<tr><th>Less than sign (<)</th> <td>188</td></tr>
+          	<tr><th>Minus (-)</th> <td>189</td></tr>
+          	<tr><th>Underscore (_)</th> <td>189</td></tr>
+          	<tr><th>Period (.)</th> <td>190</td></tr>
+          	<tr><th>Greater than sign (>)</th> <td>190</td></tr>
+          	<tr><th>Question mark (?)</th> <td>191</td></tr>
+          	<tr><th>Forward slash (/)</th> <td>191</td></tr>
+          	<tr><th>Backtick (`)</th> <td>192</td></tr>
+          	<tr><th>Tilde (~)</th> <td>192</td></tr>
+          	<tr><th>Opening square bracket ([)</th> <td>219</td></tr>
+          	<tr><th>Opening curly bracket ({)</th> <td>219</td></tr>
+          	<tr><th>Backslash (\)</th> <td>220</td></tr>
+          	<tr><th>Pipe (|)</th> <td>220</td></tr>
+          	<tr><th>Closing square bracket (])</th> <td>221</td></tr>
+          	<tr><th>Closing curly bracket (})</th> <td>221</td></tr>
+          	<tr><th>Single quote (')</th> <td>222</td></tr>
+          	<tr><th>Double quote (")</th> <td>222</td></tr>
+        	</table>
 
 
         </div>
@@ -6439,11 +6572,16 @@
       <h1><a id="acknowledgements-contributors" href="#acknowledgements-contributors">Appendix D: Acknowledgements</a></h1>
 
       <p class="1st">Many people contributed to the DOM specifications (Level 1, 2 or 3), including participants of the DOM Working Group, the DOM Interest Group,the WebAPI Working Group, and the WebApps Working Group. We especially thank the following:</p>
-      <p>Andrew Watson (Object Management Group), Andy Heninger (IBM), Angel Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra (IBM and Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill Shea (Merrill Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft), Chris Wilson (Microsoft), David Brownell (Sun), David Ezell (Hewlett-Packard Company), David Singer (IBM), Dimitris Dimitriadis (Improve AB and invited expert), Don Park (invited), Elena Litani (IBM), Eric Vasilik (Microsoft), Gavin Nicol (INSO), Ian Jacobs (W3C), James Clark (invited), James Davidson (Sun), Jared Sorensen (Novell), Jeroen van Rotterdam (X-Hive Corporation), Joe Kesselman (IBM), Joe Lapp (webMethods), Joe Marini (Macromedia), Johnny Stenback (Netscape/AOL), Jon Ferraiolo (Adobe), Jonathan Marsh (Microsoft), Jonathan Robie (Texcel Research and Software AG), Kim Adamson-Sharpe (SoftQuad Software Inc.), Lauren Wood (SoftQuad Software Inc., <em>former Chair</em>), Laurence Cable (Sun), Mark Davis (IBM), Mark Scardina (Oracle), Martin D&#xFC;rst (W3C), Mary Brady (NIST), Mick Goulish (Software AG), Mike Champion (Arbortext and Software AG), Miles Sabin (Cromwell Media), Patti Lutsky (Arbortext), Paul Grosso (Arbortext), Peter Sharpe (SoftQuad Software Inc.), Phil Karlton (Netscape), Philippe Le H&#xE9;garet (W3C, <em>W3C Team Contact and former Chair</em>), Ramesh Lekshmynarayanan (Merrill Lynch), Ray Whitmer (iMall, [email protected], and Netscape/AOL, <em>Chair</em>), Rezaur Rahman (Intel), Rich Rollman (Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited), Rob Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler (INSO), Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu (Oracle), Tom Pixley (Netscape/AOL), Vidur Apparao (Netscape), Vinod Anupam (Lucent), Anne van Kesteren (Opera Software), Arun Ranganathan (AOL), Bj&#xF6;rn H&#xF6;hrmann, Charles McCathieNevile (Opera Software, <em>Co-Chair</em>), Christophe Jolif (ILOG), Dean Jackson (W3C, <em>W3C Team Contact</em>), Doug Schepers (Vectoreal), Gorm Haug Eriksen (Opera Software), Ian Davis (Talis Information Limited), Ian Hickson (Google), John Robinson (AOL), Jonas Sicking (Mozilla Foundation), Luca Mascaro (HTML Writers Guild), Maciej Stachowiak (Apple Computer), Marc Hadley (Sun Microsystems), Michael Shenfield (Research In Motion), Robin Berjon, (Expway, <em>Co-Chair</em>) , Scott Hayman (Research In Motion), St&#xE9;phane Sire (IntuiLab), T.V. Raman (Google).</p>
-      <p>Glossary contributors: Arnaud Le Hors (W3C) and Robert S. Sutor (IBM Research).</p>
-      <p>Test suite contributors: Fred Drake, Mary Brady (NIST), Carmelo Montanez (NIST), Rick Rivello (NIST), Robert Clary (Netscape), Neil Delima (IBM), with a special mention to Curt Arnold.</p>
-      <p>In the WebApps Working Group, the following people made substantial material contributions in the process of refining and revising this specification:  Hironori Bono (Google), Daniel Danilatos (Google), Travis Leithead (Microsoft), Cameron McCormack (Invited Expert), Olli Pettay (Mozilla), Jacob Rossi (Microsoft), Hallvord R. M. Steen (Opera)</p>
-      <p>Thanks to all those who have helped to improve this specification by sending suggestions and corrections (Please, keep bugging us with your issues!), or writing informative books or Web sites:  Brad Pettit, Dylan Schiemann, David Flanagan, Steven Pemberton, Curt Arnold, Al Gilman, Misha Wolf, Sigurd Lerstad, Michael B. Allen, Alexander J. Vincent, Martin D&#xFC;rst, Ken Rehor, NAKANO Masayuki, Garrett Smith, Sergey Ilinsky, Martijn Wargers, Sean Hogan, Magnus Kristiansen, Alex Russell, Jorge Chamorro, Peter-Paul Koch, William Edney, Erik Arvidsson, Cameron McCormack, Kazuyuki Ashimura, Øistein E. Andersen, James Su, Tony Chang, Ojan Vafai, Richard Ishida, Paul Irish, Mike Taylor, and Jan Goyvaerts (regular-expressions.info).</p>
+      <p>Andrew Watson (Object Management Group), Andy Heninger (IBM), Angel Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra (IBM and Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill Shea (Merrill Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft), Chris Wilson (Microsoft), David Brownell (Sun), David Ezell (Hewlett-Packard Company), David Singer (IBM), Dimitris Dimitriadis (Improve AB and invited expert), Don Park (invited), Elena Litani (IBM), Eric Vasilik (Microsoft), Gavin Nicol (INSO), Ian Jacobs (W3C), James Clark (invited), James Davidson (Sun), Jared Sorensen (Novell), Jeroen van Rotterdam (X-Hive Corporation), Joe Kesselman (IBM), Joe Lapp (webMethods), Joe Marini (Macromedia), Johnny Stenback (Netscape/AOL), Jon Ferraiolo (Adobe), Jonathan Marsh (Microsoft), Jonathan Robie (Texcel Research and Software AG), Kim Adamson-Sharpe (SoftQuad Software Inc.), Lauren Wood (SoftQuad Software Inc., <em>former Chair</em>), Laurence Cable (Sun), Mark Davis (IBM), Mark Scardina (Oracle), Martin D&#xFC;rst (W3C), Mary Brady (NIST), Mick Goulish (Software AG), Mike Champion (Arbortext and Software AG), Miles Sabin (Cromwell Media), Patti Lutsky (Arbortext), Paul Grosso (Arbortext), Peter Sharpe (SoftQuad Software Inc.), Phil Karlton (Netscape), Philippe Le H&#xE9;garet (W3C, <em>W3C Team Contact and former Chair</em>), Ramesh Lekshmynarayanan (Merrill Lynch), Ray Whitmer (iMall, [email protected], and Netscape/AOL, <em>Chair</em>), Rezaur Rahman (Intel), Rich Rollman (Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited), Rob Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler (INSO), Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu (Oracle), Tom Pixley (Netscape/AOL), Vidur Apparao (Netscape), Vinod Anupam (Lucent), Anne van Kesteren (Opera Software), Arun Ranganathan (AOL), Bj&#xF6;rn H&#xF6;hrmann, Charles McCathieNevile (Opera Software, <em>Co-Chair</em>), Christophe Jolif (ILOG), Dean Jackson (W3C, <em>W3C Team Contact</em>), Doug Schepers (Vectoreal), Gorm Haug Eriksen (Opera Software), Ian Davis (Talis Information Limited), Ian Hickson (Google), John Robinson (AOL), Jonas Sicking (Mozilla Foundation), Luca Mascaro (HTML Writers Guild), Maciej Stachowiak (Apple Computer), Marc Hadley (Sun Microsystems), Michael Shenfield (Research In Motion), Robin Berjon, (Expway, <em>Co-Chair</em>) , Scott Hayman (Research In Motion), St&#xE9;phane Sire (IntuiLab), and T.V. Raman (Google).</p>
+      <br />
+      
+      <p><strong>Contributors:</strong> In the WebApps Working Group, the following people made substantial material contributions in the process of refining and revising this specification:  Olli Pettay (Mozilla), Hallvord R. M. Steen (Opera), Travis Leithead (Microsoft), Hironori Bono (Google), Daniel Danilatos (Google), andCameron McCormack (Invited Expert / Mozilla).</p>
+      
+      <p><strong>Glossary contributors:</strong> Arnaud Le Hors (W3C) and Robert S. Sutor (IBM Research).</p>
+      
+      <p><strong>Test suite contributors:</strong> Fred Drake, Mary Brady (NIST), Carmelo Montanez (NIST), Rick Rivello (NIST), Robert Clary (Netscape), Neil Delima (IBM), with a special mention to Curt Arnold.</p>
+      
+      <p>Thanks to all those who have helped to improve this specification by sending suggestions and corrections (please, keep bugging us with your issues!), or writing informative books or Web sites:  Brad Pettit, Dylan Schiemann, David Flanagan, Steven Pemberton, Curt Arnold, Al Gilman, Misha Wolf, Sigurd Lerstad, Michael B. Allen, Alexander J. Vincent, Martin D&#xFC;rst, Ken Rehor, NAKANO Masayuki, Garrett Smith, Sergey Ilinsky, Martijn Wargers, Sean Hogan, Magnus Kristiansen, Alex Russell, Jorge Chamorro, Peter-Paul Koch, William Edney, Erik Arvidsson, Cameron McCormack, Kazuyuki Ashimura, Øistein E. Andersen, James Su, Tony Chang, Ojan Vafai, Richard Ishida, Paul Irish, Mike Taylor, Oliver Hunt, Alexey Proskuryakov, and Jan Goyvaerts (regular-expressions.info).</p>
       <div>
         <h2><a id="acknowledgements-Productions" href="#acknowledgements-Productions">D.1 Production Systems</a></h2>