A custom KeyboardEvent that attempts to eliminate cross-browser inconsistencies, and also provide both keyCode and charCode information for all key events (when such information can be determined).

KeyEvent tries to provide a higher level, more polished keyboard event information on top of the "raw" KeyboardEvent.

The mechanics of using KeyEvents is a little different from the underlying KeyboardEvent. To use KeyEvents, you need to create a stream and then add KeyEvents to the stream, rather than using the EventTarget.dispatchEvent. Here's an example usage:

// Initialize a stream for the KeyEvents:
var stream = KeyEvent.keyPressEvent.forTarget(document.body);
// Start listening to the stream of KeyEvents.
stream.listen((keyEvent) =>
    window.console.log('KeyPress event detected ${keyEvent.charCode}'));
...
// Add a new KeyEvent of someone pressing the 'A' key to the stream so
// listeners can know a KeyEvent happened.
stream.add(new KeyEvent('keypress', keyCode: 65, charCode: 97));

This class is very much a work in progress, and we'd love to get information on how we can make this class work with as many international keyboards as possible. Bugs welcome!

Implements
Annotations
  • @Experimental()

Static Properties

keyDownEvent EventStreamProvider<KeyEvent>

Accessor to provide a stream of KeyEvents on the desired target.

read / write
keyPressEvent EventStreamProvider<KeyEvent>

Accessor to provide a stream of KeyEvents on the desired target.

read / write
keyUpEvent EventStreamProvider<KeyEvent>

Accessor to provide a stream of KeyEvents on the desired target.

read / write

Constructors

KeyEvent(String type, { Window view, bool canBubble: true, bool cancelable: true, int keyCode: 0, int charCode: 0, int keyLocation: 1, bool ctrlKey: false, bool altKey: false, bool shiftKey: false, bool metaKey: false, EventTarget currentTarget })

Programmatically create a new KeyEvent (and KeyboardEvent).

factory
KeyEvent.wrap(KeyboardEvent parent)

Construct a KeyEvent with parent as the event we're emulating.

Properties

altKey bool

Calculated value of whether the alt key is pressed is for this event.

read-only
charCode int

Calculated value of what the estimated charCode is for this event.

read-only
ctrlKey bool

True if the ctrl key is pressed during this event.

read-only
currentTarget EventTarget

The currently registered target for this event.

read-only
detail int

read-only
keyCode int

Calculated value of what the estimated keyCode is for this event.

read-only
keyLocation int

Accessor to the part of the keyboard that the key was pressed from (one of KeyLocation.STANDARD, KeyLocation.RIGHT, KeyLocation.LEFT, KeyLocation.NUMPAD, KeyLocation.MOBILE, KeyLocation.JOYSTICK).

read-only
location int

@Experimental(), read-only
metaKey bool

True if the Meta (or Mac command) key is pressed during this event.

read-only
repeat bool

@Experimental(), read-only
shiftKey bool

True if the shift key was pressed during this event.

read-only
view Window

read-only
which int

Calculated value of what the estimated keyCode is for this event.

read-only
bubbles bool

read-only, inherited
cancelable bool

read-only, inherited
code String

@DocsEditable(), @DomName('KeyboardEvent.code'), @Experimental(), read-only, inherited
defaultPrevented bool

read-only, inherited
eventPhase int

read-only, inherited
hashCode int

The hash code for this object.

read-only, inherited
key String

@DocsEditable(), @DomName('KeyboardEvent.key'), @Experimental(), read-only, inherited
matchingTarget Element

A pointer to the element whose CSS selector matched within which an event was fired. If this Event was not associated with any Event delegation, accessing this value will throw an UnsupportedError.

read-only, inherited
path List<Node>

This event's path, taking into account shadow DOM.

@Experimental(), read-only, inherited
runtimeType Type

A representation of the runtime type of the object.

read-only, inherited
sourceDevice InputDevice

@DocsEditable(), @DomName('UIEvent.sourceDevice'), @Experimental(), read-only, inherited
target EventTarget

read-only, inherited
timeStamp int

read-only, inherited
type String

read-only, inherited
wrapped Event

Needed because KeyboardEvent is implements.

final, inherited

Operators

operator ==(other) bool

The equality operator.

inherited

Methods

getModifierState(String keyArgument) bool

@Experimental()
noSuchMethod(Invocation invocation) → dynamic

Invoked when a non-existent method or property is accessed.

inherited
preventDefault() → void

inherited
stopImmediatePropagation() → void

inherited
stopPropagation() → void

inherited
toString() String

Returns a string representation of this object.

inherited