--- a/html/DOM3-Events.html Wed Sep 23 04:54:21 2009 +0900
+++ b/html/DOM3-Events.html Thu Sep 24 10:15:11 2009 +0900
@@ -186,11 +186,11 @@
</p>
<h1 id="Overview-title">Document Object Model (DOM) Level 3 Events Specification</h1>
<!-- @@@ -->
- <h2 id="Overview-W3C-doctype">W3C Editor's Draft <span class="date">22 September 2009</span></h2>
+ <h2 id="Overview-W3C-doctype">W3C Editor's Draft <span class="date">23 September 2009</span></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.97">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.97</a>
+ <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.98">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.98</a>
</dd>
<dt>Latest stable version:</dt>
<dd>
@@ -198,7 +198,7 @@
</dd>
<dt>Previous version:</dt>
<dd>
- <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.96">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.96</a>
+ <a href="http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.97">http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html?rev=1.97</a>
</dd>
<dt>Editor's Draft:</dt>
<dd>
@@ -236,7 +236,7 @@
knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the W3C Patent Policy</a>.</p>
- <p id="working-draft">This is the <span class="date">22 September 2009</span> Editor's Draft version of the "Document Object Model (DOM) Level 3 Events" specification. This document was previously published as a W3C Note, pending further feedback from implementers, and is now being revised to reflect the current state of implementation. It is expected that this specification will progress to Recommendation status.</p>
+ <p id="working-draft">This is the <span class="date">23 September 2009</span> Editor's Draft version of the "Document Object Model (DOM) Level 3 Events" specification. This document was previously published as a W3C Note, pending further feedback from implementers, and is now being revised to reflect the current state of implementation. It is expected that this specification will progress to Recommendation status.</p>
<p id="this-document-is-produced-by-the-web-app">This document is produced
by the <a href="http://www.w3.org/2008/webapps/">Web Applications WG</a>,
part of the <a href="http://www.w3.org/2006/rwc/Activity">Rich Web
@@ -449,13 +449,16 @@
<a href="#keyboard-input">6.1 Keyboard Input</a>
<ul class="toc">
<li>
- <a href="#keyboard-layout">6.1.1 Keyboard Layout</a>
+ <a href="#key-legends">6.1.1 Key Legends</a>
+ </li>
+ <li>
+ <a href="#keyboard-layout">6.1.2 Keyboard Layout</a>
<ul class="toc">
<li>
- <a href="#keyboard-desktop">6.1.1.1 Desktop and Laptop Keyboards</a>
+ <a href="#keyboard-desktop">6.1.2.1 Desktop and Laptop Keyboards</a>
</li>
<li>
- <a href="#keyboard-mobile">6.1.1.1 Mobile Keypads</a>
+ <a href="#keyboard-mobile">6.1.2.2 Mobile Keypads</a>
</li>
</ul>
</li>
@@ -1426,7 +1429,7 @@
</div>
<div class="proposal">
// Introduced in DOM Level 3:
- DOMString <a class="noxref" href="#events-Events-DocumentEvent-convertKeyIdentifier">convertKeyIdentifier</a>(in DOMString keyIdentifierArg,
+ DOMString <a class="noxref" href="#events-Events-DocumentEvent-convertKeyIdentifier">convertKeyIdentifier</a>(in DOMString keyArg,
in unsigned long KeyIdentifierFormatArg);
</div>
};
@@ -1522,9 +1525,9 @@
<div class="parameters"><strong>Parameters</strong>
<div class="paramtable">
<dl>
- <dt><code class="parameter-name">keyIdentifier</code> of type <code>DOMString</code></dt>
+ <dt><code class="parameter-name">key</code> of type <code>DOMString</code></dt>
<dd>
- <p>The <code>keyIdentifier</code> parameter specifies the string to be converted, as a key identifier. This parameter must be one of the following formats: a single character, a key name (as from the <a href="#keyset-key-identifiers">Key Identifiers Set</a>), or a <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>.</p>
+ <p>The <code>key</code> parameter specifies the string to be converted, as a key identifier. This parameter must be one of the following formats: a single character, a key name (as from the <a href="#keyset-key-identifiers">Key Identifiers Set</a>), or a <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>.</p>
<p>The key identifier need not be represent a value capable of being produced by the system keyboard in order to be converted. For example, this method may be used to find the <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> of a Chinese ideographic glyph on a computer with only a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard and no <a class="def" href="#glossary-ime">IME</a> software.
<br />
</p>
@@ -2806,7 +2809,7 @@
in unsigned short buttonArg,
in <a class="noxref" href="#events-Events-EventTarget">EventTarget</a> relatedTargetArg);
// Introduced in DOM Level 3:
- boolean <a class="noxref" href="#events-Events-MouseEvent-getModifierState">getModifierState</a>(in DOMString keyIdentifierArg);
+ boolean <a class="noxref" href="#events-Events-MouseEvent-getModifierState">getModifierState</a>(in DOMString keyArg);
<!-- <div class="atrisk">
// Introduced in DOM Level 3:
void <a class="noxref" href="#events-event-type-initMouseEventNS">initMouseEventNS</a>(in DOMString namespaceURIArg,
@@ -2874,7 +2877,7 @@
<dt><code class="method-name"><a id="events-Events-MouseEvent-getModifierState">getModifierState</a></code> introduced in <strong class="since">DOM Level 3</strong></dt>
<dd>
<div class="method">Queries the state of a modifier using a key identifier. See also <a href="#keyset-Modifiers">Modifier keys</a>.
- <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">keyIdentifierArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState()</code></a> method for a description of this parameter.<br /></dd></dl></div></div>
+ <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState()</code></a> method for a description of this parameter.<br /></dd></dl></div></div>
<!-- parameters -->
<div class="return"><strong>Return Value</strong><div class="returntable"><table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0"><tr class="assert must"><td><p><code>boolean</code></p></td><td><p><code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</p></td></tr></table></div></div>
<!-- return -->
@@ -3556,7 +3559,7 @@
<dt><strong>Interface <em><a id="events-Events-KeyboardEvent">KeyboardEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
<dd>
<p>The <code>KeyboardEvent</code> interface provides specific contextual information associated with keyboard devices. Each keyboard event references a key using an identifier. Keyboard events are commonly directed at the element that has the focus.</p>
- <p>The <code>KeyboardEvent</code> interface provides convenient attributes for some common modifiers keys: <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. These attributes are equivalent to using the method <a href="#events-Events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState(keyIdentifierArg)</code></a> with <code class="value">'Control'</code>, <code class="value">'Shift'</code>, <code class="value">'Alt'</code>, or <code class="value">'Meta'</code> respectively.</p>
+ <p>The <code>KeyboardEvent</code> interface provides convenient attributes for some common modifiers keys: <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. These attributes are equivalent to using the method <a href="#events-Events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState(keyArg)</code></a> with <code class="value">'Control'</code>, <code class="value">'Shift'</code>, <code class="value">'Alt'</code>, or <code class="value">'Meta'</code> respectively.</p>
<p>To create an instance of the <code>KeyboardEvent</code> interface, use the <a href="#events-Events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("KeyboardEvent")</code></a> method call.</p>
<dl>
<dt>
@@ -3577,23 +3580,23 @@
const unsigned long <a class="noxref" href="#events-DOM_KEY_LOCATION_MOBILE">DOM_KEY_LOCATION_MOBILE</a> = 0x04;
const unsigned long <a class="noxref" href="#events-DOM_KEY_LOCATION_JOYSTICK">DOM_KEY_LOCATION_JOYSTICK</a> = 0x05;
- readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-keyIdentifier">keyIdentifier</a>; <!-- readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-character">character</a>; readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-name">name</a>; readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-unicode">unicode</a>; -->
- readonly attribute unsigned long <a class="noxref" href="#events-Events-KeyboardEvent-keylocation">keyLocation</a>;
+ readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-key">key</a>; <!-- readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-character">character</a>; readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-name">name</a>; readonly attribute DOMString <a class="noxref" href="#events-Events-KeyboardEvent-unicode">unicode</a>; -->
+ readonly attribute unsigned long <a class="noxref" href="#events-Events-KeyboardEvent-location">location</a>;
readonly attribute boolean <a class="noxref" href="#events-Events-KeyboardEvent-ctrlKey">ctrlKey</a>;
readonly attribute boolean <a class="noxref" href="#events-Events-KeyboardEvent-shiftKey">shiftKey</a>;
readonly attribute boolean <a class="noxref" href="#events-Events-KeyboardEvent-altKey">altKey</a>;
readonly attribute boolean <a class="noxref" href="#events-Events-KeyboardEvent-metaKey">metaKey</a>;
readonly attribute boolean <a class="noxref" href="#events-Events-KeyboardEvent-repeat">repeat</a>;
- boolean <a class="noxref" href="#events-Events-KeyboardEvent-getModifierState">getModifierState</a>(in DOMString keyIdentifierArg);
+ boolean <a class="noxref" href="#events-Events-KeyboardEvent-getModifierState">getModifierState</a>(in DOMString keyArg);
void <a class="noxref" href="#events-Events-KeyboardEvent-initKeyboardEvent">initKeyboardEvent</a>(in DOMString typeArg,
in boolean canBubbleArg,
in boolean cancelableArg,
in views::AbstractView viewArg,
- in DOMString keyIdentifierArg,
+ in DOMString keyArg,
in DOMString characterArg,
in DOMString nameArg,
in DOMString unicodeArg,
- in unsigned long keyLocationArg,
+ in unsigned long locationArg,
in DOMString modifiersListArg,
in boolean repeat);
<!-- <div class="atrisk">
@@ -3602,8 +3605,8 @@
in boolean canBubbleArg,
in boolean cancelableArg,
in views::AbstractView viewArg,
- in DOMString keyIdentifierArg,
- in unsigned long keyLocationArg,
+ in DOMString keyArg,
+ in unsigned long locationArg,
in DOMString modifiersListArg,
in boolean repeat);
</div> -->
@@ -3673,10 +3676,10 @@
<p class="note"><strong>Note:</strong> The Option key modifier on Macintosh systems must be represented using this key modifier.</p></dd>
<dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-ctrlKey">ctrlKey</a></code> of type <code>boolean</code>, readonly</dt>
<dd><code>true</code> if the control (Ctrl) key modifier is activated.<br /></dd>
- <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-keyIdentifier">keyIdentifier</a></code> of type <code>DOMString</code>, readonly</dt>
- <dd><code>keyIdentifier</code> holds the identifier of the key. The key identifiers are defined in <a href="#keyset-keyidentifiers">Key identifiers set</a>. Implementations that are unable to identify a key must use the key identifier <code class="value">'Unidentified'</code>.<br /></dd>
- <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-keylocation">keyLocation</a></code> of type <code>unsigned long</code>, readonly</dt>
- <dd>The <code>keyLocation</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>.<br /></dd>
+ <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-key">key</a></code> of type <code>DOMString</code>, readonly</dt>
+ <dd><code>key</code> holds the identifier of the key. The key identifiers are defined in <a href="#keyset-keyidentifiers">Key identifiers set</a>. Implementations that are unable to identify a key must use the key identifier <code class="value">'Unidentified'</code>.<br /></dd>
+ <dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-location">location</a></code> of type <code>unsigned long</code>, readonly</dt>
+ <dd>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>.<br /></dd>
<dt><code class="attribute-name"><a id="events-Events-KeyboardEvent-metaKey">metaKey</a></code> of type <code>boolean</code>, readonly</dt>
<dd><code>true</code> if the meta (Meta) key modifier is activated.
<p class="note"><strong>Note:</strong> The Command key modifier on Macintosh systems must be represented using this key modifier.</p></dd>
@@ -3698,8 +3701,8 @@
</dt>
<dd>
<div class="method">Queries the state of a modifier using a key identifier. See also <a href="#keyset-Modifiers">Modifier keys</a>.
- <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">keyIdentifierArg</code> of type <code>DOMString</code></dt><dd>A modifier key identifier. Common modifier keys are <code class="value">'Alt'</code>, <code class="value">'AltGraph'</code>, <code class="value">'CapsLock'</code>, <code class="value">'Control'</code>, <code class="value">'Meta'</code>, <code class="value">'NumLock'</code>, <code class="value">'Scroll'</code>, or <code class="value">'Shift'</code>.
- <p class="note"><strong>Note:</strong> If an application wishes to distinguish between right and left modifiers, this information could be deduced using keyboard events and <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>.</p>
+ <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt><dd>A modifier key identifier. Common modifier keys are <code class="value">'Alt'</code>, <code class="value">'AltGraph'</code>, <code class="value">'CapsLock'</code>, <code class="value">'Control'</code>, <code class="value">'Meta'</code>, <code class="value">'NumLock'</code>, <code class="value">'Scroll'</code>, or <code class="value">'Shift'</code>.
+ <p class="note"><strong>Note:</strong> If an application wishes to distinguish between right and left modifiers, this information could be deduced using keyboard events and <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p>
</dd></dl></div></div>
<!-- parameters -->
<div class="return"><strong>Return Value</strong><div class="returntable"><table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0"><tr><td><p><code>boolean</code></p></td><td><p><code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</p></td></tr></table></div></div>
@@ -3716,7 +3719,7 @@
</dt>
<dd>
<div class="method">Initializes attributes of a <code>KeyboardEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>. The value of <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.
- <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">keyIdentifierArg</code> of type <code>DOMString</code></dt><dd>Specifies <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>.<br /></dd><dt><code class="parameter-name">keyLocationArg</code> of type <code>unsigned long</code></dt><dd>Specifies <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>.<br /></dd><dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt><dd>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key identifiers to be activated on this object. As an example, <code>"Control Alt"</code> must mark the control and alt modifiers as activated.<br /></dd></dl></div></div>
+ <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt><dd>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt><dd>Specifies <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>.<br /></dd><dt><code class="parameter-name">locationArg</code> of type <code>unsigned long</code></dt><dd>Specifies <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.<br /></dd><dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt><dd>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key identifiers to be activated on this object. As an example, <code>"Control Alt"</code> must mark the control and alt modifiers as activated.<br /></dd></dl></div></div>
<!-- parameters -->
<div><strong>No Return Value</strong></div>
<div><strong>No Exceptions</strong></div>
@@ -3730,7 +3733,7 @@
</dt>
<dd class="atrisk">
<div class="method">Initializes attributes of a <code>KeyboardEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a>. The value of <a href="#events-Events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.
- <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">namespaceURIArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">keyIdentifierArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">keyLocationArg</code> of type <code>unsigned long</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd></dl></div></div>
+ <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">namespaceURIArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">viewArg</code> of type <code>views::AbstractView</code></dt><dd>Refer to the <a href="#events-event-type-initUIEventNS"><code>UIEvent.initUIEventNS()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">locationArg</code> of type <code>unsigned long</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-Events-KeyboardEvent-initKeyboardEvent"><code>KeyboardEvent.initKeyboardEvent()</code></a> method for a description of this parameter.<br /></dd></dl></div></div>
<div><strong>No Return Value</strong></div>
<div><strong>No Exceptions</strong></div>
</div>
@@ -3741,7 +3744,7 @@
</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 behavior for either <code>keyCode</code> or <code>charCode</code>; authors should use <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> instead, in conforming DOM Level 3 Events implementations. <em>For more information, see the informative table in <a href="#keyset-keyCode-charCode">Key identifiers, keyCode, and charCode</a>.</em></p>
+ <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 behavior for either <code>keyCode</code> or <code>charCode</code>; authors should use <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> instead, in conforming DOM Level 3 Events implementations. <em>For more information, see the informative table in <a href="#keyset-keyCode-charCode">Key identifiers, keyCode, and charCode</a>.</em></p>
<p>Depending on the character generation device, keyboard events may or may not be generated.</p>
<p>The keyboard event types are listed below.</p>
@@ -3787,7 +3790,7 @@
<dt id="event-type-keydown">
<a class="eventtype noxref" href="#event-type-keydown"><code>keydown</code></a>
</dt>
- <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keydown</code></strong></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
+ <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-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>, <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
A user agent must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched before the <a class="eventtype" href="#event-type-compositionstart"><code>keypress</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events event associated with the same key. Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.
<p>The default action of the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event depends upon the key: if the key is associated with a character, the default action is to dispatch a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event with the character as the value of the <a href="#events-Events-TextEvent-data"><code>TextEvent.data</code></a> attribute; if the key is associated with a <a class="def" href="#glossary-text-composition-system">text composition system</a>, the default action is to launch that system; if the key is the <code>tab</code> key, the default action is to dispatch a <a class="eventtype" href="#event-type-blur"><code>blur</code></a> event with the currently focused element (if any) as the value of the <a href="#events-event-type-target">Event.target</a> attribute, followed by a <a class="eventtype" href="#event-type-focus"><code>focus</code></a> event with the new focused element as the value of the <a href="#events-event-type-target">Event.target</a> attribute; if the key is the <code class="value">'Enter'</code> key and the current focus is on a state-changing element, the default action is to dispatch a <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; if the key is associated with any other event type, such as the <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> event, the default action is to dispatch an event of that type. If this event is canceled, the associated events types must not be dispatched, and the associated actions must not be performed.</p>
@@ -3802,7 +3805,7 @@
<dt id="event-type-keypress">
<a class="eventtype noxref" href="#event-type-keypress"><code>keypress</code></a>
</dt>
- <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keypress</code></strong></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
+ <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-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>, <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>, <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>, and <a href="#events-Events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a> are in use.</td></tr></table>
A user agent must dispatch this event when a key is pressed down. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping but before the processing of an <a class="def" href="#glossary-ime">input method editor</a>, normally associated with the dispatching of a <a class="eventtype" href="#event-type-compositionstart"><code>compositionstart</code></a>, <a class="eventtype" href="#event-type-compositionupdate"><code>compositionupdate</code></a>, or <a class="eventtype" href="#event-type-compositionend"><code>compositionend</code></a> event. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event and before the <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> event associated with the same key.
<p>The default action of the <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> event depends upon the key and the context: if the key is associated with a character, and if there currently focused element in the document can receive text (such as a form input or an editable text block), the default action is to dispatch a <a class="eventtype" href="#event-type-textInput"><code>textInput</code></a> event with the character as the value of the <a href="#events-Events-TextEvent-data"><code>TextEvent.data</code></a> attribute; if the key is associated with a <a class="def" href="#glossary-text-composition-system">text composition system</a>, the default action is to launch that system; if the key is the <code>tab</code> key, the default action is to dispatch a <a class="eventtype" href="#event-type-focusout"><code>focusout</code></a>, <a class="eventtype" href="#event-type-blur"><code>blur</code></a>, and <a class="eventtype" href="#event-type-DOMFocusOut"><code>DOMFocusOut</code></a> events with the currently focused element (if any) as the value of the <a href="#events-event-type-target">Event.target</a> attribute, followed by a <a class="eventtype" href="#event-type-focusin"><code>focusin</code></a>, <a class="eventtype" href="#event-type-focus"><code>focus</code></a>, and <a class="eventtype" href="#event-type-DOMFocusIn"><code>DOMFocusIn</code></a> events with the new focused element as the value of the <a href="#events-event-type-target">Event.target</a> attribute; if the key is the <code class="value">'Enter'</code> key and the current focus is on a state-changing element, the default action is to dispatch a <a class="eventtype" href="#event-type-DOMActivate"><code>DOMActivate</code></a> event; if the key is associated with any other event type, such as the <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> event, the default action is to dispatch an event of that type. If this event is canceled, the associated events types must not be dispatched, and the associated actions must not be performed.</p>
@@ -3819,7 +3822,7 @@
<dt id="event-type-keyup">
<a class="eventtype noxref" href="#event-type-keyup"><code>keyup</code></a>
</dt>
- <dd><table border="0" summary="This table contains information about the semantics of the given event type" cellpadding="2" cellspacing="0"><tr class="assert must"><th>Type</th><td class="eventname"><strong><code>keyup</code></strong></td></tr><tr class="assert must"><th>Interface</th><td><a href="#events-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a>, and <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> are in use. <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, and <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a> are in use unless the <a class="noxref" href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> corresponds to the key modifier itself.</td></tr></table>
+ <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-Events-KeyboardEvent"><code>KeyboardEvent</code></a></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><a href="#events-Events-UIEvent-view"><code>UIEvent.view</code></a>, <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>, and <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> are in use. <a href="#events-Events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>, <a href="#events-Events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-Events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>, and <a href="#events-Events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a> are in use unless the <a class="noxref" href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> corresponds to the key modifier itself.</td></tr></table>
A user agent must dispatch this event when a key is released. The <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> event type is device dependent and relies on the capabilities of the input devices and how they are mapped in the operating system. This event type shall be generated after the keyboard mapping. This event type must be dispatched after the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events event associated with the same key. Whether or not a <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> contributes to the generation of a text event is implementation dependent.
<p class="note"><strong>Note:</strong> the <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events are traditionally associated with detecting a physical key rather than a <a class="def" href="#glossary-character-value">character value</a>.</p></dd>
@@ -4246,18 +4249,14 @@
<pre>
// Introduced in DOM Level 3:
interface <a class="noxref" href="#events-Events-MutationNameEvent">MutationNameEvent</a> : <a class="noxref" href="#events-Events-MutationEvent">MutationEvent</a> {
-<div class="atrisk">
readonly attribute DOMString <a class="noxref" href="#events-Events-MutationNameEvent-prevNamespaceURI">prevNamespaceURI</a>;
-</div>
readonly attribute DOMString <a class="noxref" href="#events-Events-MutationNameEvent-prevNodeName">prevNodeName</a>;
// Introduced in DOM Level 3:
void <a class="noxref" href="#events-event-type-initMutationNameEvent">initMutationNameEvent</a>(in DOMString typeArg,
in boolean canBubbleArg,
in boolean cancelableArg,
in Node relatedNodeArg,
-<div class="atrisk">
in DOMString prevNamespaceURIArg,
-</div>
in DOMString prevNodeNameArg);
<div class="atrisk">
// Introduced in DOM Level 3:
@@ -4279,8 +4278,8 @@
</dt>
<dd>
<dl>
- <dt class="atrisk"><code class="attribute-name"><a id="events-Events-MutationNameEvent-prevNamespaceURI">prevNamespaceURI</a></code> of type <code>DOMString</code>, readonly</dt>
- <dd class="atrisk">The previous value of the <code>relatedNode</code>'s <code>namespaceURI</code>.<br /></dd>
+ <dt><code class="attribute-name"><a id="events-Events-MutationNameEvent-prevNamespaceURI">prevNamespaceURI</a></code> of type <code>DOMString</code>, readonly</dt>
+ <dd>The previous value of the <code>relatedNode</code>'s <code>namespaceURI</code>.<br /></dd>
<dt><code class="attribute-name"><a id="events-Events-MutationNameEvent-prevNodeName">prevNodeName</a></code> of type <code>DOMString</code>, readonly</dt>
<dd>The previous value of the <code>relatedNode</code>'s <code>nodeName</code>.<br /></dd>
</dl>
@@ -4293,7 +4292,7 @@
<dt><code class="method-name"><a id="events-event-type-initMutationNameEvent">initMutationNameEvent</a></code> introduced in <strong class="since">DOM Level 3</strong></dt>
<dd>
<div class="method">Initializes attributes of a <code>MutationNameEvent</code> object. This method has the same behavior as <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a>.
- <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">relatedNodeArg</code> of type <code>Node</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt class="atrisk"><code class="parameter-name">prevNamespaceURIArg</code> of type <code>DOMString</code></dt><dd class="atrisk">Specifies <a href="#events-Events-MutationNameEvent-prevNamespaceURI"><code>MutationNameEvent.prevNamespaceURI</code></a>. This value may be <code>null</code>.<br /></dd><dt><code class="parameter-name">prevNodeNameArg</code> of type <code>DOMString</code></dt><dd>Specifies <a href="#events-Events-MutationNameEvent-prevNodeName"><code>MutationNameEvent.prevNodeName</code></a>.<br /></dd></dl></div></div>
+ <div class="parameters"><strong>Parameters</strong><div class="paramtable"><dl><dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">relatedNodeArg</code> of type <code>Node</code></dt><dd>Refer to the <a href="#events-event-type-initMutationEvent"><code>MutationEvent.initMutationEvent()</code></a> method for a description of this parameter.<br /></dd><dt><code class="parameter-name">prevNamespaceURIArg</code> of type <code>DOMString</code></dt><dd>Specifies <a href="#events-Events-MutationNameEvent-prevNamespaceURI"><code>MutationNameEvent.prevNamespaceURI</code></a>. This value may be <code>null</code>.<br /></dd><dt><code class="parameter-name">prevNodeNameArg</code> of type <code>DOMString</code></dt><dd>Specifies <a href="#events-Events-MutationNameEvent-prevNodeName"><code>MutationNameEvent.prevNodeName</code></a>.<br /></dd></dl></div></div>
<!-- parameters -->
<div><strong>No Return Value</strong></div>
<div><strong>No Exceptions</strong></div>
@@ -4367,14 +4366,23 @@
<p>The relationship of each key to the complete keyboard has three separate aspects, each of which vary among different models and configurations of keyboards, particularly for locale-specific reasons:</p>
<ul>
+ <li><strong>Visual markings:</strong> the labels (or <em>legends</em>) that mark each key</li>
<li><strong>Mechanical layout:</strong> the dimensions, size, and placement of the physical keys on the keyboard</li>
- <li><strong>Visual markings:</strong> the labels (or <em>legends</em>) that mark each key</li>
<li><strong>Functional mapping:</strong> the abstract key-identifier association of each key.</li>
</ul>
- <p>This specification only defines the functional mapping, in terms of key identifiers. The visual marking has no bearing on the digital representation of the keys, and in many configurations may be completely inaccurate.</p>
-
- <h4 class="adiv2"><a id="keyboard-layout" href="#keyboard-layout">6.1.1 Keyboard Layout</a></h4>
+ <p>This specification only defines the functional mapping, in terms of <a href="#keyset-keyidentifiers">key identifiers</a>, but briefly describes <a href="#key-legends">key legends</a> and <a href="#keyboard-layout">keyboard layout</a> for background.</p>
+
+ <h4 class="adiv2"><a id="key-legends" href="#key-legends">6.1.1 Key Legends</a></h4>
+ <p><em>This section is informative</em></p>
+
+ <p>The visual markings normally consist of one or more characters which a keystroke on that key will produce (such as <code class="value">'F'</code> or <code class="value">'8'</code>), or names or symbols which indicate that key's function (such as an upward-pointing arrow ⇧ indicating <code class="value">'Shift'</code>, or the string <code class="value">'Enter'</code>). Keys are often referred to by this marking (e.g. "Press the <code class="value">'Shift'</code> and <code class="value">'F'</code> keys."). However, the visual appearance of the key has no bearing on its digital representation, and in many configurations may be completely inaccurate; even the control and function keys, such as <code class="value">'Enter'</code>, may be mapped to different functionality, or even mapped as character keys.</p>
+
+ <p>For historical reasons, the character keys are typically marked with the capital-letter equivalents of the character value they produce, e.g. the <code class="value">'F'</code> key (the key marked with the glyph <code class="value">'F'</code>), will produce the character value <code class="value">'f'</code> when pressing without an active modifier key (<code class="value">'Shift'</code>) or modifier state (<code class="value">'CapsLock'</code>).</p>
+
+ <p>Note that the key legends for function keys do not normally produce any characters, although the symbol may have a Unicode equivalent; for example, the <code class="value">'Shift'</code> key may bear the symbol ⇧, which has the Unicode code point <code class="value">'21E7'</code>, but pressing the <code class="value">'Shift'</code> key will not produce this character value, and there is no Unicode code point for <code class="value">'Shift'</code>.</p>
+
+ <h4 class="adiv2"><a id="keyboard-layout" href="#keyboard-layout">6.1.2 Keyboard Layout</a></h4>
<p><em>This section is informative</em></p>
<p>As with the key labels, the physical layout of the keys on the keyboard does not not affect the digital identifier for any given key. It is outside the scope of this specification to provide key identifiers based on keyboard layout, particularly since there are so many possible layouts for a keyboard, and since users can change the mapping of keys in their operating system, e.g. by selecting a Dvorak key mapping.</p>
@@ -4385,7 +4393,7 @@
<p class="note"><strong>Note:</strong> Key identifiers should not be confused with <em>scan codes</em>, which are the low-level hexadecimal signals produced for each key by the keyboard driver software, and which are mapped at the operating system to a <acronym title="Virtual Key">VK</acronym> ("virtual key"), which in turn may be mapped to the user-defined key configuration. Key identifiers are a high-level abstraction of that final mapping.</p>
- <h5 class="adiv2"><a id="keyboard-desktop" href="#keyboard-desktop">6.1.1.1 Desktop and Laptop Keyboards</a></h5>
+ <h5 class="adiv2"><a id="keyboard-desktop" href="#keyboard-desktop">6.1.2.1 Desktop and Laptop Keyboards</a></h5>
<p>In the case where an author wishes to rely on the mechanical layout of a desktop or laptop keyboard, this specification suggests the keyboard configuration specified in ISO/IEC 9995, parts 2 and 3 [<cite><a class="noxref informative" href="#references-ISO-9995-2-3">ISO-9995-2/3</a></cite>], which defines a common layout for primary, secondary, and auxiliary key mappings on a typical alphanumeric keyboard, as a common layout appropriate to some international uses.</p>
<p class="note"><strong>Note:</strong> This keyboard layout is still, in essence, a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard, and will not match the keyboards or configurations of many users. Authors cannot rely upon any particular configuration, and should create content in an internationalized and localizable manner.</p>
@@ -4397,7 +4405,7 @@
<p style="text-align:left"><em>Figure 3: A graphical depiction of an ISO standard defining layouts of computer keyboards, ISO 9995, parts 2 and 3</em></p>
</div>
- <h5 class="adiv2"><a id="keyboard-mobile" href="#keyboard-mobile">6.1.1.2 Mobile Keypads</a></h5>
+ <h5 class="adiv2"><a id="keyboard-mobile" href="#keyboard-mobile">6.1.2.2 Mobile Keypads</a></h5>
<p>In the case where an author wishes to rely on the mechanical layout of a mobile keypad, this specification suggests the keyboard configuration specified in ISO/IEC 9995-8:2006 [<cite><a class="noxref informative" href="#references-ISO-9995-8">ISO-9995-8</a></cite>], which defines a numeric keypad layout and secondary assignment of Unicode characters in the range <abbr title="a-z">U+0061..U+007A</abbr> to the number keys <code>2</code> through <code>9</code>, as a common layout appropriate to some international uses.</p>
<p class="note"><strong>Note:</strong> This keypad layout, and in particular the distribution of letters is for Western devices, and will not match the keypads or configurations of many users. Authors cannot rely upon any particular configuration, and should create content in an internationalized and localizable manner.</p>
@@ -4416,7 +4424,7 @@
<p>A key identifier is a <code>DOMString</code> that can be used to indicate any given key on a keyboard, regardless of position or state, by the value it produces. These key identifiers may be used as return values for keyboard events generated by the implementation, or as input values by the author to specify desired input (such as for keyboard shortcuts). This specification defines a set of common key identifiers (called the <a href="#keyset-key-identifiers">Key Identifiers Set</a>), and rules for production of new key identifiers.</p>
- <p>Key identifiers can be used to detect the value of a key which has been pressed, using the <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute. Authors can retrieve the <a class="def" href="#glossary-character-value">character value</a> of upper- or lower-case letters, number, symbols, or other character-producing keys, and also the <a class="def" href="#glossary-key-name">key name</a> of control keys, modifier keys, function keys, or other keys that do not generate characters; these values can be used for monitoring particular input strings, for detecting and acting on modifier key input in combination with other inputs (such as a mouse), for creating virtual keyboards, or for any number of other purposes.</p>
+ <p>Key identifiers can be used to detect the value of a key which has been pressed, using the <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute. Authors can retrieve the <a class="def" href="#glossary-character-value">character value</a> of upper- or lower-case letters, number, symbols, or other character-producing keys, and also the <a class="def" href="#glossary-key-name">key name</a> of control keys, modifier keys, function keys, or other keys that do not generate characters; these values can be used for monitoring particular input strings, for detecting and acting on modifier key input in combination with other inputs (such as a mouse), for creating virtual keyboards, or for any number of other purposes.</p>
<p>Key identifiers can also be used by authors in string comparisons, as values for markup attributes (such as the HTML <code>accesskey</code>) in conforming <a class="def" href="#glossary-host-language">host languages</a>, or for other related purposes. A conforming <a class="def" href="#glossary-host-language">host language</a> should allow authors to use any of the three equivalent string values for a key identifier: the <a class="def" href="#glossary-character-value">character value</a>, the <a class="def" href="#glossary-key-name">key name</a>, or the <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>.</p>
<p class="issue">@@ mention that author should use case-insensitive matching to capture both "t" and "T" for hotkeys, etc.?</p>
@@ -4426,11 +4434,11 @@
<!-- , and where the key used should default to the most appropriate key for the function, language, operating system, device, and other environmental factors (such as <code>ctrl+c</code> for copy operations) -->
- <p>It is important to note that a key identifier does not indicate a specific key on the physical keyboard, nor does it reflect the character printed on the key; a key identifier indicates the current value of the event with consideration to the current state of all active keys and key input modes (including shift modes and <a class="def" href="#glossary-dead-key">dead keys</a>), as reflected in the operating-system mapping of the keyboard and reported to the implementation. In other words, the key identifier for the key marked <code>'O'</code> on a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard has the key identifier <code>'o'</code> in an unshifted state, <code>'O'</code> in a shifted state, <code>'ö'</code> in an unshifted state during a dead-key operation to add an umlaut diacritic, and <code>'Ö'</code> in a shifted state during a dead-key operation to add an umlaut diacritic. Because a user may map their keyboard to an arbitrary custom configuration, the author should not assume that a relationship exists between the shifted and unshifted states of a key and the majuscule form (uppercase or capital letters) and minuscule form (lowercase or small letters) of a character representation, but should instead use the value of the <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute. The keyboard depicted in Figure 3 illustrates one possible set of key mappings on one possible keyboard layout; many others exist, both standard and idiosyncratic.</p>
+ <p>It is important to note that a key identifier does not indicate a specific key on the physical keyboard, nor does it reflect the character printed on the key; a key identifier indicates the current value of the event with consideration to the current state of all active keys and key input modes (including shift modes and <a class="def" href="#glossary-dead-key">dead keys</a>), as reflected in the operating-system mapping of the keyboard and reported to the implementation. In other words, the key identifier for the key marked <code>'O'</code> on a <a class="def" href="#glossary-qwerty">QWERTY</a> keyboard has the key identifier <code>'o'</code> in an unshifted state, <code>'O'</code> in a shifted state, <code>'ö'</code> in an unshifted state during a dead-key operation to add an umlaut diacritic, and <code>'Ö'</code> in a shifted state during a dead-key operation to add an umlaut diacritic. Because a user may map their keyboard to an arbitrary custom configuration, the author should not assume that a relationship exists between the shifted and unshifted states of a key and the majuscule form (uppercase or capital letters) and minuscule form (lowercase or small letters) of a character representation, but should instead use the value of the <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute. The keyboard depicted in Figure 3 illustrates one possible set of key mappings on one possible keyboard layout; many others exist, both standard and idiosyncratic.</p>
- <p>It is also important to note that there is not a one-to-one relationship between key event states and key identifiers. A particular key identifier may be associated with multiple keys; for example, many standard keyboards contain more than one key with the <code class="value">'Shift'</code> key identifier (normally distinguished by the <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> values <a href="#events-DOM_KEY_LOCATION_LEFT"><code class="constant-name">DOM_KEY_LOCATION_LEFT</code></a> and <a href="#events-DOM_KEY_LOCATION_RIGHT"><code class="constant-name">DOM_KEY_LOCATION_RIGHT</code></a>) or <code class="value">'8'</code> key identifier (normally distinguished by the <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> values <a href="#events-DOM_KEY_LOCATION_STANDARD"><code class="constant-name">DOM_KEY_LOCATION_STANDARD</code></a> and <a href="#events-DOM_KEY_LOCATION_NUMPAD"><code class="constant-name">DOM_KEY_LOCATION_NUMPAD</code></a>), and user-configured custom keyboard layouts may duplicate any key identifier in multiple key-state scenarios (note that <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> is intended for standard keyboard layouts, and cannot always indicate a meaningful distinction). Similarly, a given key event state may have multiple key identifiers: the key identifier name; the Unicode value; and the character representation itself. For example, the question mark key has the following key identifiers: <code>'?'</code> (the character); <code>'QuestionMark'</code> (the name); and <code>'U+003F'</code> (the Unicode value). Note that not all keys will have all these identifiers; for example, the horizontal tabulation (tab) key has a name (<code class="value">'Tab'</code>) and a Unicode value (<code class="value">'U+0009'</code>) but no character representation, the <code>A</code> key has a character representation (<code class="value">'A'</code>) and a Unicode value (<code class="value">'U+0041'</code>) but no name, and the volume mute key has only a name, <code class="value">'VolumeMute'</code>. <span class="issue">@@ Should there always be a name for a key? The Unicode name for <code class="value">'A'</code> is "LATIN CAPITAL LETTER A"... should the name be the case-insensitive (or camelcased) Unicode name with no spaces (<code class="value">'LatinCapitalLetterA'</code>) or just the character (<code class="value">'A'</code>)?</span></p>
-
- <p>The value of the <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute of the <a href="#events-Events-KeyboardEvent">KeyboardEvent</a> interface event types (e.g. <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>, and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>) must default to the <a class="def" href="#glossary-character-value">character value</a> itself; if the key identifier does not have a character representation, the value of the <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute must be the <a class="def" href="#glossary-key-name">key name</a>; if no name for the key identifier exists, the value of the <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute must be the <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>. The author may use the <a href="#events-Events-DocumentEvent-convertKeyIdentifier"><code>DocumentEvent.convertKeyIdentifier</code></a> method to find either the <a class="def" href="#glossary-character-value">character value</a>, the <a class="def" href="#glossary-key-name">key name</a>, or <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> of any given key identifier.</p>
+ <p>It is also important to note that there is not a one-to-one relationship between key event states and key identifiers. A particular key identifier may be associated with multiple keys; for example, many standard keyboards contain more than one key with the <code class="value">'Shift'</code> key identifier (normally distinguished by the <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> values <a href="#events-DOM_KEY_LOCATION_LEFT"><code class="constant-name">DOM_KEY_LOCATION_LEFT</code></a> and <a href="#events-DOM_KEY_LOCATION_RIGHT"><code class="constant-name">DOM_KEY_LOCATION_RIGHT</code></a>) or <code class="value">'8'</code> key identifier (normally distinguished by the <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> values <a href="#events-DOM_KEY_LOCATION_STANDARD"><code class="constant-name">DOM_KEY_LOCATION_STANDARD</code></a> and <a href="#events-DOM_KEY_LOCATION_NUMPAD"><code class="constant-name">DOM_KEY_LOCATION_NUMPAD</code></a>), and user-configured custom keyboard layouts may duplicate any key identifier in multiple key-state scenarios (note that <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> is intended for standard keyboard layouts, and cannot always indicate a meaningful distinction). Similarly, a given key event state may have multiple key identifiers: the key identifier name; the Unicode value; and the character representation itself. For example, the question mark key has the following key identifiers: <code>'?'</code> (the character); <code>'QuestionMark'</code> (the name); and <code>'U+003F'</code> (the Unicode value). Note that not all keys will have all these identifiers; for example, the horizontal tabulation (tab) key has a name (<code class="value">'Tab'</code>) and a Unicode value (<code class="value">'U+0009'</code>) but no character representation, the <code>A</code> key has a character representation (<code class="value">'A'</code>) and a Unicode value (<code class="value">'U+0041'</code>) but no name, and the volume mute key has only a name, <code class="value">'VolumeMute'</code>. <span class="issue">@@ Should there always be a name for a key? The Unicode name for <code class="value">'A'</code> is "LATIN CAPITAL LETTER A"... should the name be the case-insensitive (or camelcased) Unicode name with no spaces (<code class="value">'LatinCapitalLetterA'</code>) or just the character (<code class="value">'A'</code>)?</span></p>
+
+ <p>The value of the <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute of the <a href="#events-Events-KeyboardEvent">KeyboardEvent</a> interface event types (e.g. <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>, and <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a>) must default to the <a class="def" href="#glossary-character-value">character value</a> itself; if the key identifier does not have a character representation, the value of the <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute must be the <a class="def" href="#glossary-key-name">key name</a>; if no name for the key identifier exists, the value of the <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute must be the <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>. The author may use the <a href="#events-Events-DocumentEvent-convertKeyIdentifier"><code>DocumentEvent.convertKeyIdentifier</code></a> method to find either the <a class="def" href="#glossary-character-value">character value</a>, the <a class="def" href="#glossary-key-name">key name</a>, or <a class="def" href="#glossary-unicode-code-point">Unicode code point</a> of any given key identifier.</p>
<p>The meaning of any given character representation is context-dependent and complex. For example, in some contexts, the asterisk (star) glyph (<code class="value">'*'</code>) represents a footnote or emphasis (when bracketing a passage of text); however, in some documents or executable programs it is equivalent to the mathematical multiplication operation, while in other documents or executable programs, that function is reserved for the multiplication symbol (<code class="value">'×'</code>, Unicode value <code class="value">'U+00D7'</code>) or the miniscule letter <code class="value">'x'</code> (because of that lack of a multiplication key on many keyboard and the superficial resemblance of the glyphs <code class="value">'×'</code> and <code class="value">'x'</code>). Thus, the semantic meaning or function of character representations is outside the scope of this specification.</p>
@@ -4466,13 +4474,13 @@
<p>With key identifiers and regular expressions, however, authors can support selective and intuitive ranges for key-based input, in a cross-platform manner with advanced internationalization support, such as the following pseudocode:</p>
<pre class="example"><code>
- if ( event.keyIdentifier == "-" ||
- event.keyIdentifier.match("\p{Sc}") ||
- event.keyIdentifier.match("\p{N}") ) {
+ if ( event.key == "-" ||
+ event.key.match("\p{Sc}") ||
+ event.key.match("\p{N}") ) {
<em>// minus sign, any currency symbol, and numeric characters (regardless of key location)</em>
<em>...</em>
}
- else if ( event.keyIdentifier.match("\p{L}") ) {
+ else if ( event.key.match("\p{L}") ) {
<em>// alphabetic characters from any language, upper and lower case</em>
<em>...</em>
}
@@ -4684,13 +4692,13 @@
<div>
<h4 class="adiv3"><a id="keyset-key-identifiers" href="#keyset-key-identifiers">6.2.7 Key Identifiers Set</a></h4>
- <p>This section defines a list of key identifiers which implementations must support, at a minimum; implementations may support additional key identifiers, in a manner conforming to the <a href="#keyset-Guide">guidelines for selecting and defining key identifiers</a>. Each key identifier defines one or more of the following: a <a class="def" href="#glossary-character-value">character value</a>, a <a class="def" href="#glossary-key-name">key name</a>, and a <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>. Future versions of this specification may include key identifiers not included here, which have become common since the publication of this specification. The <a href="#events-Events-KeyboardEvent-keyIdentifier"><code>KeyboardEvent.keyIdentifier</code></a> attribute of an event must always be the most author-friendly of these available, in the following order: <a class="def charval" href="#glossary-character-value">character value</a>, <a class="def keyname" href="#glossary-key-name">key name</a>, or <a class="def codepoint" href="#glossary-unicode-code-point">Unicode code point</a>.</p>
+ <p>This section defines a list of key identifiers which implementations must support, at a minimum; implementations may support additional key identifiers, in a manner conforming to the <a href="#keyset-Guide">guidelines for selecting and defining key identifiers</a>. Each key identifier defines one or more of the following: a <a class="def" href="#glossary-character-value">character value</a>, a <a class="def" href="#glossary-key-name">key name</a>, and a <a class="def" href="#glossary-unicode-code-point">Unicode code point</a>. Future versions of this specification may include key identifiers not included here, which have become common since the publication of this specification. The <a href="#events-Events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> attribute of an event must always be the most author-friendly of these available, in the following order: <a class="def charval" href="#glossary-character-value">character value</a>, <a class="def keyname" href="#glossary-key-name">key name</a>, or <a class="def codepoint" href="#glossary-unicode-code-point">Unicode code point</a>.</p>
<p>The <a class="def" href="#glossary-key-name">key names</a> defined in this specification are based on the sets of keycodes from the <code>java.awt.event.KeyEvent</code> interface of the Java Platform, Standard Edition 6 API Specification [<cite><a class="noxref informative" href="#references-KeyEvent">KeyEvent for Java</a></cite>], and the <code>System.Windows.Forms.Keys</code> key enumeration of the Microsoft .NET Framework 4.0 Class Library [<cite><a class="noxref informative" href="#references-Keys">Keys enumeration for .Net</a></cite>]. The <a class="def" href="#glossary-character-value">character values</a> and a <a class="def" href="#glossary-unicode-code-point">Unicode code points</a> defined in this specification are derived from the Unicode standard [<a id="references-Unicode">Unicode</a>].</p>
- <p class="note"><strong>Note:</strong> The key names <code class="value">'NumPad0'</code>, <code class="value">'NumPad1'</code>, <code class="value">'NumPad2'</code>, <code class="value">'NumPad3'</code>, <code class="value">'NumPad4'</code>, <code class="value">'NumPad5'</code>, <code class="value">'NumPad6'</code>, <code class="value">'NumPad7'</code>, <code class="value">'NumPad8'</code>, and <code class="value">'NumPad9'</code>, found in some keyboard enumeration sets, are not distinguished from other numerical key identifiers in this set; an author may use the <a href="#events-Events-KeyboardEvent-keylocation"><code>KeyboardEvent.keyLocation</code></a> attribute to discover if a key originated from the numeric keypad.</p>
-
- <p class="issue">@@ Add a <code class="value">'power'</code> key?</p>
+ <p class="note"><strong>Note:</strong> The key names <code class="value">'NumPad0'</code>, <code class="value">'NumPad1'</code>, <code class="value">'NumPad2'</code>, <code class="value">'NumPad3'</code>, <code class="value">'NumPad4'</code>, <code class="value">'NumPad5'</code>, <code class="value">'NumPad6'</code>, <code class="value">'NumPad7'</code>, <code class="value">'NumPad8'</code>, and <code class="value">'NumPad9'</code>, found in some keyboard enumeration sets, are not distinguished from other numerical key identifiers in this set; an author may use the <a href="#events-Events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a> attribute to discover if a key originated from the numeric keypad.</p>
+
+ <p class="issue">@@ Add <code class="value">'Esc'</code> (escape), <code class="value">'Eject'</code>, or <code class="value">'Power'</code> key identifiers?</p>
<dl id="key-id-set">
<dt><a id="keyset-key-Accept"><code class="value keyname">'Accept'</code></a></dt>