diff options
author | Ben Firshman <ben@firshman.co.uk> | 2010-01-07 21:06:03 +0000 |
---|---|---|
committer | Ben Firshman <ben@firshman.co.uk> | 2010-01-07 21:06:03 +0000 |
commit | 995ac3a872f00240d70a6e24e87cd2c7e97e2764 (patch) | |
tree | 4c6230930da911e7dbc578825cbfbe894b9dcfbc /js/keyboard.js | |
parent | 76473e6a74a7d596cce8ed55756dc49ececa7ddc (diff) | |
download | jsnes-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.js | 46 |
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)} |