我用韓國来管理系统范围的键盘快捷键,但偶尔会有一个快捷键泄露出去,并被 FireFox 截取。
我怎样才能禁用 FF 中的键盘快捷键 - 特别是Command-{number}切换选项卡 - 这样即使skhd
它被丢弃或没有运行,我也不会因为无意中触发不同的快捷键而出现意外行为?
答案1
呼,这真是一个艰难而有趣的问题!我将介绍如何在 Windows 下执行此操作,然后解释如何在 Linux 中执行此操作。此过程对我而言适用于 Firefox 74。
免责声明:这可能会破坏您的 Firefox 安装,确实如此不是似乎是推荐的,每次更新 Firefox 时,您都需要重复此过程。因此,请确保备份 Firefox 安装中您关心的所有内容,尤其是文件omni.ja
。
(如果有其他方法,我会推荐它,但据我所知,这是更改主键集的唯一方法。(这可能是 Mozilla 出于安全考虑,以防止恶意扩展劫持某些行为。))
为了实现这一点,我首先安装了最新的 7zip,Ninite 安装程序。然后,我导航到browser
Firefox 安装目录的子目录(在我的情况下是)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
对该条目的引用。我还删除了和条目。key
menuItem
key_selectTab[1-8]
key_selectLastTab
key
完成此操作后,现在是时候将其重新压缩了。导航到 的顶层omni
,选择其所有内容,右键单击,选择 7-zip,然后选择“添加到存档”。
将新档案的名称设置为omni.ja
,将格式设置为zip
,并将压缩级别设置为Store
。
我备份了现有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-U
,Ctrl-[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 的过时文档。读起来很有趣,但并没有直接帮助我实现这一点。