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];
    }
}