Root/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /* * jQuery Hotkeys Plugin * Copyright 2010, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * * Based upon the plugin by Tzury Bar Yochay: * * Original idea by: */ ( function (jQuery){ jQuery.hotkeys = { version: "0.8" , specialKeys: { 8: "backspace" , 9: "tab" , 13: "return" , 16: "shift" , 17: "ctrl" , 18: "alt" , 19: "pause" , 20: "capslock" , 27: "esc" , 32: "space" , 33: "pageup" , 34: "pagedown" , 35: "end" , 36: "home" , 37: "left" , 38: "up" , 39: "right" , 40: "down" , 45: "insert" , 46: "del" , 96: "0" , 97: "1" , 98: "2" , 99: "3" , 100: "4" , 101: "5" , 102: "6" , 103: "7" , 104: "8" , 105: "9" , 106: "*" , 107: "+" , 109: "-" , 110: "." , 111 : "/" , 112: "f1" , 113: "f2" , 114: "f3" , 115: "f4" , 116: "f5" , 117: "f6" , 118: "f7" , 119: "f8" , 120: "f9" , 121: "f10" , 122: "f11" , 123: "f12" , 144: "numlock" , 145: "scroll" , 188: "," , 190: "." , 191: "/" , 224: "meta" }, shiftNums: { "`" : "~" , "1" : "!" , "2" : "@" , "3" : "#" , "4" : "$" , "5" : "%" , "6" : "^" , "7" : "&" , "8" : "*" , "9" : "(" , "0" : ")" , "-" : "_" , "=" : "+" , ";" : ": " , "'" : "\"" , "," : "<" , "." : ">" , "/" : "?" , "\\" : "|" } }; function keyHandler( handleObj ) { // Only care when a possible input has been specified if ( typeof handleObj.data !== "string" ) { return ; } var origHandler = handleObj.handler, keys = handleObj.data.toLowerCase().split( " " ); handleObj.handler = function ( event ) { // Don't fire in text-accepting inputs that we didn't directly bind to if ( this !== event.target && (/textarea|select|input/i.test( event.target.nodeName ) || event.target.type === "text" || $(event.target).prop('contenteditable ') == ' true ' )) { return ; } // Keypress represents characters, not special keys var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ], character = String.fromCharCode( event.which ).toLowerCase(), key, modif = "" , possible = {}; // check combinations (alt|ctrl|shift+anything) if ( event.altKey && special !== "alt" ) { modif += "alt+" ; } if ( event.ctrlKey && special !== "ctrl" ) { modif += "ctrl+" ; } // TODO: Need to make sure this works consistently across platforms if ( event.metaKey && !event.ctrlKey && special !== "meta" ) { modif += "meta+" ; } if ( event.shiftKey && special !== "shift" ) { modif += "shift+" ; } if ( special ) { possible[ modif + special ] = true ; } else { possible[ modif + character ] = true ; possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true ; // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" if ( modif === "shift+" ) { possible[ jQuery.hotkeys.shiftNums[ character ] ] = true ; } } for ( var i = 0, l = keys.length; i < l; i++ ) { if ( possible[ keys[i] ] ) { return origHandler.apply( this , arguments ); } } }; } jQuery.each([ "keydown" , "keyup" , "keypress" ], function () { jQuery.event.special[ this ] = { add: keyHandler }; }); })( jQuery ); |