diff --git a/lib.js b/lib.js index 2ead659..3379dee 100644 --- a/lib.js +++ b/lib.js @@ -29,6 +29,29 @@ window.addShortcut = function(callback,keyCodeValues){ window.addEventListener('keydown',funct); return funct; }; +window.addRemovalShortcut = function(callback,keyCodeValues){ + if(typeof keyCodeValues === "number") + keyCodeValues = [keyCodeValues]; + var funct = function(cb,val){ + return function(e){ + keyStrokes[e.keyCode] = false; + callDefinedRemovalFunction(cb,val); + }; + }(callback,keyCodeValues); + window.addEventListener('keyup',funct); + return funct; +}; +window.callDefinedRemovalFunction = function(callback,keyCodeValues){ + if(typeof callback !== "function") + throw new TypeError("Expected callback as first argument"); + if(typeof keyCodeValues !== "object" && (!Array.isArray || Array.isArray(keyCodeValues))) + throw new TypeError("Expected array as second argument"); + var pressedKeysValid = true; + for(var i = 0; i < keyCodeValues.length; ++i) + pressedKeysValid = pressedKeysValid && !keyStrokes[keyCodeValues[i]]; + if(pressedKeysValid) + callback(); +}; window.addEventListener('keyup',function(e){ keyStrokes[e.keyCode] = false; }); @@ -58,4 +81,4 @@ var key = { SHIFT:16,CTRL:17,ALT:18, ENTER:13, LEFT:37,UP:38,RIGHT:39,DOWN:40 -}; +}; \ No newline at end of file