class KeyAction { key; keyup; keydown; data; constructor(key, ku, kd, data) { this.key = key; this.keyup = ku; this.keydown = kd; this.data = data; } } export class Input { handlers = new Map(); constructor() { window.addEventListener("keyup", e => { this.handlers.forEach(ka => { if (ka.keyup !== null && ka.key == e.code) { ka.keyup(ka.data); } }); }); window.addEventListener("keydown", e => { this.handlers.forEach(ka => { if (ka.keydown !== null && ka.key == e.code) { ka.keydown(ka.data); } }); }); } //TODO: add modifier key support addKeyAction(key, modifiers, data, keydown, keyup) { this.handlers.set(key, new KeyAction(key, keydown, keyup, data)); } }