31 lines
770 B
TypeScript
31 lines
770 B
TypeScript
import { InputDevice } from "../input-device";
|
|
|
|
export class InputKeyboard extends InputDevice {
|
|
|
|
static listenerInited = false;
|
|
|
|
constructor(
|
|
name: string,
|
|
) {
|
|
super(name, 'keyboard');
|
|
this.attachEvents();
|
|
}
|
|
|
|
private attachEvents() {
|
|
if (InputKeyboard.listenerInited) {
|
|
return;
|
|
}
|
|
|
|
window.addEventListener('keydown', e => this.catchKey(e, 1));
|
|
window.addEventListener('keyup', e => this.catchKey(e, 0));
|
|
InputKeyboard.listenerInited = true;
|
|
}
|
|
|
|
private catchKey(event: KeyboardEvent, value: number = 1, angle: number = 0): boolean {
|
|
const key = event.key;
|
|
super.setKey(key, value, angle);
|
|
event.preventDefault();
|
|
return false;
|
|
}
|
|
}
|