let the keyboard bits on the mouse interfaces refer to the keyboard event interface, and added a complete definition of dblclick
authorbjoern
Mon, 20 Nov 2006 13:19:38 +0900
changeset 37 0df84a104cc7
parent 36 9c01124caf91
child 38 8d352af7fc16
let the keyboard bits on the mouse interfaces refer to the keyboard event interface, and added a complete definition of dblclick
source/xml-source.xml
--- a/source/xml-source.xml	Sat Nov 18 12:35:11 2006 +0900
+++ b/source/xml-source.xml	Mon Nov 20 13:19:38 2006 +0900
@@ -4115,6 +4115,623 @@
      </glist>
     </div3>
 
+    <div3 id="Events-KeyboardEvents-Interfaces">
+     <head>
+      Keyboard event types
+     </head>
+
+     <p>
+      Keyboard events are device dependent, i.e. they rely on the
+      capabilities of the input devices and how they are mapped in the
+      operating systems. It is therefore highly recommended to rely on
+      <specref ref="Events-TextEvent"/> when dealing with character
+      input.
+     </p>
+
+     <definitions>
+<!--[ KeyboardEvent object description ]-->
+      <interface name="KeyboardEvent" inherits="UIEvent" id="Events-KeyboardEvent" since="DOM Level 3">
+       <descr>
+        <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:
+         <code>KeyboardEvent.ctrlKey</code>,
+         <code>KeyboardEvent.shiftKey</code>,
+         <code>KeyboardEvent.altKey</code>,
+         <code>KeyboardEvent.metaKey</code>. These attributes are
+         equivalent to using the method
+         <code>KeyboardEvent.getModifierState(keyIdentifierArg)</code>
+         with "Control", "Shift", "Alt", or "Meta" respectively.
+        </p>
+
+        <p>
+         To create an instance of the <code>KeyboardEvent</code>
+         interface, use the
+         <code>DocumentEvent.createEvent("KeyboardEvent")</code> method
+         call.
+        </p>
+       </descr>
+
+       <group id="ID-KeyboardEvent-KeyLocationCode" name="KeyLocationCode">
+        <descr>
+         <p>
+          This set of constants is used to indicate the location of a
+          key on the device. In case a DOM implementation wishes to
+          provide a new location information, a value different from the
+          following constant values must be used.
+         </p>
+        </descr>
+
+        <constant name="DOM_KEY_LOCATION_STANDARD" id="DOM_KEY_LOCATION_STANDARD" type="unsigned long" value="0x00">
+         <descr>
+          <p>
+           The key activation is not distinguished as the left or right
+           version of the key, and did not originate from the numeric
+           keypad (or did not originate with a virtual key corresponding
+           to the numeric keypad). Example: the 'Q' key on a PC 101 Key
+           US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_LEFT" id="DOM_KEY_LOCATION_LEFT" type="unsigned long" value="0x01">
+         <descr>
+          <p>
+           The key activated is in the left key location (there is more
+           than one possible location for this key). Example: the left
+           Shift key on a PC 101 Key US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_RIGHT" id="DOM_KEY_LOCATION_RIGHT" type="unsigned long" value="0x02">
+         <descr>
+          <p>
+           The key activation is in the right key location (there is
+           more than one possible location for this key). Example: the
+           right Shift key on a PC 101 Key US keyboard.
+          </p>
+         </descr>
+        </constant>
+
+        <constant name="DOM_KEY_LOCATION_NUMPAD" id="DOM_KEY_LOCATION_NUMPAD" type="unsigned long" value="0x03">
+         <descr>
+          <p>
+           The key activation originated on the numeric keypad or with a
+           virtual key corresponding to the numeric keypad. Example: the
+           '1' key on a PC 101 Key US keyboard located on the numeric
+           pad.
+          </p>
+         </descr>
+        </constant>
+       </group>
+
+       <attribute type="DOMString" name="keyIdentifier" id="Events-KeyboardEvent-keyIdentifier" readonly="yes">
+        <descr>
+         <p>
+          <code>keyIdentifier</code> holds the identifier of the key.
+          The key identifiers are defined in Appendix A.2
+          "<specref ref="KeySet-Set"/>". Implementations that are unable
+          to identify a key must use the key identifier
+          <code>"Unidentified"</code>.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute id="Events-KeyboardEvent-keylocation" name="keyLocation" type="unsigned long" readonly="yes">
+        <descr>
+         <p>
+          The <code>keyLocation</code> attribute contains an indication
+          of the location of they key on the device, as described in
+          <specref ref="ID-KeyboardEvent-KeyLocationCode"/>.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="ctrlKey" id="Events-KeyboardEvent-ctrlKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the control (Ctrl) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="shiftKey" id="Events-KeyboardEvent-shiftKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the shift (Shift) key modifier is
+          activated.
+         </p>
+        </descr>
+       </attribute>
+
+       <attribute name="altKey" id="Events-KeyboardEvent-altKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the alternative (Alt) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Option key modifier on Macintosh systems must be
+           represented using this key modifier.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <attribute name="metaKey" id="Events-KeyboardEvent-metaKey" type="boolean" readonly="yes">
+        <descr>
+         <p>
+          <code>true</code> if the meta (Meta) key modifier is
+          activated.
+         </p>
+
+         <note>
+          <p>
+           The Command key modifier on Macintosh systems must be
+           represented using this key modifier.
+          </p>
+         </note>
+        </descr>
+       </attribute>
+
+       <method id="Events-KeyboardEvent-getModifierState" name="getModifierState">
+        <descr>
+         <p>
+          Queries the state of a modifier using a key identifier. See
+          also <specref ref="Modifiers"/>.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A modifier key identifier. Common modifier keys are
+            <code>"Alt"</code>, <code>"AltGraph"</code>,
+            <code>"CapsLock"</code>, <code>"Control"</code>,
+            <code>"Meta"</code>, <code>"NumLock"</code>,
+            <code>"Scroll"</code>, or <code>"Shift"</code>.
+           </p>
+
+           <note>
+            <p>
+             If an application wishes to distinguish between right and
+             left modifiers, this information could be deduced using
+             keyboard events and <code>KeyboardEvent.keyLocation</code>.
+            </p>
+           </note>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="boolean">
+         <descr>
+          <p>
+           <code>true</code> if it is a modifier key and the modifier is
+           activated, <code>false</code> otherwise.
+          </p>
+         </descr>
+        </returns>
+
+        <raises/>
+       </method>
+
+       <method name="initKeyboardEvent" id="Events-KeyboardEvent-initKeyboardEvent">
+        <descr>
+         <p>
+          Initializes attributes of a <code>KeyboardEvent</code> object.
+          This method has the same behavior as
+          <code>UIEvent.initUIEvent()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEvent()</code> method for a
+            description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Specifies <code>KeyboardEvent.keyIdentifier</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyLocationArg" type="unsigned long" attr="in">
+          <descr>
+           <p>
+            Specifies <code>KeyboardEvent.keyLocation</code>.
+           </p>
+          </descr>
+         </param>
+
+         <param name="modifiersList" type="DOMString" attr="in">
+          <descr>
+           <p>
+            A
+            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
+            space</xspecref> separated list of modifier key identifiers
+            to be activated on this object. As an example,
+            <code>"Control Alt"</code> will activated the control and
+            alt modifiers.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+
+       <method name="initKeyboardEventNS" id="Events-KeyboardEvent-initKeyboardEventNS">
+        <descr>
+         <p>
+          Initializes attributes of a <code>KeyboardEvent</code> object.
+          This method has the same behavior as
+          <code>UIEvent.initUIEventNS()</code>. The value of
+          <code>UIEvent.detail</code> remains undefined.
+         </p>
+        </descr>
+
+        <parameters>
+         <param name="namespaceURI" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="typeArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="canBubbleArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="cancelableArg" type="boolean" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="viewArg" type="views::AbstractView" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>UIEvent.initUIEventNS()</code> method for
+            a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyIdentifierArg" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="keyLocationArg" type="unsigned long" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+
+         <param name="modifiersList" type="DOMString" attr="in">
+          <descr>
+           <p>
+            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
+            method for a description of this parameter.
+           </p>
+          </descr>
+         </param>
+        </parameters>
+
+        <returns type="void">
+         <descr/>
+        </returns>
+
+        <raises>
+<!-- No exceptions -->
+        </raises>
+       </method>
+      </interface>
+     </definitions>
+
+     <p>
+      Depending on the character generation device, keyboard events may
+      or may not be generated.
+     </p>
+
+     <p>
+      The keyboard event types are listed below. A DOM application may
+      use the <code>hasFeature(feature, version)</code> method of the
+      <code>DOMImplementation</code> interface with parameter values
+      <code>"KeyboardEvents"</code> and <code>"3.0"</code>
+      (respectively) to determine whether or not the Keyboard event
+      module is supported by the implementation. In order to fully
+      support this module, an implementation must also support the
+      <code>"UIEvents"</code> feature defined in this specification. For
+      additional information about
+      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
+      please see the DOM Level 3 Core specification
+      <bibref role="informative" ref="DOMCore"/>.
+     </p>
+
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-keydown"><termref def="event-keydown">keydown</termref></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>keydown</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>None</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>KeyboardEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code>,
+            <code>KeyboardEvent.keyIdentifier</code>,
+            <code>KeyboardEvent.keyLocation</code>,
+            <code>KeyboardEvent.altKey</code>,
+            <code>KeyboardEvent.shiftKey</code>,
+            <code>KeyboardEvent.ctrlKey</code>, and
+            <code>KeyboardEvent.metaKey</code> are in use.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A key is pressed down. This 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 is
+         generated after the keyboard mapping but before the processing
+         of an <termref def="dt-ime">input method editor</termref>. This
+         event should logically happen before the event
+         <termref def="event-keyup">keyup</termref> is produced. Whether
+         a <termref def="event-keydown">keydown</termref> contributes or
+         not to the generation of a text event is implementation
+         dependent.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+<!--..................................................................................-->
+     <glist role="event-definition">
+      <gitem>
+       <label id="event-keyup"><termref def="event-keyup">keyup</termref></label>
+
+       <def>
+        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
+         <tbody>
+          <tr>
+           <th>
+            Type
+           </th>
+
+           <td>
+            <code>keyup</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Namespace
+           </th>
+
+           <td>
+            <code>None</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Interface
+           </th>
+
+           <td>
+            <code>KeyboardEvent</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Cancelable
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Bubbles
+           </th>
+
+           <td>
+            Yes
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Target
+           </th>
+
+           <td>
+            <code>Element</code>
+           </td>
+          </tr>
+
+          <tr>
+           <th>
+            Context info
+           </th>
+
+           <td>
+            <code>UIEvent.view</code>,
+            <code>KeyboardEvent.keyIdentifier</code>, and
+            <code>KeyboardEvent.keyLocation</code> are in use.
+            <code>KeyboardEvent.altKey</code>,
+            <code>KeyboardEvent.shiftKey</code>,
+            <code>KeyboardEvent.ctrlKey</code>, and
+            <code>KeyboardEvent.metaKey</code> are in use unless the
+            <code>KeyboardEvent.keyIdentifier</code> corresponds to the
+            key modifier itself.
+           </td>
+          </tr>
+         </tbody>
+        </table>
+
+        <p>
+         A key is released. This 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 is
+         generated after the keyboard mapping but before the processing
+         of an <termref def="dt-ime">input method editor</termref>. This
+         event should logically happen after the event
+         <termref def="event-keydown">keydown</termref> is produced.
+         Whether a keyup contributes or not to the generation of a text
+         event is implementation dependent.
+        </p>
+       </def>
+      </gitem>
+     </glist>
+    </div3>
+
     <div3 id="Events-eventgroupings-mouseevents">
      <head>
       Mouse event types
