motion
Version:
motion - moving development forward
70 lines (55 loc) • 1.46 kB
JavaScript
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _keycode = require('keycode');
var _keycode2 = _interopRequireDefault(_keycode);
var keys = {};
exports.keys = keys;
var listeners = {};
var pressListeners = {};
on.keydown(window, function (e) {
var code = (0, _keycode2.default)(e.keyCode);
keys[code] = true;
keyDown(code);
});
on.keyup(window, function (e) {
var code = (0, _keycode2.default)(e.keyCode);
keys[code] = false;
keyUp(code);
});
on.keypress(window, function (e) {
var code = (0, _keycode2.default)(e.keyCode);
var queue = pressListeners[code];
queue && queue.forEach(function (listener) {
return listener();
});
});
function keyDown(code) {
if (!listeners[code]) return;
listeners[code].forEach(function (listener) {
return listener(true);
});
}
function keyUp(code) {
if (!listeners[code]) return;
listeners[code].forEach(function (listener) {
return listener(false);
});
}
function onKey(code, fn) {
listeners[code] = listeners[code] || [];
listeners[code].push(fn);
}
exports.onKey = onKey;
function onKeyPress(code, fn) {
pressListeners[code] = pressListeners[code] || [];
pressListeners[code].push(fn);
}
exports.onKeyPress = onKeyPress;
function onKeyDown(code, fn) {
onKey(code, function (val) {
return val && fn();
});
}
exports.onKeyDown = onKeyDown;