The goal of the DOM Level 3 Events specification is to expand upon the functionality specified in the DOM Level 2 Event Specification. The specification does this by adding new interfaces which are complimentary to the interfaces defined in the DOM Level 2 Event Specification as well as adding new event modules to those already defined.
This specification requires the previously designed interfaces in order to be functional. It is not designed to be standalone. These interfaces are not designed to supercede the interfaces already provided but instead to add to the functionality contained within them.
A DOM application may use the hasFeature(feature,
version) method of the DOMImplementation
interface with parameter values "KeyEvents" and "3.0"
(respectively) to determine whether or not the Mouse event module
is supported by the implementation. In order to fully support this
module, an implementation must also support the "UIEvents" feature
defined in this specification. Please, refer to additional
information about conformance in the DOM Level 3 Core specification
.
Note: To create an instance of the KeyEvent
interface, use the feature string "KeyEvents" as the value of the
input parameter used with the createEvent method of
the DocumentEvent interface.
The KeyEvent interface provides specific contextual
information associated with Key Events.
The detail attribute inherited from
UIEvent is used to indicated the number of keypresses
which have occurred during key repetition. If this information is
not available this value should be 0.
// Introduced in DOM Level 3:
interface KeyEvent : UIEvent {
// VirtualKeyCode
const unsigned long DOM_VK_UNDEFINED = 0x0;
const unsigned long DOM_VK_RIGHT_ALT = 0x01;
const unsigned long DOM_VK_LEFT_ALT = 0x02;
const unsigned long DOM_VK_LEFT_CONTROL = 0x03;
const unsigned long DOM_VK_RIGHT_CONTROL = 0x04;
const unsigned long DOM_VK_LEFT_SHIFT = 0x05;
const unsigned long DOM_VK_RIGHT_SHIFT = 0x06;
const unsigned long DOM_VK_LEFT_META = 0x07;
const unsigned long DOM_VK_RIGHT_META = 0x08;
const unsigned long DOM_VK_CAPS_LOCK = 0x09;
const unsigned long DOM_VK_DELETE = 0x0A;
const unsigned long DOM_VK_END = 0x0B;
const unsigned long DOM_VK_ENTER = 0x0C;
const unsigned long DOM_VK_ESCAPE = 0x0D;
const unsigned long DOM_VK_HOME = 0x0E;
const unsigned long DOM_VK_INSERT = 0x0F;
const unsigned long DOM_VK_NUM_LOCK = 0x10;
const unsigned long DOM_VK_PAUSE = 0x11;
const unsigned long DOM_VK_PRINTSCREEN = 0x12;
const unsigned long DOM_VK_SCROLL_LOCK = 0x13;
const unsigned long DOM_VK_LEFT = 0x14;
const unsigned long DOM_VK_RIGHT = 0x15;
const unsigned long DOM_VK_UP = 0x16;
const unsigned long DOM_VK_DOWN = 0x17;
const unsigned long DOM_VK_PAGE_DOWN = 0x18;
const unsigned long DOM_VK_PAGE_UP = 0x19;
const unsigned long DOM_VK_F1 = 0x1A;
const unsigned long DOM_VK_F2 = 0x1B;
const unsigned long DOM_VK_F3 = 0x1C;
const unsigned long DOM_VK_F4 = 0x1D;
const unsigned long DOM_VK_F5 = 0x1E;
const unsigned long DOM_VK_F6 = 0x1F;
const unsigned long DOM_VK_F7 = 0x20;
const unsigned long DOM_VK_F8 = 0x21;
const unsigned long DOM_VK_F9 = 0x22;
const unsigned long DOM_VK_F10 = 0x23;
const unsigned long DOM_VK_F11 = 0x24;
const unsigned long DOM_VK_F12 = 0x25;
const unsigned long DOM_VK_F13 = 0x26;
const unsigned long DOM_VK_F14 = 0x27;
const unsigned long DOM_VK_F15 = 0x28;
const unsigned long DOM_VK_F16 = 0x29;
const unsigned long DOM_VK_F17 = 0x2A;
const unsigned long DOM_VK_F18 = 0x2B;
const unsigned long DOM_VK_F19 = 0x2C;
const unsigned long DOM_VK_F20 = 0x2D;
const unsigned long DOM_VK_F21 = 0x2E;
const unsigned long DOM_VK_F22 = 0x2F;
const unsigned long DOM_VK_F23 = 0x30;
const unsigned long DOM_VK_F24 = 0x31;
attribute DOMString outputString;
attribute unsigned long keyVal;
attribute unsigned long virtKeyVal;
attribute boolean inputGenerated;
attribute boolean numPad;
boolean checkModifier(in unsigned long modifer);
void initKeyEvent(in DOMString typeArg,
in boolean canBubbleArg,
in boolean cancelableArg,
in views::AbstractView viewArg,
in unsigned short detailArg,
in DOMString outputStringArg,
in unsigned long keyValArg,
in unsigned long virtKeyValArg,
in boolean inputGeneratedArg,
in boolean numPadArg);
void initModifier(in unsigned long modifier,
in boolean value);
};
An integer indicating which key was pressed.
DOM_VK_CAPS_LOCKDOM_VK_DELETEDOM_VK_DOWNDOM_VK_ENDDOM_VK_ENTERDOM_VK_ESCAPEDOM_VK_F1DOM_VK_F10DOM_VK_F11DOM_VK_F12DOM_VK_F13DOM_VK_F14DOM_VK_F15DOM_VK_F16DOM_VK_F17DOM_VK_F18DOM_VK_F19DOM_VK_F2DOM_VK_F20DOM_VK_F21DOM_VK_F22DOM_VK_F23DOM_VK_F24DOM_VK_F3DOM_VK_F4DOM_VK_F5DOM_VK_F6DOM_VK_F7DOM_VK_F8DOM_VK_F9DOM_VK_HOMEDOM_VK_INSERTDOM_VK_LEFTDOM_VK_LEFT_ALTDOM_VK_LEFT_CONTROLDOM_VK_LEFT_METADOM_VK_LEFT_SHIFTDOM_VK_NUM_LOCKDOM_VK_PAGE_DOWNDOM_VK_PAGE_UPDOM_VK_PAUSEDOM_VK_PRINTSCREENDOM_VK_RIGHTDOM_VK_RIGHT_ALTDOM_VK_RIGHT_CONTROLDOM_VK_RIGHT_METADOM_VK_RIGHT_SHIFTDOM_VK_SCROLL_LOCKDOM_VK_UNDEFINEDDOM_VK_UPinputGenerated of
type booleaninputGenerated attribute indicates whether the
key event will normally cause visible output. If the key event does
not generate any visible output, such as the use of a function key
or the combination of certain modifier keys used in conjunction
with another key, then the value will be false. If visible output
is normally generated by the key event then the value will be
true.inputGenerated does not guarantee the
creation of a character. If a key event causing visible output is
cancelable it may be prevented from causing output. This attribute
is intended primarily to differentiate between keys events which
may or may not produce visible output depending on the system
state.keyVal of type
unsigned longkeyVal holds the value of the Unicode
character associated with the depressed key. If the key has no
Unicode representation or no Unicode character is available the
value is 0..numPad of type
booleannumPad attribute indicates whether or not the
key event was generated on the number pad section of the keyboard.
If the number pad was used to generate the key event the value is
true, otherwise the value is false.outputString of type
DOMStringoutputString holds the value of the output
generated by the key event. This may be a single Unicode character
or it may be a string. It may also be null in the case where no
output was generated by the key event.virtKeyVal of type
unsigned longvirtKeyVale holds the virtual
key code associated with the depressed key. If the key has a
Unicode representation or no virtual code is available the value is
DOM_VK_UNDEFINED.checkModifierCheckModifier method is used
to check the status of a single modifier key associated with a
KeyEvent. The identifier of the modifier in question
is passed into the CheckModifier function. If the
modifier is triggered it will return true. If not, it will return
false.modifer of type
unsigned long|
|
The status of the modifier represented as a boolean. |
initKeyEventinitKeyEvent method is used to
initialize the value of a MouseEvent created through
the DocumentEvent interface. This method may only be
called before the KeyEvent has been dispatched via the
dispatchEvent method, though it may be called multiple times during
that phase if necessary. If called multiple times, the final
invocation takes precedence. This method has no effect if called
after the event has been dispatched.
typeArg of type
DOMStringcanBubbleArg of type
booleancancelableArg of type
booleanviewArg of type
views::AbstractViewKeyEvent's
AbstractView.detailArg of type
unsigned shortoutputStringArg of type
DOMStringKeyEvent's outputString
attributekeyValArg of type
unsigned longKeyEvent's
keyValattributevirtKeyValArg of type
unsigned longKeyEvent's
virtKeyValattributeinputGeneratedArg of type
booleanKeyEvent's
inputGeneratedattributenumPadArg of type
booleanKeyEvent's
numPadattributeinitModifierinitModifier method is used to
initialize the values of any modifiers associated with a
KeyEvent created through the
DocumentEvent interface. This method may only be
called before the KeyEvent has been dispatched via the
dispatchEvent method, though it may be called multiple times during
that phase if necessary. If called multiple times with the same
modifier property the final invocation takes
precedence. Unless explicitly give a value of true, all modifiers
have a value of false. This method has no effect if called after
the event has been dispatched.modifier of type
unsigned longvalue of type
booleanThere are two major groups of key events. The first contains the
textEvent event. The textEvent event
indicates that text information has been entered, either in the
form of printable characters or non-printable text information such
as modifier keys. textEvent events are not necessarily
accompanied by the events of the second major groups of key events,
keydown and keyup.
The keydown and keyup events comprise
the second group of key events. These events are fired to indicate
the physical motion of the keys on the character generation device.
Depending on the input system being used, textEvent
events may or may not be generated for each pair of
keydown and keyup events.
EventListener grouping is intended to allow groups of
EventListeners to be registered which will each have
independent event flow within them which is not affected by changes
to event flow in any other group. This may be used to control
events separately in multiple views on a document. It may also be
used to develop an application which uses events without the
problem of possible interference by other applications running
within the same document.
The new interfaces added for EventListener grouping should not
interfere with the interfaces established in the Level 2 DOM. For
purposes of interoperability between the Level 2 DOM Event Model
and the new interfaces added in Level 3 the implementation can be
assumed to define a default EventGroup.
This EventGroup is
implicitly used in the registration of all
EventListeners registered via the Level 2 DOM Event
Model methods which do not specify an EventGroup.
The EventGroup interface functions primarily as a placeholder for separating the event flows when there are multiple groups of listeners for a DOM tree.
EventListeners can be registered without an
EventGroup using the existing EventTarget
interface, or with an associated EventGroup using the
new EventTargetGroup
interface. When an event is dispatched, it is dispatched
independently to each EventGroup. In particular, the
stopPropagation method of the Event
interface only stops propagation within an
EventListener's associated
EventGroup.
interface EventGroup {
boolean isSameEventGroup(in EventGroup eventGroup);
};
isSameEventGroupEventGroup is the same as the EventGroup
upon which the method is called.
eventGroup of type EventGroupEventGroup with which to check equality.|
|
Returns true if the |
The EventTargetGroup interface is implemented by the same set of
objects that implement the EventTarget interface,
namely all EventTargets in in implementation which
supports the Event model and the EventGroup extension.
interface EventTargetGroup {
void addEventListener(in DOMString type,
in EventListener listener,
in boolean useCapture,
in EventGroup eventGroup);
void removeEventListener(in DOMString type,
in EventListener listener,
in boolean useCapture,
in EventGroup eventGroup);
};
addEventListeneraddEventListener method of the
EventTarget interface, with the exception of the added
eventGroup parameter. The listener is registered with
this EventGroup
associated.
type of type
DOMStringlistener of type
EventListeneruseCapture of type
booleaneventGroup of type EventGroupEventGroup to
associate with the listener.removeEventListenerremoveEventListener method of the
EventTarget interface, with the exception of the added
eventGroup parameter. The listener registered with
this EventGroup
associated is removed.
type of type
DOMStringlistener of type
EventListeneruseCapture of type
booleaneventGroup of type EventGroupEventGroup to
associate with the listener.The DocumentEventGroup interface provides a
mechanism by which the user can create an EventGroup of
a type supported by the implementation. It is expected that the
DocumentEvent interface will be implemented on the
same object which implements the Documentinterface in
an implementation which supports the EventGroupextension.
interface DocumentEventGroup {
EventGroup createEventGroup();
};
createEventGroup|
The newly created |