forked from bfirsh/jsnes
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkeyboard.js
46 lines (40 loc) · 2.01 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
function Keyboard() {
this.keys = {KEY_A: 0, KEY_B: 1, KEY_SELECT: 2, KEY_START: 3, KEY_UP: 4, KEY_DOWN: 5, KEY_LEFT: 6, KEY_RIGHT: 7};
this.state1 = Array(8);
for (var i = 0; i < this.state1.length; i++) this.state1[i] = 0x40;
this.state2 = Array(8);
for (var i = 0; i < this.state2.length; i++) this.state2[i] = 0x40;
}
Keyboard.prototype.setKey = function(key, value) {
switch (key) {
case 88: this.state1[this.keys.KEY_A] = value; break; // X
case 90: this.state1[this.keys.KEY_B] = value; break; // Z
case 17: this.state1[this.keys.KEY_SELECT] = value; break; // Right Ctrl
case 13: this.state1[this.keys.KEY_START] = value; break; // Enter
case 38: this.state1[this.keys.KEY_UP] = value; break; // Up
case 40: this.state1[this.keys.KEY_DOWN] = value; break; // Down
case 37: this.state1[this.keys.KEY_LEFT] = value; break; // Left
case 39: this.state1[this.keys.KEY_RIGHT] = value; break; // Right
case 103: this.state2[this.keys.KEY_A] = value; break; // Num-7
case 105: this.state2[this.keys.KEY_B] = value; break; // Num-9
case 99: this.state2[this.keys.KEY_SELECT] = value; break; // Num-3
case 97: this.state2[this.keys.KEY_START] = value; break; // Num-1
case 104: this.state2[this.keys.KEY_UP] = value; break; // Num-8
case 98: this.state2[this.keys.KEY_DOWN] = value; break; // Num-2
case 100: this.state2[this.keys.KEY_LEFT] = value; break; // Num-4
case 102: this.state2[this.keys.KEY_RIGHT] = value; break; // Num-6
default: return true;
}
return false; // preventDefault
}
Keyboard.prototype.keyDown = function(evt) {
if (!this.setKey(evt.keyCode, 0x41) && evt.preventDefault)
evt.preventDefault();
}
Keyboard.prototype.keyUp = function(evt) {
if (!this.setKey(evt.keyCode, 0x40) && evt.preventDefault)
evt.preventDefault();
}
var keyboard = new Keyboard();
document.onkeydown = function(evt) {keyboard.keyDown(evt)}
document.onkeyup = function(evt) {keyboard.keyUp(evt)}