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.

42 lines
782 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};