-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeyboard.js
51 lines (42 loc) · 1.16 KB
/
keyboard.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Keyboard {
constructor() {
this.keymap = {
49: 0x1, // 1 1
50: 0x2, // 2 2
51: 0x3, // 3 3
52: 0xc, // 4 C
81: 0x4, // Q 4
87: 0x5, // W 5
69: 0x6, // E 6
82: 0xD, // R D
65: 0x7, // A 7
83: 0x8, // S 8
68: 0x9, // D 9
70: 0xE, // F E
90: 0xA, // Z A
18: 0x0, // X 0
67: 0xB, // C B
86: 0xF // V F
};
this.keyPress=[];
this.onNextKeyPress = null;
window.addEventListener("keydown",this.onKeyDown.bind(this),false);
window.addEventListener("keyup",this.onKeyUp.bind(this), false);
}
isKeyPressed(keyCode){
return this.keyPress[keyCode];
}
onKeyDown(event){
let key=this.keymap[event.which];
this.keyPress[key]=true;
if(this.onNextKeyPress!==null && key){
this.onNextKeyPress(parseInt(key));
this.onNextKeyPress=null;
}
}
onKeyUp(event){
let key=this.keymap[event.which];
this.keyPress[key]=false;
}
}
export default Keyboard;