From 072a6099b4faf381e555e8d98dbaedd7a3c8c773 Mon Sep 17 00:00:00 2001 From: mauro-balades Date: Tue, 24 Sep 2024 17:31:24 +0200 Subject: [PATCH] Refactor ZenKeyboardShortcuts to include split view shortcuts and additional tab selection shortcuts --- src/ZenKeyboardShortcuts.mjs | 53 ++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/ZenKeyboardShortcuts.mjs b/src/ZenKeyboardShortcuts.mjs index f5c8f95..70ef248 100644 --- a/src/ZenKeyboardShortcuts.mjs +++ b/src/ZenKeyboardShortcuts.mjs @@ -30,17 +30,28 @@ const defaultKeyboardGroups = { "zen-tab-new-shortcut", "zen-key-enter-full-screen", "zen-key-exit-full-screen", - "zen-quit-app-shortcut" + "zen-quit-app-shortcut", + "id:key_selectTab1", + "id:key_selectTab2", + "id:key_selectTab3", + "id:key_selectTab4", + "id:key_selectTab5", + "id:key_selectTab6", + "id:key_selectTab7", + "id:key_selectTab8", + "id:key_selectLastTab", ], navigation: [ - "zen-key-go-back", - "zen-key-go-forward", "zen-nav-back-shortcut-alt", "zen-nav-fwd-shortcut-alt", "zen-nav-reload-shortcut-2", "zen-nav-reload-shortcut-skip-cache", "zen-nav-reload-shortcut", - "zen-key-stop" + "zen-key-stop", + "id:goHome", + "id:key_gotoHistory", + "id:goBackKb", + "id:goForwardKb", ], searchAndFind: [ "zen-search-focus-shortcut", @@ -263,11 +274,13 @@ class KeyShortcut { return rv; } - static getGroupFromL10nId(l10nId) { + static getGroupFromL10nId(l10nId, id) { // Find inside defaultKeyboardGroups for (let group of Object.keys(defaultKeyboardGroups)) { - if (defaultKeyboardGroups[group].includes(l10nId)) { - return group; + for (let shortcut of defaultKeyboardGroups[group]) { + if (shortcut == l10nId || shortcut == "id:" + id) { + return group; + } } } return 'other'; @@ -293,7 +306,7 @@ class KeyShortcut { key.getAttribute('id'), key.getAttribute('key'), key.getAttribute('keycode'), - KeyShortcut.getGroupFromL10nId(KeyShortcut.sanitizeL10nId(key.getAttribute('data-l10n-id'))), + KeyShortcut.getGroupFromL10nId(KeyShortcut.sanitizeL10nId(key.getAttribute('data-l10n-id')), key.getAttribute('id')), KeyShortcutModifiers.parseFromXHTMLAttribute(key.getAttribute('modifiers')), key.getAttribute('command'), key.getAttribute('data-l10n-id'), @@ -433,7 +446,6 @@ class KeyShortcut { isUserEditable() { if ( !this.#id || - !this.#action || this.#internal || this.#reserved || (this.#group == FIREFOX_SHORTCUTS_GROUP && this.#disabled) @@ -462,10 +474,9 @@ class KeyShortcut { } class ZenKeyboardShortcutsLoader { - #shortcutsDirtyCache = {}; + #shortcutsDirtyCache = undefined; constructor() { - this.#shortcutsDirtyCache = {}; } get shortcutsFile() { @@ -477,8 +488,8 @@ class ZenKeyboardShortcutsLoader { this.#shortcutsDirtyCache = data; } - async loadObject(withoutCache = false) { - if (this.#shortcutsDirtyCache && !withoutCache) { + async loadObject() { + if (this.#shortcutsDirtyCache) { return this.#shortcutsDirtyCache; } try { @@ -490,8 +501,8 @@ class ZenKeyboardShortcutsLoader { } } - async load(withoutCache = false) { - return (await this.loadObject(withoutCache))?.shortcuts; + async load() { + return (await this.loadObject())?.shortcuts; } async remove() { @@ -508,8 +519,9 @@ function zenGetDefaultShortcuts() { let keySet = document.getElementById('mainKeyset'); let newShortcutList = []; - // Firefox's standard keyset - for (let key of keySet.children) { + // Firefox's standard keyset. Reverse order to keep the order of the keys + for (let i = keySet.children.length - 1; i >= 0; i--) { + let key = keySet.children[i]; let parsed = KeyShortcut.parseFromXHTML(key); newShortcutList.push(parsed); } @@ -713,7 +725,6 @@ var gZenKeyboardShortcutsManager = { loader: new ZenKeyboardShortcutsLoader(), async init() { if (window.location.href == 'chrome://browser/content/browser.xhtml') { - await SessionStore.promiseInitialized; console.info('Zen CKS: Initializing shortcuts'); const loadedShortcuts = await this._loadSaved(); @@ -727,9 +738,9 @@ var gZenKeyboardShortcutsManager = { } }, - async _loadSaved(withoutCache = false) { + async _loadSaved() { var innerLoad = async() => { - let data = await this.loader.load(withoutCache); + let data = await this.loader.load(); if (!data || data.length == 0) { return zenGetDefaultShortcuts(); } @@ -824,7 +835,7 @@ var gZenKeyboardShortcutsManager = { let rv = []; if (!this._currentShortcutList) { - this._currentShortcutList = await this._loadSaved(true); + this._currentShortcutList = await this._loadSaved(); } for (let shortcut of this._currentShortcutList) {