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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
JSNES.Keyboard = function() {
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;
}
var self = this;
$(document)
.bind('keydown', function(evt) {self.keyDown(evt)})
.bind('keyup', function(evt) {self.keyUp(evt)})
.bind('keypress', function(evt) {self.keyPress(evt)});
}
JSNES.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
},
keyDown: function(evt) {
if (!this.setKey(evt.keyCode, 0x41) && evt.preventDefault)
evt.preventDefault();
},
keyPress: function(evt) {
evt.preventDefault();
},
keyUp: function(evt) {
if (!this.setKey(evt.keyCode, 0x40) && evt.preventDefault)
evt.preventDefault();
}
}
|