36 lines
935 B
JavaScript
36 lines
935 B
JavaScript
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));
|
|
}
|
|
}
|