mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-13 09:04:06 -08:00
a081c9436b
Main changes: - Switched to using `go-bindata` in place of `scripts/embed-static.sh`. - Support for building Prometheus without a `Makefile`. - Minor typo fix to make Prometheus build on Windows (without Makefiles). Please note that this does not mean that prometheus will work on Windows. There are still failing tests!
100 lines
3.2 KiB
JavaScript
100 lines
3.2 KiB
JavaScript
/*
|
|
* 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:
|
|
* http://github.com/tzuryby/hotkeys
|
|
*
|
|
* Original idea by:
|
|
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
|
|
*/
|
|
|
|
(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", 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(" "),
|
|
textAcceptingInputTypes = ["text", "password", "number", "email", "url", "range", "date", "month", "week", "time", "datetime", "datetime-local", "search", "color"];
|
|
|
|
handleObj.handler = function( event ) {
|
|
// Don't fire in text-accepting inputs that we didn't directly bind to
|
|
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
|
|
jQuery.inArray(event.target.type, textAcceptingInputTypes) > -1 ) ) {
|
|
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 ); |