Skip to content
Snippets Groups Projects
Commit 1e865eca authored by Alexander Rose's avatar Alexander Rose
Browse files

key event for input-observer

parent 3983073d
No related branches found
No related tags found
No related merge requests found
/** /**
* Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
* *
* @author Alexander Rose <alexander.rose@weirdbyte.de> * @author Alexander Rose <alexander.rose@weirdbyte.de>
*/ */
...@@ -160,6 +160,11 @@ export type PinchInput = { ...@@ -160,6 +160,11 @@ export type PinchInput = {
isStart: boolean isStart: boolean
} & BaseInput } & BaseInput
export type KeyInput = {
key: string,
modifiers: ModifiersKeys
}
export type ResizeInput = { export type ResizeInput = {
} }
...@@ -192,6 +197,7 @@ interface InputObserver { ...@@ -192,6 +197,7 @@ interface InputObserver {
readonly enter: Observable<undefined>, readonly enter: Observable<undefined>,
readonly resize: Observable<ResizeInput>, readonly resize: Observable<ResizeInput>,
readonly modifiers: Observable<ModifiersKeys> readonly modifiers: Observable<ModifiersKeys>
readonly key: Observable<KeyInput>
dispose: () => void dispose: () => void
} }
...@@ -208,6 +214,7 @@ function createEvents() { ...@@ -208,6 +214,7 @@ function createEvents() {
leave: new Subject<undefined>(), leave: new Subject<undefined>(),
enter: new Subject<undefined>(), enter: new Subject<undefined>(),
modifiers: new Subject<ModifiersKeys>(), modifiers: new Subject<ModifiersKeys>(),
key: new Subject<KeyInput>(),
}; };
} }
...@@ -228,11 +235,11 @@ namespace InputObserver { ...@@ -228,11 +235,11 @@ namespace InputObserver {
let { noScroll, noMiddleClickScroll, noContextMenu, noPinchZoom } = { ...DefaultInputObserverProps, ...props }; let { noScroll, noMiddleClickScroll, noContextMenu, noPinchZoom } = { ...DefaultInputObserverProps, ...props };
let lastTouchDistance = 0; let lastTouchDistance = 0;
const pointerDown = Vec2.zero(); const pointerDown = Vec2();
const pointerStart = Vec2.zero(); const pointerStart = Vec2();
const pointerEnd = Vec2.zero(); const pointerEnd = Vec2();
const pointerDelta = Vec2.zero(); const pointerDelta = Vec2();
const rectSize = Vec2.zero(); const rectSize = Vec2();
const modifierKeys: ModifiersKeys = { const modifierKeys: ModifiersKeys = {
shift: false, shift: false,
alt: false, alt: false,
...@@ -251,7 +258,7 @@ namespace InputObserver { ...@@ -251,7 +258,7 @@ namespace InputObserver {
let isInside = false; let isInside = false;
const events = createEvents(); const events = createEvents();
const { drag, interactionEnd, wheel, pinch, click, move, leave, enter, resize, modifiers } = events; const { drag, interactionEnd, wheel, pinch, click, move, leave, enter, resize, modifiers, key } = events;
attach(); attach();
...@@ -288,6 +295,7 @@ namespace InputObserver { ...@@ -288,6 +295,7 @@ namespace InputObserver {
window.addEventListener('blur', handleBlur); window.addEventListener('blur', handleBlur);
window.addEventListener('keyup', handleKeyUp as EventListener, false); window.addEventListener('keyup', handleKeyUp as EventListener, false);
window.addEventListener('keydown', handleKeyDown as EventListener, false); window.addEventListener('keydown', handleKeyDown as EventListener, false);
window.addEventListener('keypress', handleKeyPress as EventListener, false);
window.addEventListener('resize', onResize, false); window.addEventListener('resize', onResize, false);
} }
...@@ -313,6 +321,7 @@ namespace InputObserver { ...@@ -313,6 +321,7 @@ namespace InputObserver {
window.removeEventListener('blur', handleBlur); window.removeEventListener('blur', handleBlur);
window.removeEventListener('keyup', handleKeyUp as EventListener, false); window.removeEventListener('keyup', handleKeyUp as EventListener, false);
window.removeEventListener('keydown', handleKeyDown as EventListener, false); window.removeEventListener('keydown', handleKeyDown as EventListener, false);
window.removeEventListener('keypress', handleKeyPress as EventListener, false);
window.removeEventListener('resize', onResize, false); window.removeEventListener('resize', onResize, false);
} }
...@@ -358,6 +367,13 @@ namespace InputObserver { ...@@ -358,6 +367,13 @@ namespace InputObserver {
if (changed && isInside) modifiers.next(getModifierKeys()); if (changed && isInside) modifiers.next(getModifierKeys());
} }
function handleKeyPress(event: KeyboardEvent) {
key.next({
key: event.key,
modifiers: getModifierKeys()
});
}
function getCenterTouch(ev: TouchEvent): PointerEvent { function getCenterTouch(ev: TouchEvent): PointerEvent {
const t0 = ev.touches[0]; const t0 = ev.touches[0];
const t1 = ev.touches[1]; const t1 = ev.touches[1];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment