diff --git a/frontends/etiquette_flask/static/js/hotkeys.js b/frontends/etiquette_flask/static/js/hotkeys.js index 859972f..e676a70 100644 --- a/frontends/etiquette_flask/static/js/hotkeys.js +++ b/frontends/etiquette_flask/static/js/hotkeys.js @@ -13,7 +13,7 @@ hotkeys.hotkey_human = function hotkey_human(key, ctrlKey, shiftKey, altKey) { // Return the string that will be displayed to the user to represent this hotkey. - mods = []; + var mods = []; if (ctrlKey) { mods.push("Ctrl"); } if (shiftKey) { mods.push("Shift"); } if (altKey) { mods.push("Alt"); } @@ -23,10 +23,21 @@ function hotkey_human(key, ctrlKey, shiftKey, altKey) } hotkeys.register_hotkey = -function register_hotkey(key, ctrlKey, shiftKey, altKey, action, description) +function register_hotkey(hotkey, action, description) { - identifier = hotkeys.hotkey_identifier(key, ctrlKey, shiftKey, altKey); - human = hotkeys.hotkey_human(key, ctrlKey, shiftKey, altKey); + if (! Array.isArray(hotkey)) + { + hotkey = hotkey.split(/\s+/g); + } + + var key = hotkey.pop(); + modifiers = hotkey.map(word => word.toLocaleLowerCase()); + var ctrlKey = modifiers.includes("control") || modifiers.includes("ctrl"); + var shiftKey = modifiers.includes("shift"); + var altKey = modifiers.includes("alt"); + + var identifier = hotkeys.hotkey_identifier(key, ctrlKey, shiftKey, altKey); + var human = hotkeys.hotkey_human(key, ctrlKey, shiftKey, altKey); hotkeys.HOTKEYS[identifier] = {"action": action, "human": human, "description": description} } @@ -72,4 +83,4 @@ function hotkeys_listener(event) window.addEventListener("keydown", hotkeys.hotkeys_listener); -hotkeys.register_hotkey("/", 0, 0, 0, hotkeys.show_all_hotkeys, "Show hotkeys."); +hotkeys.register_hotkey("/", hotkeys.show_all_hotkeys, "Show hotkeys."); diff --git a/frontends/etiquette_flask/static/js/photo_clipboard.js b/frontends/etiquette_flask/static/js/photo_clipboard.js index 4c7753a..88b55a9 100644 --- a/frontends/etiquette_flask/static/js/photo_clipboard.js +++ b/frontends/etiquette_flask/static/js/photo_clipboard.js @@ -324,10 +324,10 @@ photo_clipboard.on_pageload = function on_pageload() { window.addEventListener("storage", photo_clipboard.on_storage_event, false); - hotkeys.register_hotkey("a", 1, 0, 0, photo_clipboard.select_all_photos, "Select all photos."); - hotkeys.register_hotkey("d", 1, 0, 0, photo_clipboard.unselect_all_photos, "Deselect all photos."); - hotkeys.register_hotkey("c", 0, 0, 0, photo_clipboard.clipboard_tray_collapse_toggle, "Toggle clipboard tray."); - hotkeys.register_hotkey("c", 0, 1, 0, photo_clipboard.open_full_clipboard_tab, "Open full clipboard page."); + hotkeys.register_hotkey("ctrl a", photo_clipboard.select_all_photos, "Select all photos."); + hotkeys.register_hotkey("ctrl d", photo_clipboard.unselect_all_photos, "Deselect all photos."); + hotkeys.register_hotkey("c", photo_clipboard.clipboard_tray_collapse_toggle, "Toggle clipboard tray."); + hotkeys.register_hotkey("shift c", photo_clipboard.open_full_clipboard_tab, "Open full clipboard page."); photo_clipboard.ingest_toolbox_items(); photo_clipboard.load_clipboard(); photo_clipboard.update_pagestate();