UNPKG

motion

Version:

motion - moving development forward

70 lines (55 loc) 1.46 kB
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;