2018-07-23 02:55:29 +00:00
|
|
|
var hotkeys = {};
|
2018-07-14 21:19:13 +00:00
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.HOTKEYS = {};
|
|
|
|
|
|
|
|
hotkeys.hotkey_identifier =
|
2018-07-14 21:19:13 +00:00
|
|
|
function hotkey_identifier(key, ctrlKey, shiftKey, altKey)
|
|
|
|
{
|
|
|
|
// Return the string that will represent this hotkey in the dictionary.
|
|
|
|
return key.toLowerCase() + "." + (ctrlKey & 1) + "." + (shiftKey & 1) + "." + (altKey & 1);
|
|
|
|
}
|
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.hotkey_human =
|
2018-07-14 21:19:13 +00:00
|
|
|
function hotkey_human(key, ctrlKey, shiftKey, altKey)
|
|
|
|
{
|
|
|
|
// Return the string that will be displayed to the user to represent this hotkey.
|
|
|
|
mods = [];
|
|
|
|
if (ctrlKey) { mods.push("Ctrl"); }
|
|
|
|
if (shiftKey) { mods.push("Shift"); }
|
|
|
|
if (altKey) { mods.push("Alt"); }
|
|
|
|
mods = mods.join("+");
|
|
|
|
if (mods) { mods = mods + "+"; }
|
|
|
|
return mods + key.toUpperCase();
|
|
|
|
}
|
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.register_hotkey =
|
2018-07-14 21:19:13 +00:00
|
|
|
function register_hotkey(key, ctrlKey, shiftKey, altKey, action, description)
|
|
|
|
{
|
2018-07-23 02:55:29 +00:00
|
|
|
identifier = hotkeys.hotkey_identifier(key, ctrlKey, shiftKey, altKey);
|
|
|
|
human = hotkeys.hotkey_human(key, ctrlKey, shiftKey, altKey);
|
|
|
|
hotkeys.HOTKEYS[identifier] = {"action": action, "human": human, "description": description}
|
2018-07-14 21:19:13 +00:00
|
|
|
}
|
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.should_prevent_hotkey =
|
2018-07-14 21:19:13 +00:00
|
|
|
function should_prevent_hotkey(event)
|
|
|
|
{
|
|
|
|
if (event.target.tagName == "INPUT" && event.target.type == "checkbox")
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-07-23 02:12:08 +00:00
|
|
|
return common.INPUT_TYPES.has(event.target.tagName);
|
2018-07-14 21:19:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.show_all_keybinds =
|
2018-07-14 21:19:13 +00:00
|
|
|
function show_all_keybinds()
|
|
|
|
{
|
|
|
|
// Display an Alert with a list of all the keybinds.
|
|
|
|
var lines = [];
|
2018-07-23 02:55:29 +00:00
|
|
|
for (var identifier in hotkeys.HOTKEYS)
|
2018-07-14 21:19:13 +00:00
|
|
|
{
|
2018-07-23 02:55:29 +00:00
|
|
|
var line = hotkeys.HOTKEYS[identifier]["human"] + " : " + hotkeys.HOTKEYS[identifier]["description"];
|
2018-07-14 21:19:13 +00:00
|
|
|
lines.push(line);
|
|
|
|
}
|
|
|
|
lines = lines.join("\n");
|
|
|
|
alert(lines);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
window.addEventListener(
|
|
|
|
"keydown",
|
|
|
|
function(event)
|
|
|
|
{
|
2018-07-23 02:55:29 +00:00
|
|
|
if (hotkeys.should_prevent_hotkey(event)) { return; }
|
|
|
|
identifier = hotkeys.hotkey_identifier(event.key, event.ctrlKey, event.shiftKey, event.altKey);
|
2018-07-14 21:19:13 +00:00
|
|
|
console.log(identifier);
|
2018-07-23 02:55:29 +00:00
|
|
|
if (identifier in hotkeys.HOTKEYS)
|
2018-07-14 21:19:13 +00:00
|
|
|
{
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.HOTKEYS[identifier]["action"]();
|
2018-07-14 21:19:13 +00:00
|
|
|
event.preventDefault();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2018-07-23 02:55:29 +00:00
|
|
|
hotkeys.register_hotkey("/", 0, 0, 0, hotkeys.show_all_keybinds, "Show keybinds.");
|