@@ -4204,8 +4821,7 @@
        <attribute type="boolean" name="ctrlKey" readonly="yes" id="Events-MouseEvent-ctrlKey">
         <descr>
          <p>
-          <code>true</code> if the control (Ctrl) key modifier is
-          activated.
+          Refer to the <code>KeyboardEvent.ctrlKey</code> attribute.
          </p>
         </descr>
        </attribute>
@@ -4213,8 +4829,7 @@
        <attribute type="boolean" name="shiftKey" readonly="yes" id="Events-MouseEvent-shiftKey">
         <descr>
          <p>
-          <code>true</code> if the shift (Shift) key modifier is
-          activated.
+          Refer to the <code>KeyboardEvent.shiftKey</code> attribute.
          </p>
         </descr>
        </attribute>
@@ -4222,32 +4837,16 @@
        <attribute type="boolean" name="altKey" readonly="yes" id="Events-MouseEvent-altKey">
         <descr>
          <p>
-          <code>true</code> if the alt (alternative) key modifier is
-          activated.
+          Refer to the <code>KeyboardEvent.altKey</code> attribute.
          </p>
-
-         <note>
-          <p>
-           The Option key modifier on Macintosh systems must be
-           represented using this key modifier.
-          </p>
-         </note>
         </descr>
        </attribute>
 
        <attribute type="boolean" name="metaKey" readonly="yes" id="Events-MouseEvent-metaKey">
         <descr>
          <p>
