Firefox:更改/禁用默认键盘快捷键配置

Firefox:更改/禁用默认键盘快捷键配置

我已经安装了按键配置插件并将其配置为每当我按下 时在 Firefox 上切换离线模式Ctrl + Shift + O。它在以前的 Firefox 版本(28.0 版之前)上运行良好。

然而现在,当我有开发者工具窗格打开时,按下Ctrl + Shift + O会导致窗格切换到“工具箱选项”选项卡,因此我的“切换离线”选项不会被触发。(仅当键盘“聚焦”在开发人员工具窗格上时才会发生这种情况;如果我实际上正在处理网页(即某些网页元素处于焦点),则Ctrl + Shift + O无论开发人员工具窗格是否打开,它始终有效。)

我不认为插件或附加组件在这方面会有所帮助,因为Ctrl + Shift + O快捷方式分配似乎是 Firefox 的开发人员工具窗格本身的一部分。(毕竟,我通过它自定义该快捷方式的 Keyconfig 也是一个附加组件!)

因此,我正在寻找一种可能的方法来改变开发人员工具箱(或 Firefox 本身)的配置,以便重新获得对键盘快捷键的控制权Ctrl + Shift + O。 (好吧,我知道将我的快捷键更改为其他快捷键会更容易,但我已经习惯了Ctrl + Shift + O在需要时按下它,所以现在我无法摆脱它。 :) )我已经在网上查找这个问题很长时间了,但仍然无法找到令人满意的解决方案。

非常感谢任何想法/建议。

答案1

可与 Firefox Quantum 一起使用的扩展程序:萨卡基快捷键

然而,任何延长似乎都是有限的,不起作用在各种情况下:

  • 特权页面,例如https://addons.mozilla.org/
  • 新标签页,
  • 内部页面,例如 about:config、about:newtab、about:addons
  • 网页之外,例如 URL 栏/搜索栏
  • 在页面加载完成之前

因此,有时您的键盘快捷键会失效,您可能会运行一个完全不同的命令,而这个命令会产生一些不良影响。感谢 Mozilla。

来源:限制列表是从两个扩展的项目页面中收集的。

需要编码技能的复杂选项

var key = document.getElementById('viewBookmarksSidebarKb');
if (key) key.remove();

答案2

只要应用程序出现在应用程序菜单中,macOS 用户可以自定义任何应用程序的快捷方式。

  1. 在 Mac 上,选取苹果菜单 >系统偏好设置, 点击键盘,然后点击快捷方式

  2. 选择应用程序快捷方式点击左侧的添加按钮

  3. 在里面菜单标题字段中,键入要创建快捷方式的菜单命令

更多详细信息请参阅 Apple 网站:https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac

你不能禁用然而,您可以覆盖它们。

答案3

是时候刷新答案了。官方支持页面现在已经足够好了,并且还指向了一个新的扩展来自定义 kyeboard 快捷键,称为萨卡这是实验性的,但有点官方,对我来说很好用(Firefox 60 开发者版本/Ubuntu Linux)

答案4

所有功劳归于在 stackoverflow 上回答。这只会禁用指定的内置命令。

不要忘记在 Linux 下替换Firefox64if /usr/lib/firefox(以及反斜杠)。

将这些文件添加到指定目录。

Firefox64\defaults\pref\config-prefs.js

pref("general.config.filename", "config.js");    
pref("general.config.obscure_value", 0);  
pref("general.config.sandbox_enabled", false); 

Firefox64\config.js

let { classes: Cc, interfaces: Ci, manager: Cm  } = Components;
const {Services} = Components.utils.import('resource://gre/modules/Services.jsm');
function ConfigJS() { Services.obs.addObserver(this, 'chrome-document-global-created', false); }
ConfigJS.prototype = {
 observe: function (aSubject) { aSubject.addEventListener('DOMContentLoaded', this, {once: true}); },
 handleEvent: function (aEvent) {
   let document = aEvent.originalTarget; let window = document.defaultView; let location = window.location;
   if (/^(chrome:(?!\/\/(global\/content\/commonDialog|browser\/content\/webext-panels)\.x?html)|about:(?!blank))/i.test(location.href)) {
     if (window._gBrowser) {
       // there are lots of built-in commands specified in this variable, pick desired ones
       let keys = ["key_find", "key_findAgain", "key_findPrevious", "key_gotoHistory", "addBookmarkAsKb", "bookmarkAllTabsKb", "showAllHistoryKb", "manBookmarkKb", "viewBookmarksToolbarKb", "key_savePage", "key_search", "key_search2", "focusURLBar", "focusURLBar2", "key_openDownloads", "openFileKb", "key_reload_skip_cache", "key_viewSource", "key_viewInfo", "key_privatebrowsing", "key_quitApplication", "context-bookmarklink"];
       for (var i=0; i < keys.length; i++) {
          let keyCommand = window.document.getElementById(keys[i]);
          if (keyCommand != undefined) { 
             keyCommand.removeAttribute("command"); 
             keyCommand.removeAttribute("key"); 
             keyCommand.removeAttribute("modifiers"); 
             keyCommand.removeAttribute("oncommand"); 
             keyCommand.removeAttribute("data-l10n-id"); 
          }
       }
     }
   }
 }
};
if (!Services.appinfo.inSafeMode) { new ConfigJS(); }

你可以在浏览器中输入以下 URL,从源获取密钥的 ID 列表

view-source:chrome://browser/content/browser.xhtml

已在 Linux(可能还有 Windows)下的 Firefox 108 上测试并运行。

相关内容