diff options
Diffstat (limited to 'src/keyboard.js')
| -rw-r--r-- | src/keyboard.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/keyboard.js b/src/keyboard.js new file mode 100644 index 0000000..8f9b12d --- /dev/null +++ b/src/keyboard.js @@ -0,0 +1,38 @@ +function keyboard(keyCode) { + var key = {}; + key.code = keyCode; + key.isDown = false; + key.isUp = true; + key.press = undefined; + key.release = undefined; + //The `downHandler` + key.downHandler = function(event) { + if (event.keyCode === key.code) { + if (key.isUp && key.press) key.press(); + key.isDown = true; + key.isUp = false; + } + event.preventDefault(); + }; + + //The `upHandler` + key.upHandler = function(event) { + if (event.keyCode === key.code) { + if (key.isDown && key.release) key.release(); + key.isDown = false; + key.isUp = true; + } + event.preventDefault(); + }; + + //Attach event listeners + window.addEventListener( + "keydown", key.downHandler.bind(key), false + ); + window.addEventListener( + "keyup", key.upHandler.bind(key), false + ); + return key; +} + +var k_space = keyboard(32) // space bar |