-          <code>true</code> if the meta (Meta) key modifier is
-          activated.
+          Refer to the <code>KeyboardEvent.metaKey</code> attribute.
          </p>
-
-         <note>
-          <p>
-           The Command key modifier on Macintosh system must be
-           represented using this meta key.
-          </p>
-         </note>
         </descr>
        </attribute>
 
@@ -4432,8 +5031,8 @@
        <method id="Events-MouseEvent-getModifierState" name="getModifierState" since="DOM Level 3">
         <descr>
          <p>
-          This method queries the state of a modifier using a key
-          identifier. See also <specref ref="Modifiers"/>.
+          Queries the state of a modifier using a key identifier. See
+          also <specref ref="Modifiers"/>.
          </p>
         </descr>
 
@@ -4441,22 +5040,9 @@
          <param name="keyIdentifierArg" type="DOMString" attr="in">
           <descr>
            <p>
-            A modifier key identifier, as defined by the
-            <code>KeyboardEvent.keyIdentifier</code> attribute. Common
-            modifier keys are <code>"Alt"</code>,
-            <code>"AltGraph"</code>, <code>"CapsLock"</code>,
-            <code>"Control"</code>, <code>"Meta"</code>,
-            <code>"NumLock"</code>, <code>"Scroll"</code>, or
-            <code>"Shift"</code>.
-           </p>
-
-           <note>
-            <p>
-             If an application wishes to distinguish between right and
-             left modifiers, this information could be deduced using
-             keyboard events and <code>KeyboardEvent.keyLocation</code>.
-            </p>
-           </note>
+            Refer to the <code>KeyboardEvent.getModifierState()</code>
+            method for a description of this parameter.
+           </p>
           </descr>
          </param>
         </parameters>
