Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
TheLazySquid
GitHub Repository: TheLazySquid/GimkitCheat
Path: blob/main/src/keybindManager.ts
8160 views
1
class KeybindManager {
2
keysPressed = new Set<string>();
3
keybinds = new Map<Set<string>, () => void>();
4
5
constructor() {
6
window.addEventListener('keydown', (e) => {
7
this.keysPressed.add(e.key.toLowerCase());
8
9
// check if any keybinds are pressed
10
checkKeybinds: for(const [keys, callback] of this.keybinds) {
11
if(keys.size == 0) continue;
12
13
for(const key of keys) {
14
if(!this.keysPressed.has(key)) {
15
continue checkKeybinds;
16
}
17
}
18
19
callback();
20
}
21
});
22
23
window.addEventListener('keyup', (e) => {
24
this.keysPressed.delete(e.key.toLowerCase());
25
});
26
}
27
28
addKeybind(keys: Set<string>, callback: () => void) {
29
this.keybinds.set(keys, callback);
30
}
31
32
removeKeybind(keys: Set<string>) {
33
this.keybinds.delete(keys);
34
}
35
}
36
37
const keybindManager = new KeybindManager();
38
export default keybindManager;
39