tillarnold/keyifyer

View on GitHub
index.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';
var globalKeys = {};
var preventDefault = {};

var invertObject = require('invert-hash');
var vkey = require('vkey');
var convert = invertObject(vkey);

document.addEventListener('keydown', function(e) {
  globalKeys[e.keyCode] = true;
  if (preventDefault[e.keyCode] === true) {
    e.preventDefault();
  }
});

document.addEventListener('keyup', function(e) {
  globalKeys[e.keyCode] = false;
});

var Keyifyer = function Keyifyer() {
  this.reset();

  var that = this;
  document.addEventListener('keydown', function(e) {
    that.pressedKeys[e.keyCode] = true;
  });

};


Keyifyer.prototype.wasPressed = function(c) {
  return this.wasPressedKeycode(convert[c]);
};

Keyifyer.prototype.wasPressedKeycode = function(i) {
  return (this.pressedKeys[i] === true);
};

Keyifyer.prototype.reset = function() {
  this.pressedKeys = {};
};

Keyifyer.isPressed = function(c) {
  return this.isPressedKeycode(convert[c]);
};

Keyifyer.isPressedKeycode = function(i) {
  return (globalKeys[i] === true);
};

Keyifyer.prototype.isPressed = Keyifyer.isPressed;

Keyifyer.prototype.isPressedKeycode = Keyifyer.isPressedKeycode;

Keyifyer.preventDefaultFor = function(i) {
  preventDefault[convert[i]] = true;
};

Keyifyer.keyify = function(f) {

  var k = new Keyifyer();
  return function() {
    var args = Array.prototype.slice.call(arguments);
    args.unshift(k);

    var returnValue = f.apply(null, args);
    k.reset();

    return returnValue;
  };
};

module.exports = Keyifyer;