@@ -4594,12 +5180,9 @@
          <param name="modifiersList" type="DOMString" attr="in">
           <descr>
            <p>
-            A
-            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
-            space</xspecref> separated list of modifier key identifiers
-            to be activated on this object. As an example,
-            <code>"Control Alt"</code> will activated the control and
-            alt modifiers.
+            Refer to the
+            <code>KeyboardEvent.initKeyboardEventNS()</code> method for
+            a description of this parameter.
            </p>
           </descr>
          </param>
@@ -4629,6 +5212,18 @@
      </p>
 
      <p>
+      <termdef id="dt-current-click-count" term="current click count">
+       Implementations must maintain the <term>current click
+       count</term> when generating mouse events. This is a non-negative
+       integer indicating the number of consecutive clicks of a pointing
+       device button during a user action. The notion of consecutive
+       clicks depends on the environment configuration. For example, a
+       "double click" might not happen if there is a long delay between
+       the two clicks.
+      </termdef>
+     </p>
+
+     <p>
       A DOM application may use the <code>hasFeature(feature,
       version)</code> method of the <code>DOMImplementation</code>
       interface with parameter values <code>"MouseEvents"</code> and
@@ -4731,14 +5326,11 @@
             <code>MouseEvent.metaKey</code>,
             <code>MouseEvent.button</code>, and
             <code>UIEvent.view</code> are in use. The
-            <code>UIEvent.detail</code> attribute indicates the number
-            of consecutive clicks of a pointing device button during a
-            user action. The attribute value is <code>1</code> when the
-            user begins this action and increments by <code>1</code> for
-            each click. The notion of consecutive clicks depends on the
-            environment configuration. For example, a "double click"
-            will not happen if there is a long delay between the two
-            clicks, even if the pointing device did not move.
+            <code>UIEvent.detail</code> attribute indicates the
+            <termref def="dt-current-click-count">current click
+            count</termref>. The attribute value is <code>1</code> when
+            the user begins this action and increments by <code>1</code>
+            for each click.
            </td>
           </tr>
          </tbody>
@@ -4749,7 +5341,7 @@
          definition of a click depends on the environment configuration;
          i.e. it may depend on the screen location or the delay between
          the press and release of the pointing device button. In any
-         case, the target node must be the same between the
+         case, the event target must be the same between the
          <termref def="event-mousedown">mousedown</termref>,
          <termref def="event-mouseup">mouseup</termref>, and
          <termref def="event-click">click</termref>. The sequence of
@@ -4763,10 +5355,8 @@
          <termref def="event-mouseover">mouseover</termref>,
          <termref def="event-mousemove">mousemove</termref>, and
          <termref def="event-mouseout">mouseout</termref> occur between
-         the press and release of the pointing device button. In the
-         case of nested elements, this event type is always targeted at
-         the most deeply nested element. In addition, the event type is
-         dispatched as described in
+         the press and release of the pointing device button. In
+         addition, the event type is dispatched as described in
          <specref ref="Events-flow-activation"/>.
         </p>
        </def>
@@ -4846,14 +5436,35 @@
            </th>
 
            <td>
-            ...
+            <code>MouseEvent.screenX</code>,
+            <code>MouseEvent.screenY</code>,
+            <code>MouseEvent.clientX</code>,
+            <code>MouseEvent.clientY</code>,
+            <code>MouseEvent.altKey</code>,
+            <code>MouseEvent.ctrlKey</code>,
+            <code>MouseEvent.shiftKey</code>,
+            <code>MouseEvent.metaKey</code>,
+            <code>MouseEvent.button</code>, and
+            <code>UIEvent.view</code> are in use. The
+            <code>UIEvent.detail</code> attribute indicates the
+            <termref def="dt-current-click-count">current click
+            count</termref>.
            </td>
           </tr>
          </tbody>
         </table>
 
         <p>
-         ...
+         A pointing device button is clicked twice over an element. The
+         definition of a double click depends on the environment
+         configuration, except that the event target must be the same
+         between <termref def="event-mousedown">mousedown</termref>,
+         <termref def="event-mouseup">mouseup</termref>, and
+         <termref def="event-dblclick">dblclick</termref>. This event
+         type is dispatched after the event type
+         <termref def='event-click'>click</termref> if a click and
+         double click occur simultaneously, and after the event type
+         <termref def='event-mouseup'>mouseup</termref> otherwise.
         </p>
        </def>
       </gitem>
