keysim
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -18,2 +18,11 @@ (function (global, factory) { | ||
// Key Events | ||
var KeyEvents = { | ||
DOWN: 1 << 0, | ||
PRESS: 1 << 1, | ||
UP: 1 << 2, | ||
INPUT: 1 << 3 | ||
}; | ||
KeyEvents.ALL = KeyEvents.DOWN | KeyEvents.PRESS | KeyEvents.UP | KeyEvents.INPUT; | ||
/** | ||
@@ -230,2 +239,3 @@ * Represents a keystroke, or a single key code with a set of active modifiers. | ||
* @param {boolean=} transitionModifiers | ||
* @param {number} events | ||
*/ | ||
@@ -235,19 +245,30 @@ | ||
var transitionModifiers = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2]; | ||
var events = arguments.length <= 3 || arguments[3] === undefined ? KeyEvents.ALL : arguments[3]; | ||
if (transitionModifiers) { | ||
this.dispatchModifierStateTransition(target, 0, keystroke.modifiers); | ||
this.dispatchModifierStateTransition(target, 0, keystroke.modifiers, events); | ||
} | ||
var keydownEvent = this.createEventFromKeystroke('keydown', keystroke, target); | ||
var keydownEvent = undefined; | ||
if (events & KeyEvents.DOWN) { | ||
keydownEvent = this.createEventFromKeystroke('keydown', keystroke, target); | ||
} | ||
if (target.dispatchEvent(keydownEvent) && this.targetCanReceiveTextInput(target)) { | ||
var keypressEvent = this.createEventFromKeystroke('keypress', keystroke, target); | ||
if (keypressEvent.charCode && target.dispatchEvent(keypressEvent)) { | ||
var textinputEvent = this.createEventFromKeystroke('textInput', keystroke, target); | ||
target.dispatchEvent(textinputEvent); | ||
if (keydownEvent && target.dispatchEvent(keydownEvent) && this.targetCanReceiveTextInput(target)) { | ||
var keypressEvent = undefined; | ||
if (events & KeyEvents.PRESS) { | ||
keypressEvent = this.createEventFromKeystroke('keypress', keystroke, target); | ||
} | ||
if (keypressEvent && keypressEvent.charCode && target.dispatchEvent(keypressEvent)) { | ||
if (events & KeyEvents.INPUT) { | ||
var textinputEvent = this.createEventFromKeystroke('textInput', keystroke, target); | ||
target.dispatchEvent(textinputEvent); | ||
} | ||
} | ||
} | ||
var keyupEvent = this.createEventFromKeystroke('keyup', keystroke, target); | ||
target.dispatchEvent(keyupEvent); | ||
if (events & KeyEvents.UP) { | ||
var keyupEvent = this.createEventFromKeystroke('keyup', keystroke, target); | ||
target.dispatchEvent(keyupEvent); | ||
} | ||
@@ -265,2 +286,3 @@ if (transitionModifiers) { | ||
* @param {number} toModifierState | ||
* @param {number} events | ||
* @private | ||
@@ -270,2 +292,4 @@ */ | ||
Keyboard.prototype.dispatchModifierStateTransition = function dispatchModifierStateTransition(target, fromModifierState, toModifierState) { | ||
var events = arguments.length <= 3 || arguments[3] === undefined ? KeyEvents.ALL : arguments[3]; | ||
var currentModifierState = fromModifierState; | ||
@@ -281,3 +305,7 @@ var didHaveMeta = (fromModifierState & META) === META; | ||
if (didHaveMeta === true && willHaveMeta === false) { | ||
var includeKeyUp = events & KeyEvents.UP; | ||
var includeKeyPress = events & KeyEvents.PRESS; | ||
var includeKeyDown = events & KeyEvents.DOWN; | ||
if (includeKeyUp && didHaveMeta === true && willHaveMeta === false) { | ||
// Release the meta key. | ||
@@ -288,3 +316,3 @@ currentModifierState &= ~META; | ||
if (didHaveCtrl === true && willHaveCtrl === false) { | ||
if (includeKeyUp && didHaveCtrl === true && willHaveCtrl === false) { | ||
// Release the ctrl key. | ||
@@ -295,3 +323,3 @@ currentModifierState &= ~CTRL; | ||
if (didHaveShift === true && willHaveShift === false) { | ||
if (includeKeyUp && didHaveShift === true && willHaveShift === false) { | ||
// Release the shift key. | ||
@@ -302,3 +330,3 @@ currentModifierState &= ~SHIFT; | ||
if (didHaveAlt === true && willHaveAlt === false) { | ||
if (includeKeyUp && didHaveAlt === true && willHaveAlt === false) { | ||
// Release the alt key. | ||
@@ -309,3 +337,3 @@ currentModifierState &= ~ALT; | ||
if (didHaveMeta === false && willHaveMeta === true) { | ||
if (includeKeyDown && didHaveMeta === false && willHaveMeta === true) { | ||
// Press the meta key. | ||
@@ -316,3 +344,3 @@ currentModifierState |= META; | ||
if (didHaveCtrl === false && willHaveCtrl === true) { | ||
if (includeKeyDown && didHaveCtrl === false && willHaveCtrl === true) { | ||
// Press the ctrl key. | ||
@@ -323,3 +351,3 @@ currentModifierState |= CTRL; | ||
if (didHaveShift === false && willHaveShift === true) { | ||
if (includeKeyDown && didHaveShift === false && willHaveShift === true) { | ||
// Press the shift key. | ||
@@ -330,3 +358,3 @@ currentModifierState |= SHIFT; | ||
if (didHaveAlt === false && willHaveAlt === true) { | ||
if (includeKeyDown && didHaveAlt === false && willHaveAlt === true) { | ||
// Press the alt key. | ||
@@ -560,2 +588,3 @@ currentModifierState |= ALT; | ||
exports.KeyEvents = KeyEvents; | ||
exports.Keystroke = Keystroke; | ||
@@ -562,0 +591,0 @@ exports.Keyboard = Keyboard; |
@@ -8,2 +8,11 @@ /* jshint esnext:true, undef:true, unused:true */ | ||
// Key Events | ||
export const KeyEvents = { | ||
DOWN : 1<<0, | ||
PRESS : 1<<1, | ||
UP : 1<<2, | ||
INPUT : 1<<3 | ||
}; | ||
KeyEvents.ALL = KeyEvents.DOWN | KeyEvents.PRESS | KeyEvents.UP | KeyEvents.INPUT; | ||
/** | ||
@@ -193,20 +202,31 @@ * Represents a keystroke, or a single key code with a set of active modifiers. | ||
* @param {boolean=} transitionModifiers | ||
* @param {number} events | ||
*/ | ||
dispatchEventsForKeystroke(keystroke, target, transitionModifiers=true) { | ||
dispatchEventsForKeystroke(keystroke, target, transitionModifiers=true, events=KeyEvents.ALL) { | ||
if (transitionModifiers) { | ||
this.dispatchModifierStateTransition(target, 0, keystroke.modifiers); | ||
this.dispatchModifierStateTransition(target, 0, keystroke.modifiers, events); | ||
} | ||
const keydownEvent = this.createEventFromKeystroke('keydown', keystroke, target); | ||
let keydownEvent; | ||
if (events & KeyEvents.DOWN) { | ||
keydownEvent = this.createEventFromKeystroke('keydown', keystroke, target); | ||
} | ||
if (target.dispatchEvent(keydownEvent) && this.targetCanReceiveTextInput(target)) { | ||
const keypressEvent = this.createEventFromKeystroke('keypress', keystroke, target); | ||
if (keypressEvent.charCode && target.dispatchEvent(keypressEvent)) { | ||
const textinputEvent = this.createEventFromKeystroke('textInput', keystroke, target); | ||
target.dispatchEvent(textinputEvent); | ||
if (keydownEvent && target.dispatchEvent(keydownEvent) && this.targetCanReceiveTextInput(target)) { | ||
let keypressEvent; | ||
if (events & KeyEvents.PRESS) { | ||
keypressEvent = this.createEventFromKeystroke('keypress', keystroke, target); | ||
} | ||
if (keypressEvent && keypressEvent.charCode && target.dispatchEvent(keypressEvent)) { | ||
if (events & KeyEvents.INPUT) { | ||
const textinputEvent = this.createEventFromKeystroke('textInput', keystroke, target); | ||
target.dispatchEvent(textinputEvent); | ||
} | ||
} | ||
} | ||
const keyupEvent = this.createEventFromKeystroke('keyup', keystroke, target); | ||
target.dispatchEvent(keyupEvent); | ||
if (events & KeyEvents.UP) { | ||
const keyupEvent = this.createEventFromKeystroke('keyup', keystroke, target); | ||
target.dispatchEvent(keyupEvent); | ||
} | ||
@@ -224,5 +244,6 @@ if (transitionModifiers) { | ||
* @param {number} toModifierState | ||
* @param {number} events | ||
* @private | ||
*/ | ||
dispatchModifierStateTransition(target, fromModifierState, toModifierState) { | ||
dispatchModifierStateTransition(target, fromModifierState, toModifierState, events=KeyEvents.ALL) { | ||
let currentModifierState = fromModifierState; | ||
@@ -238,3 +259,7 @@ let didHaveMeta = (fromModifierState & META) === META; | ||
if (didHaveMeta === true && willHaveMeta === false) { | ||
const includeKeyUp = events & KeyEvents.UP; | ||
const includeKeyPress = events & KeyEvents.PRESS; | ||
const includeKeyDown = events & KeyEvents.DOWN; | ||
if (includeKeyUp && didHaveMeta === true && willHaveMeta === false) { | ||
// Release the meta key. | ||
@@ -251,3 +276,3 @@ currentModifierState &= ~META; | ||
if (didHaveCtrl === true && willHaveCtrl === false) { | ||
if (includeKeyUp && didHaveCtrl === true && willHaveCtrl === false) { | ||
// Release the ctrl key. | ||
@@ -264,3 +289,3 @@ currentModifierState &= ~CTRL; | ||
if (didHaveShift === true && willHaveShift === false) { | ||
if (includeKeyUp && didHaveShift === true && willHaveShift === false) { | ||
// Release the shift key. | ||
@@ -277,3 +302,3 @@ currentModifierState &= ~SHIFT; | ||
if (didHaveAlt === true && willHaveAlt === false) { | ||
if (includeKeyUp && didHaveAlt === true && willHaveAlt === false) { | ||
// Release the alt key. | ||
@@ -291,3 +316,3 @@ currentModifierState &= ~ALT; | ||
if (didHaveMeta === false && willHaveMeta === true) { | ||
if (includeKeyDown && didHaveMeta === false && willHaveMeta === true) { | ||
// Press the meta key. | ||
@@ -304,3 +329,3 @@ currentModifierState |= META; | ||
if (didHaveCtrl === false && willHaveCtrl === true) { | ||
if (includeKeyDown && didHaveCtrl === false && willHaveCtrl === true) { | ||
// Press the ctrl key. | ||
@@ -317,3 +342,3 @@ currentModifierState |= CTRL; | ||
if (didHaveShift === false && willHaveShift === true) { | ||
if (includeKeyDown && didHaveShift === false && willHaveShift === true) { | ||
// Press the shift key. | ||
@@ -330,3 +355,3 @@ currentModifierState |= SHIFT; | ||
if (didHaveAlt === false && willHaveAlt === true) { | ||
if (includeKeyDown && didHaveAlt === false && willHaveAlt === true) { | ||
// Press the alt key. | ||
@@ -333,0 +358,0 @@ currentModifierState |= ALT; |
{ | ||
"name": "keysim", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "Keyboard simulator for JavaScript.", | ||
@@ -5,0 +5,0 @@ "main": "dist/keysim.js", |
43550
1032