summaryrefslogtreecommitdiffstats
path: root/js/keyboard.js
diff options
context:
space:
mode:
authorBen Firshman <ben@firshman.co.uk>2010-01-07 21:06:03 +0000
committerBen Firshman <ben@firshman.co.uk>2010-01-07 21:06:03 +0000
commit995ac3a872f00240d70a6e24e87cd2c7e97e2764 (patch)
tree4c6230930da911e7dbc578825cbfbe894b9dcfbc /js/keyboard.js
parent76473e6a74a7d596cce8ed55756dc49ececa7ddc (diff)
downloadjsnes-995ac3a872f00240d70a6e24e87cd2c7e97e2764.zip
jsnes-995ac3a872f00240d70a6e24e87cd2c7e97e2764.tar.gz
jsnes-995ac3a872f00240d70a6e24e87cd2c7e97e2764.tar.bz2
Moved things to nuke cache. These should be minified and versioned.
Diffstat (limited to 'js/keyboard.js')
-rw-r--r--js/keyboard.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/js/keyboard.js b/js/keyboard.js
new file mode 100644
index 0000000..73594d5
--- /dev/null
+++ b/js/keyboard.js
@@ -0,0 +1,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)}