配置(禁用)FireFox 键盘快捷键

配置(禁用)FireFox 键盘快捷键

我用韓國来管理系统范围的键盘快捷键,但偶尔会有一个快捷键泄露出去,并被 FireFox 截取。

我怎样才能禁用 FF 中的键盘快捷键 - 特别是Command-{number}切换选项卡 - 这样即使skhd它被丢弃或没有运行,我也不会因为无意中触发不同的快捷键而出现意外行为?

答案1

呼,这真是一个艰难而有趣的问题!我将介绍如何在 Windows 下执行此操作,然后解释如何在 Linux 中执行此操作。此过程对我而言适用于 Firefox 74。

免责声明:这可能会破坏您的 Firefox 安装,确实如此不是似乎是推荐的,每次更新 Firefox 时,您都需要重复此过程。因此,请确保备份 Firefox 安装中您关心的所有内容,尤其是文件omni.ja

(如果有其他方法,我会推荐它,但据我所知,这是更改主键集的唯一方法。(这可能是 Mozilla 出于安全考虑,以防止恶意扩展劫持某些行为。))

为了实现这一点,我首先安装了最新的 7zip,Ninite 安装程序。然后,我导航到browserFirefox 安装目录的子目录(在我的情况下是)C:\Program Files\Mozilla Firefox\browser。然后我使用 7zip 解压omni.ja到另一个位置。

然后,在新解压的omni目录中,我修改了文件chrome\browser\content\browser\browser.xhtml。以下是我所做更改的差异:

--- browser.xhtml.orig  2020-03-27 16:42:54.377242187 +0000
+++ browser.xhtml       2020-03-27 16:43:01.865242187 +0000
@@ -333,7 +333,6 @@

     <key data-l10n-id="nav-reload-shortcut" command="Browser:Reload" modifiers="accel" id="key_reload"/>
     <key data-l10n-id="nav-reload-shortcut" command="Browser:ReloadSkipCache" modifiers="accel,shift" id="key_reload_skip_cache"/>
-    <key id="key_viewSource" data-l10n-id="page-source-shortcut" command="View:PageSource" modifiers="accel"/>
     <key id="key_viewInfo" data-l10n-id="page-info-shortcut" command="View:PageInfo"   modifiers="accel"/>
     <key id="key_find" data-l10n-id="find-shortcut" command="cmd_find" modifiers="accel"/>
     <key id="key_findAgain" data-l10n-id="search-find-again-shortcut" command="cmd_findAgain" modifiers="accel"/>
@@ -380,17 +379,6 @@
     <key id="key_undoCloseTab" command="History:UndoCloseTab" data-l10n-id="tab-new-shortcut" modifiers="accel,shift"/>
     <key id="key_undoCloseWindow" command="History:UndoCloseWindow" data-l10n-id="window-new-shortcut" modifiers="accel,shift"/>

-
-<key id="key_selectTab1" oncommand="gBrowser.selectTabAtIndex(0, event);" key="1" modifiers="accel"/>
-<key id="key_selectTab2" oncommand="gBrowser.selectTabAtIndex(1, event);" key="2" modifiers="accel"/>
-<key id="key_selectTab3" oncommand="gBrowser.selectTabAtIndex(2, event);" key="3" modifiers="accel"/>
-<key id="key_selectTab4" oncommand="gBrowser.selectTabAtIndex(3, event);" key="4" modifiers="accel"/>
-<key id="key_selectTab5" oncommand="gBrowser.selectTabAtIndex(4, event);" key="5" modifiers="accel"/>
-<key id="key_selectTab6" oncommand="gBrowser.selectTabAtIndex(5, event);" key="6" modifiers="accel"/>
-<key id="key_selectTab7" oncommand="gBrowser.selectTabAtIndex(6, event);" key="7" modifiers="accel"/>
-<key id="key_selectTab8" oncommand="gBrowser.selectTabAtIndex(7, event);" key="8" modifiers="accel"/>
-<key id="key_selectLastTab" oncommand="gBrowser.selectTabAtIndex(-1, event);" key="9" modifiers="accel"/>
-
     <key id="key_wrCaptureCmd"
     key="#" modifiers="control"
     command="wrCaptureCmd"/>
@@ -3748,7 +3736,6 @@
               <menu id="webDeveloperMenu" data-l10n-id="menu-tools-web-developer">
                 <menupopup id="menuWebDeveloperPopup">
                   <menuitem id="menu_pageSource"
-                            key="key_viewSource"
                             command="View:PageSource" data-l10n-id="menu-tools-page-source"/>
                 </menupopup>
               </menu>

如您所见,我删除了 的key条目,并删除了 条目中key_viewSource对该条目的引用。我还删除了和条目。keymenuItemkey_selectTab[1-8]key_selectLastTab key

完成此操作后,现在是时候将其重新压缩了。导航到 的顶层omni,选择其所有内容,右键单击,选择 7-zip,然后选择“添加到存档”。

将新档案的名称设置为omni.ja,将格式设置为zip,并将压缩级别设置为Store

7zip 压缩选项

我备份了现有C:\Program Files\Mozilla Firefox\browser\omni.ja文件,然后omni.ja用修改后的文件替换它。

最后,打开一个cmd窗口,并使用 打开 Firefox --purgecaches,例如C:\Program Files\Mozilla Firefox\firefox.exe --purgecaches

此时,Firefox 为我打开,Ctrl-U不再显示源代码,也Ctrl-[1-9]不再选择选项卡。成功!

对于 Linux 用户,除了使用 7zip 之外,您还可以简单地执行以下操作:

[gnubeard@mothership: ~]$ mkdir tmp
[gnubeard@mothership: ~]$ cd tmp
[gnubeard@mothership: ~/tmp]$ unzip ../omni.ja

进行适当的修改,然后:

[gnubeard@mothership: ~/tmp]$ zip -qr0XD ../omni.ja *

不要忘记运行firefox --purgecaches以重新加载omni.ja

我在本文末尾附加的链接提到使用zip -qr9XD,但我认为这将压缩级别设置为最大,并且为了使其正常工作,我认为无法启用 zip 压缩(如果您正在阅读本文但不同意,请纠正我。)

我把这些放在一起是为了专门解决问题中列出的担忧(Ctrl-UCtrl-[1-9]),但我认为这应该删除主键集中的任何快捷键,您可以在中找到所有这些快捷键browser.xhtml

(编辑:在我的研究过程中,我认为我把原始问题与我发现的另一个想要禁用的问题混淆了Ctrl-U。如果您不想禁用该快捷方式,请忽略viewSource我所做的删除。)

链接:

http://shallowsky.com/blog/tech/web/modifying-omni.ja.html

这篇文章之前写过browser.xul更名为browser.xhtml,并且由于格式的改变,sed它推荐的命令不幸不再起作用。browser.xhtml

http://forums.mozillazine.org/viewtopic.php?f=27&t=3025663

这就是我发现这个--purgecaches选项的方式——比我预期的花费了更多的谷歌搜索。

https://mike.kaply.com/2013/05/06/dont-unpack-and-repack-omni-jar/

Mike Kaply 7 年前建议没人这样做。通过以某种方式覆盖 omni.ja 的键集条目而不是修改它,很可能能够实现所需的效果,但如果是这样,我找不到有关它的文档。

https://developer.mozilla.org/en-US/docs/Archive/Mozilla/XUL/Tutorial/Keyboard_Shortcuts

有关 XUL 的过时文档。读起来很有趣,但并没有直接帮助我实现这一点。

相关内容