From 286833cb153aa3555a789cd6b0a052b7c5fbdd09 Mon Sep 17 00:00:00 2001 From: Patrick Davison Date: Tue, 29 Jan 2013 15:57:53 -0800 Subject: Obvious use is the contra code. duh. - But this might be useful for other key-commands. For no-mouse play. --- js/jquery.keystrokes.min.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 js/jquery.keystrokes.min.js (limited to 'js') diff --git a/js/jquery.keystrokes.min.js b/js/jquery.keystrokes.min.js new file mode 100644 index 0000000..6874369 --- /dev/null +++ b/js/jquery.keystrokes.min.js @@ -0,0 +1,14 @@ +(function($){var keystrokes='keystrokes';$.event.special[keystrokes]={debug:false,global:{customValidation:null},add:function(obj){var h=obj.handler,data=obj.data,namespace=obj.namespace;var $elem=$(this),delegate=$.event.special[keystrokes]._delegate;var stack=$.isArray(data)?data:[data];stack=$.event.special[keystrokes]._addPrivateKeys.call(this,stack,namespace,h);var tmp_stack=$elem.data('stack');stack=(tmp_stack)?tmp_stack.concat(stack):stack;$elem.data('stack',stack);},remove:function(obj){$.event.special[keystrokes]._removeKeyListeners.call(this,obj.namespace||keystrokes);},setup:function(obj,namespaces,handler){var $elem=$(this),delegate=$.event.special[keystrokes]._delegate;$elem.bind('keyup.'+keystrokes,delegate).bind('keydown.'+keystrokes,delegate);$elem.data('keys_down',[]);$elem.data('keys_string',[]);$elem.data('joined',false);},teardown:function(namespaces){var $elem=$(this);$elem.unbind('keyup.'+keystrokes).unbind('keydown.'+keystrokes);$elem.removeData('keys_down');$elem.removeData('keys_string');$elem.removeData('joined');$elem.removeData('stack');},_delegate:function(e){$.event.special[keystrokes]['_'+e.type].call($.event.special[keystrokes],e,this);},_addPrivateKeys:function(data_stack,namespace,handler){var i=data_stack.length;while(i--){data_stack[i].name=(namespace)?keystrokes+'.'+namespace:keystrokes;data_stack[i]._namespace=namespace||keystrokes;delete handler.data;data_stack[i]._handler=handler;} +return data_stack;},_removeKeyListeners:function(name){var $elem=$(this),stack=$elem.data('stack'),stack_len=stack.length;while(stack_len--){if(stack[stack_len]._namespace===name){stack.splice(stack_len,1);}};$elem.data('stack',stack);},_keydown:function(event,elem){var $elem=$(elem),self=this,temp_keys_down=$elem.data('keys_down');if(elem!=event.target&&(/textarea|select/i.test(event.target.nodeName)||event.target.type==="text")){return;} +temp_keys_down.push(event.keyCode);$elem.data('keys_down',temp_keys_down);$elem.data('joined',false);},_keyup:function(event,elem){var k=event.keyCode,$elem=$(elem),stack=$elem.data('stack'),keys_down=$elem.data('keys_down'),keys_string=$elem.data('keys_string'),stack_len=stack.length;if(elem!=event.target&&(/textarea|select/i.test(event.target.nodeName)||event.target.type==="text")){return;} +if(keys_down.length>1){keys_string.push(this._joinKeyCodesToString(elem));$elem.data('keys_string',keys_string);$elem.data('joined',true);this._log(keys_string);} +else{str=this._getStringFromCode(k);} +if(!$elem.data('joined')){keys_string.push(str);$elem.data('keys_string',keys_string);this._log(keys_string);} +var i=stack_len,keys_s=('|'+keys_string.join('|')+'|');while(i--){if(stack[i]&&keys_s.indexOf('|'+stack[i].keys.join('|')+'|')!==-1){this._valid(elem,event,stack,i);}} +$elem.data('keys_down',[]);},_joinKeyCodesToString:function(elem){var $elem=$(elem),keys=$elem.data('keys_down'),keys_len=keys.length,arr=[],i=0;while(i