@@ -4942,9 +5553,9 @@
             <code>MouseEvent.metaKey</code>,
             <code>MouseEvent.button</code>, and
             <code>UIEvent.view</code> are in use. The
-            <code>UIEvent.detail</code> attribute indicates the number
-            of consecutive clicks, incremented by one, of a pointing
-            device button during a user action. For example, if no click
+            <code>UIEvent.detail</code> attribute indicates the
+            <termref def="dt-current-click-count">current click
+            count</termref> incremented by one. For example, if no click
             happened before the mousedown, <code>UIEvent.detail</code>
             will contain the value <code>1</code>.
            </td>
@@ -4953,9 +5564,7 @@
         </table>
 
         <p>
-         A pointing device button is pressed over an element. In the
-         case of nested elements, this event type is always targeted at
-         the most deeply nested element.
+         A pointing device button is pressed over an element.
         </p>
        </def>
       </gitem>
@@ -5044,18 +5653,16 @@
             <code>MouseEvent.metaKey</code>,
             <code>MouseEvent.button</code>, and
             <code>UIEvent.view</code> are in use. The
-            <code>UIEvent.detail</code> attribute indicates the number
-            of consecutive clicks, incremented by one, of a pointing
-            device button during a user action.
+            <code>UIEvent.detail</code> attribute indicates the
+            <termref def="dt-current-click-count">current click
+            count</termref> incremented by one.
            </td>
           </tr>
          </tbody>
         </table>
 
         <p>
-         A pointing device button is released over an element. In the
-         case of nested elements, this event type is always targeted at
-         the most deeply nested element.
+         A pointing device button is released over an element.
         </p>
        </def>
       </gitem>
@@ -5152,9 +5759,7 @@
         </table>
 
         <p>
-         A pointing device is moved onto an element. In the case of
-         nested elements, this event type is always targeted at the most
-         deeply nested element.
+         A pointing device is moved onto an element.
         </p>
        </def>
       </gitem>
@@ -5248,9 +5853,7 @@
         </table>
 
         <p>
-         A pointing device is moved while it is over an element. In the
-         case of nested elements, this event type is always targeted at
-         the most deeply nested element.
+         A pointing device is moved while it is over an element.
         </p>
        </def>
       </gitem>
@@ -5347,57 +5950,11 @@
         </table>
 
         <p>
-         A pointing device is moved away from an element. In the case of
-         nested elements, this event type is always targeted at the most
-         deeply nested element.
+         A pointing device is moved away from an element.
         </p>
        </def>
       </gitem>
      </glist>
-
-     <p>
-      As an example, a "double click" on a mouse device will produce the
-      following events (the value of <code>UIEvent.detail</code> is
-      indicated in parenthesis):
-     </p>
-
-     <olist>
-      <item>
-       <p>
-        <code>"mousedown"</code> (<code>1</code>)
-       </p>
-      </item>
-
-      <item>
-       <p>
-        <code>"mouseup"</code> (<code>1</code>)
-       </p>
-      </item>
-
-      <item>
-       <p>
-        <code>"click"</code> (<code>1</code>)
-       </p>
-      </item>
-
-      <item>
-       <p>
-        <code>"mousedown"</code> (<code>2</code>)
-       </p>
-      </item>
-
-      <item>
-       <p>
-        <code>"mouseup"</code> (<code>2</code>)
-       </p>
-      </item>
-
-      <item>
-       <p>
-        <code>"click"</code> (<code>2</code>)
-       </p>
-      </item>
-     </olist>
     </div3>
 
     <div3 id="Events-eventgroupings-mousewheelevents">
@@ -5555,7 +6112,7 @@
          <param name="wheelDelta" type="long" attr="in">
           <descr>
            <p>
-            ...
+            Specifies <code>MouseWheelEvent.wheelDelta</code>.
            </p>
           </descr>
          </param>
@@ -5834,7 +6391,7 @@
          <param name="wheelDeltaX" type="long" attr="in">
           <descr>
            <p>
-            ...
+            Specifies <code>MouseMultiWheelEvent.wheelDeltaX</code>.
            </p>
           </descr>
          </param>
@@ -5842,7 +6399,7 @@
          <param name="wheelDeltaY" type="long" attr="in">
           <descr>
            <p>
-            ...
+            Specifies <code>MouseMultiWheelEvent.wheelDeltaY</code>.
            </p>
           </descr>
          </param>
@@ -5850,7 +6407,7 @@
          <param name="wheelDeltaZ" type="long" attr="in">
           <descr>
            <p>
-            ...
+            Specifies <code>MouseMultiWheelEvent.wheelDeltaZ</code>.
            </p>
           </descr>
          </param>
@@ -5958,625 +6515,6 @@
      </glist>
     </div3>
 
