class Key { constructor(onKeydown) { this._pressed = {}; this.cb_onKeydown = onKeydown; window.addEventListener('keydown', e => this.onKeydown(e)); window.addEventListener('keyup', e => this.onKeyup(e)); } setKeydown(fn) { this.cb_onKeydown = fn; } isDown(keyCode) { return this._pressed[keyCode]; } onKeydown(event) { this._pressed[event.code] = true; if (this.cb_onKeydown) this.cb_onKeydown(event); } onKeyup(event) { delete this._pressed[event.code]; } }