diff --git a/src/ZenKeyboardShortcuts.mjs b/src/ZenKeyboardShortcuts.mjs index ca6086a..c14e677 100644 --- a/src/ZenKeyboardShortcuts.mjs +++ b/src/ZenKeyboardShortcuts.mjs @@ -1,7 +1,7 @@ const kZKSActions = { // manage actions - openNewTab: ["BrowserOpenTab()","open-new-tab", "tab-action"], + openNewTab: ["console.log('hellooooo')","open-new-tab", "tab-action"], closeTab: ["BrowserCloseTabOrWindow()", "close-tab", "tab-action"], openNewWindow: ["OpenBrowserWindow()", "open-new-window", "tab-action"], openNewPrivateWindow: ["OpenBrowserWindow({private: true})", "open-new-private-window", "tab-action"], @@ -19,8 +19,7 @@ const kZKSActions = { muteCurrentTab: ["gBrowser.toggleMuteAudioOnMultiSelectedTabs(gBrowser.selectedTab)", "mute-current-tab", "page-action"], showSourceOfPage: ["BrowserViewSource(window.gBrowser.selectedBrowser)", "show-source-of-page", "page-action"], showPageInfo: ["BrowserPageInfo()", "show-page-info", "page-action"], - EnableRestMode: ["gFloorpCommands.enableRestMode();", "rest-mode", "page-action"], - + // Visible actions zoomIn: ["FullZoom.enlarge()", "zoom-in", "visible-action"], zoomOut: ["FullZoom.reduce()", "zoom-out", "visible-action"], @@ -46,9 +45,6 @@ const kZKSActions = { enterIntoOfflineMode: ["BrowserOffline.toggleOfflineStatus()", "enter-into-offline-mode", "tools-action"], openScreenCapture: ["ScreenshotsUtils.notify(window, 'shortcut')", "open-screen-capture", "tools-action"], - // PIP actions - showPIP: ["gFloorpCSKActionFunctions.PictureInPicture.togglePictureInPicture(event)", "show-pip", "pip-action"], - // Bookmark actions bookmarkThisPage: ["BrowserPageActions.doCommandForAction(PageActions.actionForID('bookmark'), event, this);", "bookmark-this-page", "bookmark-action"], openBookmarkAddTool: ["PlacesUIUtils.showBookmarkPagesDialog(PlacesCommandHook.uniqueCurrentPages)", "open-bookmark-add-tool", "bookmark-action"], @@ -85,29 +81,6 @@ const kZKSActions = { hideSidebar: ["SidebarUI.hide()", "hide-sidebar", "sidebar-action"], toggleSidebar: ["SidebarUI.toggle()", "toggle-sidebar", "sidebar-action"], - // Workspaces actions - changeWorkspaceToPrevious: ["gWorkspaces.changeWorkspaceToNextOrBeforeWorkspace()", "open-previous-workspace", "workspaces-action"], - changeWorkspaceToNext: ["gWorkspaces.changeWorkspaceToNextOrBeforeWorkspace(true)", "open-next-workspace", "workspaces-action"], - - // BMS actions - toggleBMS: ["gBrowserManagerSidebar.controllFunctions.toggleBMSShortcut()", "show-bms", "bms-action"], - togglePanel: ["gBrowserManagerSidebar.controllFunctions.togglePanelShortcut()", "show-current-panel", "bms-action"], - showPanel1: ["gBrowserManagerSidebar.contextMenu.showWithNumber(0)", "show-panel-1", "bms-action"], - showPanel2: ["gBrowserManagerSidebar.contextMenu.showWithNumber(1)", "show-panel-2", "bms-action"], - showPanel3: ["gBrowserManagerSidebar.contextMenu.showWithNumber(2)", "show-panel-3", "bms-action"], - showPanel4: ["gBrowserManagerSidebar.contextMenu.showWithNumber(3)", "show-panel-4", "bms-action"], - showPanel5: ["gBrowserManagerSidebar.contextMenu.showWithNumber(4)", "show-panel-5", "bms-action"], - showPanel6: ["gBrowserManagerSidebar.contextMenu.showWithNumber(5)", "show-panel-6", "bms-action"], - showPanel7: ["gBrowserManagerSidebar.contextMenu.showWithNumber(6)", "show-panel-7", "bms-action"], - showPanel8: ["gBrowserManagerSidebar.contextMenu.showWithNumber(7)", "show-panel-8", "bms-action"], - showPanel9: ["gBrowserManagerSidebar.contextMenu.showWithNumber(8)", "show-panel-9", "bms-action"], - showPanel10: ["gBrowserManagerSidebar.contextMenu.showWithNumber(9)", "show-panel-10", "bms-action"], - - // Split View actions - openSplitViewOnLeft: ["gSplitView.Functions.setSplitView(gBrowser.selectedTab, 'left')", "open-split-view-on-left", "split-view-action"], - openSplitViewOnRight: ["gSplitView.Functions.setSplitView(gBrowser.selectedTab, 'right')", "open-split-view-on-right", "split-view-action"], - closeSplitView: ["gSplitView.Functions.removeSplitView()", "close-split-view", "split-view-action"], - // Custom actions customAction1: ["gZenKeyboardShortcutsFunctions.evalCustomeActionWithNum(1)", "custom-action-1", "custom-action"], customAction2: ["gZenKeyboardShortcutsFunctions.evalCustomeActionWithNum(2)", "custom-action-2", "custom-action"], @@ -119,9 +92,23 @@ const kZKSActions = { // Section: ZenKeyboardShortcuts const kZKSStorageKey = "zen.keyboard.shortcuts"; +const kZKSKeyCodeMap = { + F1: "VK_F1", + F2: "VK_F2", + F3: "VK_F3", + F4: "VK_F4", + F5: "VK_F5", + F6: "VK_F6", + F7: "VK_F7", + F8: "VK_F8", + F9: "VK_F9", + F10: "VK_F10", + F11: "VK_F11", + F12: "VK_F12", +}; + var gZenKeyboardShortcuts = { init() { - return; this._initShortcuts(); }, @@ -136,24 +123,34 @@ var gZenKeyboardShortcuts = { return this.__savedShortcuts; }, + setShortcut(id, shortcut) { + if (!shortcut) { + delete this._savedShortcuts[id]; + } else if (this.isValidShortcut(shortcut)) { + this._savedShortcuts[id] = shortcut; + } + Services.prefs.setStringPref(kZKSStorageKey, JSON.stringify(this._savedShortcuts)); + }, + _initShortcuts() { if (window.location.href == "chrome://browser/content/browser.xhtml") { + Services.prefs.addObserver(kZKSStorageKey, this._initSavedShortcuts.bind(this)); this._initSavedShortcuts(); } }, - _createShortcutElement(action) { - let shortcut = this._savedShortcuts[action]; + _createShortcutElement(_action) { + let shortcut = this._savedShortcuts[_action]; if (!shortcut) { return null; } - const action = kZKSActions[action][0]; - const keycode = shortcut.keycode; - const key = shortcut.key; - const modifiers = { + const action = kZKSActions[_action][0]; + const keycode = shortcut.keycode?.toUpperCase(); + const key = shortcut.key?.toUpperCase(); + let modifiers = { + control: shortcut.ctrl, alt: shortcut.alt, - ctrl: shortcut.ctrl, shift: shortcut.shift, meta: shortcut.meta }; @@ -161,11 +158,12 @@ var gZenKeyboardShortcuts = { modifiers = Object.keys(modifiers).filter(mod => modifiers[mod]).join(","); if (keycode) { + const key = kZKSKeyCodeMap[keycode] || keycode; return window.MozXULElement.parseXULToFragment(` `); @@ -173,7 +171,7 @@ var gZenKeyboardShortcuts = { return window.MozXULElement.parseXULToFragment(`