You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
659 B
JavaScript

class KeyDownManager {
handlerList = [];
// return id;
register(handler, name) {
this.handlerList.push([name, handler]);
console.log("register keydown", name);
}
deregister(name) {
console.log("deregister keydown", name);
this.handlerList = this.handlerList.filter((v) => v[0] !== name);
}
constructor() {
document.addEventListener("keydown", (event) => {
for (let i = this.handlerList.length - 1; i >= 0; i--) {
let ret = this.handlerList[i][1](event);
if (!ret) {
break;
}
}
});
}
}
var globalKeyDownManager = new KeyDownManager();
export { globalKeyDownManager };