diff --git a/ts/domtools.classes.keyboard.ts b/ts/domtools.classes.keyboard.ts index 03c4bc3..499ee67 100644 --- a/ts/domtools.classes.keyboard.ts +++ b/ts/domtools.classes.keyboard.ts @@ -144,6 +144,16 @@ export class Keyboard { return subject; } + public triggerKeyPress(keysArg: Key[]) { + for (const key of keysArg) { + this.pressedKeys.add(key); + } + this.checkMatchingKeyboardSubjects(); + for (const key of keysArg) { + this.pressedKeys.delete(key); + } + } + public startListening() { this.domNode.addEventListener('keydown', this.handleKeyDown); this.domNode.addEventListener('keyup', this.handleKeyUp); @@ -162,13 +172,16 @@ export class Keyboard { private handleKeyDown = (event: KeyboardEvent) => { this.pressedKeys.add(event.keyCode); + this.checkMatchingKeyboardSubjects(event); + }; + private checkMatchingKeyboardSubjects(payloadArg?) { this.mapCombosToHandlers.forEach((subjectArg, keysArg) => { if (this.areAllKeysPressed(keysArg)) { - subjectArg.next(event); + subjectArg.next(payloadArg); } }); - }; + } private handleKeyUp = (event: KeyboardEvent) => { this.pressedKeys.delete(event.keyCode);