19 8:
"backspace", 9:
"tab", 13:
"return", 16:
"shift", 17:
"ctrl", 18:
"alt", 19:
"pause",
20 20:
"capslock", 27:
"esc", 32:
"space", 33:
"pageup", 34:
"pagedown", 35:
"end", 36:
"home",
21 37:
"left", 38:
"up", 39:
"right", 40:
"down", 45:
"insert", 46:
"del",
22 96:
"0", 97:
"1", 98:
"2", 99:
"3", 100:
"4", 101:
"5", 102:
"6", 103:
"7",
23 104:
"8", 105:
"9", 106:
"*", 107:
"+", 109:
"-", 110:
".", 111 :
"/",
24 112:
"f1", 113:
"f2", 114:
"f3", 115:
"f4", 116:
"f5", 117:
"f6", 118:
"f7", 119:
"f8",
25 120:
"f9", 121:
"f10", 122:
"f11", 123:
"f12", 144:
"numlock", 145:
"scroll", 191:
"/", 224:
"meta"
29 "`":
"~",
"1":
"!",
"2":
"@",
"3":
"#",
"4":
"$",
"5":
"%",
"6":
"^",
"7":
"&",
30 "8":
"*",
"9":
"(",
"0":
")",
"-":
"_",
"=":
"+",
";":
": ",
"'":
"\"",
",":
"<",
31 ".":
">",
"/":
"?",
"\\":
"|"
35 function keyHandler( handleObj ) {
37 if ( typeof handleObj.data !==
"string" ) {
41 var origHandler = handleObj.handler,
42 keys = handleObj.data.toLowerCase().split(
" "),
43 textAcceptingInputTypes = [
"text",
"password",
"number",
"email",
"url",
"range",
"date",
"month",
"week",
"time",
"datetime",
"datetime-local",
"search",
"color"];
45 handleObj.handler =
function( event ) {
47 if (
this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
48 jQuery.inArray(event.target.type, textAcceptingInputTypes) > -1 ) ) {
53 var special =
event.type !==
"keypress" && jQuery.hotkeys.specialKeys[
event.which ],
54 character = String.fromCharCode( event.which ).toLowerCase(),
55 key, modif =
"", possible = {};
58 if ( event.altKey && special !==
"alt" ) {
62 if ( event.ctrlKey && special !==
"ctrl" ) {
67 if ( event.metaKey && !event.ctrlKey && special !==
"meta" ) {
71 if ( event.shiftKey && special !==
"shift" ) {
76 possible[ modif + special ] =
true;
79 possible[ modif + character ] =
true;
80 possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] =
true;
83 if ( modif ===
"shift+" ) {
84 possible[ jQuery.hotkeys.shiftNums[ character ] ] =
true;
88 for ( var i = 0, l = keys.length; i < l; i++ ) {
89 if ( possible[ keys[i] ] ) {
90 return origHandler.apply(
this, arguments );
96 jQuery.each([
"keydown",
"keyup",
"keypress" ],
function() {
97 jQuery.event.special[ this ] = { add: keyHandler };