-    <div3 id="Events-KeyboardEvents-Interfaces">
-     <head>
-      Keyboard event types
-     </head>
-
-     <p>
-      Keyboard events are device dependent, i.e. they rely on the
-      capabilities of the input devices and how they are mapped in the
-      operating systems. It is therefore highly recommended to rely on
-      <specref ref="Events-TextEvent"/> when dealing with character
-      input.
-     </p>
-
-     <definitions>
-<!--[ KeyboardEvent object description ]-->
-      <interface name="KeyboardEvent" inherits="UIEvent" id="Events-KeyboardEvent" since="DOM Level 3">
-       <descr>
-        <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:
-         <code>KeyboardEvent.ctrlKey</code>,
-         <code>KeyboardEvent.shiftKey</code>,
-         <code>KeyboardEvent.altKey</code>,
-         <code>KeyboardEvent.metaKey</code>. These attributes are
-         equivalent to using the method
-         <code>KeyboardEvent.getModifierState(keyIdentifierArg)</code>
-         with "Control", "Shift", "Alt", or "Meta" respectively.
-        </p>
-
-        <p>
-         To create an instance of the <code>KeyboardEvent</code>
-         interface, use the
-         <code>DocumentEvent.createEvent("KeyboardEvent")</code> method
-         call.
-        </p>
-       </descr>
-
-       <group id="ID-KeyboardEvent-KeyLocationCode" name="KeyLocationCode">
-        <descr>
-         <p>
-          This set of constants is used to indicate the location of a
-          key on the device. In case a DOM implementation wishes to
-          provide a new location information, a value different from the
-          following constant values must be used.
-         </p>
-        </descr>
-
-        <constant name="DOM_KEY_LOCATION_STANDARD" id="DOM_KEY_LOCATION_STANDARD" type="unsigned long" value="0x00">
-         <descr>
-          <p>
-           The key activation is not distinguished as the left or right
-           version of the key, and did not originate from the numeric
-           keypad (or did not originate with a virtual key corresponding
-           to the numeric keypad). Example: the 'Q' key on a PC 101 Key
-           US keyboard.
-          </p>
-         </descr>
-        </constant>
-
-        <constant name="DOM_KEY_LOCATION_LEFT" id="DOM_KEY_LOCATION_LEFT" type="unsigned long" value="0x01">
-         <descr>
-          <p>
-           The key activated is in the left key location (there is more
-           than one possible location for this key). Example: the left
-           Shift key on a PC 101 Key US keyboard.
-          </p>
-         </descr>
-        </constant>
-
-        <constant name="DOM_KEY_LOCATION_RIGHT" id="DOM_KEY_LOCATION_RIGHT" type="unsigned long" value="0x02">
-         <descr>
-          <p>
-           The key activation is in the right key location (there is
-           more than one possible location for this key). Example: the
-           right Shift key on a PC 101 Key US keyboard.
-          </p>
-         </descr>
-        </constant>
-
-        <constant name="DOM_KEY_LOCATION_NUMPAD" id="DOM_KEY_LOCATION_NUMPAD" type="unsigned long" value="0x03">
-         <descr>
-          <p>
-           The key activation originated on the numeric keypad or with a
-           virtual key corresponding to the numeric keypad. Example: the
-           '1' key on a PC 101 Key US keyboard located on the numeric
-           pad.
-          </p>
-         </descr>
-        </constant>
-       </group>
-
-       <attribute type="DOMString" name="keyIdentifier" id="Events-KeyboardEvent-keyIdentifier" readonly="yes">
-        <descr>
-         <p>
-          <code>keyIdentifier</code> holds the identifier of the key.
-          The key identifiers are defined in Appendix A.2
-          "<specref ref="KeySet-Set"/>". Implementations that are unable
-          to identify a key must use the key identifier
-          <code>"Unidentified"</code>.
-         </p>
-        </descr>
-       </attribute>
-
-       <attribute id="Events-KeyboardEvent-keylocation" name="keyLocation" type="unsigned long" readonly="yes">
-        <descr>
-         <p>
-          The <code>keyLocation</code> attribute contains an indication
-          of the location of they key on the device, as described in
-          <specref ref="ID-KeyboardEvent-KeyLocationCode"/>.
-         </p>
-        </descr>
-       </attribute>
-
-       <attribute name="ctrlKey" id="Events-KeyboardEvent-ctrlKey" type="boolean" readonly="yes">
-        <descr>
-         <p>
-          <code>true</code> if the control (Ctrl) key modifier is
-          activated.
-         </p>
-        </descr>
-       </attribute>
-
-       <attribute name="shiftKey" id="Events-KeyboardEvent-shiftKey" type="boolean" readonly="yes">
-        <descr>
-         <p>
-          <code>true</code> if the shift (Shift) key modifier is
-          activated.
-         </p>
-        </descr>
-       </attribute>
-
-       <attribute name="altKey" id="Events-KeyboardEvent-altKey" type="boolean" readonly="yes">
-        <descr>
-         <p>
-          <code>true</code> if the alternative (Alt) key modifier is
-          activated.
-         </p>
-
-         <note>
-          <p>
-           The Option key modifier on Macintosh systems must be
-           represented using this key modifier.
-          </p>
-         </note>
-        </descr>
-       </attribute>
-
-       <attribute name="metaKey" id="Events-KeyboardEvent-metaKey" type="boolean" readonly="yes">
-        <descr>
-         <p>
-          <code>true</code> if the meta (Meta) key modifier is
-          activated.
-         </p>
-
-         <note>
-          <p>
-           The Command key modifier on Macintosh systems must be
-           represented using this key modifier.
-          </p>
-         </note>
-        </descr>
-       </attribute>
-
-       <method id="Events-KeyboardEvent-getModifierState" name="getModifierState">
-        <descr>
-         <p>
-          This method queries the state of a modifier using a key
-          identifier. See also <specref ref="Modifiers"/>.
-         </p>
-        </descr>
-
-        <parameters>
-         <param name="keyIdentifierArg" type="DOMString" attr="in">
-          <descr>
-           <p>
-            A modifier key identifier. Common modifier keys are
-            <code>"Alt"</code>, <code>"AltGraph"</code>,
-            <code>"CapsLock"</code>, <code>"Control"</code>,
-            <code>"Meta"</code>, <code>"NumLock"</code>,
-            <code>"Scroll"</code>, or <code>"Shift"</code>.
-           </p>
-
-           <note>
-            <p>
-             If an application wishes to distinguish between right and
-             left modifiers, this information could be deduced using
-             keyboard events and <code>KeyboardEvent.keyLocation</code>.
-            </p>
-           </note>
-          </descr>
-         </param>
-        </parameters>
-
-        <returns type="boolean">
-         <descr>
-          <p>
-           <code>true</code> if it is a modifier key and the modifier is
-           activated, <code>false</code> otherwise.
-          </p>
-         </descr>
-        </returns>
-
-        <raises/>
-       </method>
-
-       <method name="initKeyboardEvent" id="Events-KeyboardEvent-initKeyboardEvent">
-        <descr>
-         <p>
-          Initializes attributes of a <code>KeyboardEvent</code> object.
-          This method has the same behavior as
-          <code>UIEvent.initUIEvent()</code>. The value of
-          <code>UIEvent.detail</code> remains undefined.
-         </p>
-        </descr>
-
-        <parameters>
-         <param name="typeArg" type="DOMString" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEvent()</code> method for a
-            description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="canBubbleArg" type="boolean" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEvent()</code> method for a
-            description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="cancelableArg" type="boolean" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEvent()</code> method for a
-            description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="viewArg" type="views::AbstractView" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEvent()</code> method for a
-            description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="keyIdentifierArg" type="DOMString" attr="in">
-          <descr>
-           <p>
-            Specifies <code>KeyboardEvent.keyIdentifier</code>.
-           </p>
-          </descr>
-         </param>
-
-         <param name="keyLocationArg" type="unsigned long" attr="in">
-          <descr>
-           <p>
-            Specifies <code>KeyboardEvent.keyLocation</code>.
-           </p>
-          </descr>
-         </param>
-
-         <param name="modifiersList" type="DOMString" attr="in">
-          <descr>
-           <p>
-            A
-            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
-            space</xspecref> separated list of modifier key identifiers
-            to be activated on this object.
-           </p>
-          </descr>
-         </param>
-        </parameters>
-
-        <returns type="void">
-         <descr/>
-        </returns>
-
-        <raises>
-<!-- No exceptions -->
-        </raises>
-       </method>
-
-       <method name="initKeyboardEventNS" id="Events-KeyboardEvent-initKeyboardEventNS">
-        <descr>
-         <p>
-          Initializes attributes of a <code>KeyboardEvent</code> object.
-          This method has the same behavior as
-          <code>UIEvent.initUIEventNS()</code>. The value of
-          <code>UIEvent.detail</code> remains undefined.
-         </p>
-        </descr>
-
-        <parameters>
-         <param name="namespaceURI" type="DOMString" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEventNS()</code> method for
-            a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="typeArg" type="DOMString" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEventNS()</code> method for
-            a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="canBubbleArg" type="boolean" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEventNS()</code> method for
-            a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="cancelableArg" type="boolean" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEventNS()</code> method for
-            a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="viewArg" type="views::AbstractView" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>UIEvent.initUIEventNS()</code> method for
-            a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="keyIdentifierArg" type="DOMString" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
-            method for a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="keyLocationArg" type="unsigned long" attr="in">
-          <descr>
-           <p>
-            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
-            method for a description of this parameter.
-           </p>
-          </descr>
-         </param>
-
-         <param name="modifiersList" type="DOMString" attr="in">
-          <descr>
-           <p>
-            A
-            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S">white
-            space</xspecref> separated list of modifier key identifiers
-            to be activated on this object. As an example,
-            <code>"Control Alt"</code> will activated the control and
-            alt modifiers.
-           </p>
-          </descr>
-         </param>
-        </parameters>
-
-        <returns type="void">
-         <descr/>
-        </returns>
-
-        <raises>
-<!-- No exceptions -->
-        </raises>
-       </method>
-      </interface>
-     </definitions>
-
-     <p>
-      Depending on the character generation device, keyboard events may
-      or may not be generated.
-     </p>
-
-     <p>
-      The keyboard event types are listed below. A DOM application may
-      use the <code>hasFeature(feature, version)</code> method of the
-      <code>DOMImplementation</code> interface with parameter values
-      <code>"KeyboardEvents"</code> and <code>"3.0"</code>
-      (respectively) to determine whether or not the Keyboard event
-      module is supported by the implementation. In order to fully
-      support this module, an implementation must also support the
-      <code>"UIEvents"</code> feature defined in this specification. For
-      additional information about
-      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance">conformance</xspecref>,
-      please see the DOM Level 3 Core specification
-      <bibref role="informative" ref="DOMCore"/>.
-     </p>
-
-     <glist role="event-definition">
-      <gitem>
-       <label id="event-keydown"><termref def="event-keydown">keydown</termref></label>
-
-       <def>
-        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
-         <tbody>
-          <tr>
-           <th>
-            Type
-           </th>
-
-           <td>
-            <code>keydown</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Namespace
-           </th>
-
-           <td>
-            <code>None</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Interface
-           </th>
-
-           <td>
-            <code>KeyboardEvent</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Cancelable
-           </th>
-
-           <td>
-            Yes
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Bubbles
-           </th>
-
-           <td>
-            Yes
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Target
-           </th>
-
-           <td>
-            <code>Element</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Context info
-           </th>
-
-           <td>
-            <code>UIEvent.view</code>,
-            <code>KeyboardEvent.keyIdentifier</code>,
-            <code>KeyboardEvent.keyLocation</code>,
-            <code>KeyboardEvent.altKey</code>,
-            <code>KeyboardEvent.shiftKey</code>,
-            <code>KeyboardEvent.ctrlKey</code>, and
-            <code>KeyboardEvent.metaKey</code> are in use.
-           </td>
-          </tr>
-         </tbody>
-        </table>
-
-        <p>
-         A key is pressed down. This 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 is
-         generated after the keyboard mapping but before the processing
-         of an <termref def="dt-ime">input method editor</termref>. This
-         event should logically happen before the event
-         <termref def="event-keyup">keyup</termref> is produced. Whether
-         a <termref def="event-keydown">keydown</termref> contributes or
-         not to the generation of a text event is implementation
-         dependent.
-        </p>
-       </def>
-      </gitem>
-     </glist>
-<!--..................................................................................-->
-     <glist role="event-definition">
-      <gitem>
-       <label id="event-keyup"><termref def="event-keyup">keyup</termref></label>
-
-       <def>
-        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
-         <tbody>
-          <tr>
-           <th>
-            Type
-           </th>
-
-           <td>
-            <code>keyup</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Namespace
-           </th>
-
-           <td>
-            <code>None</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Interface
-           </th>
-
-           <td>
-            <code>KeyboardEvent</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Cancelable
-           </th>
-
-           <td>
-            Yes
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Bubbles
-           </th>
-
-           <td>
-            Yes
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Target
-           </th>
-
-           <td>
-            <code>Element</code>
-           </td>
-          </tr>
-
-          <tr>
-           <th>
-            Context info
-           </th>
-
-           <td>
-            <code>UIEvent.view</code>,
-            <code>KeyboardEvent.keyIdentifier</code>, and
-            <code>KeyboardEvent.keyLocation</code> are in use.
-            <code>KeyboardEvent.altKey</code>,
-            <code>KeyboardEvent.shiftKey</code>,
-            <code>KeyboardEvent.ctrlKey</code>, and
-            <code>KeyboardEvent.metaKey</code> are in use unless the
-            <code>KeyboardEvent.keyIdentifier</code> corresponds to the
-            key modifier itself.
-           </td>
-          </tr>
-         </tbody>
-        </table>
-
-        <p>
-         A key is released. This 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 is
-         generated after the keyboard mapping but before the processing
-         of an <termref def="dt-ime">input method editor</termref>. This
-         event should logically happen after the event
-         <termref def="event-keydown">keydown</termref> is produced.
-         Whether a keyup contributes or not to the generation of a text
-         event is implementation dependent.
-        </p>
-       </def>
-      </gitem>
-     </glist>
-    </div3>
-
     <div3 id="Events-eventgroupings-mutationevents">
      <head>
       Mutation and mutation name event types