%20%D1%81%D0%BE%D1%87%D0%B5%D1%82%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%20FireFox.png)
я используюсхддля управления общесистемными сочетаниями клавиш, но иногда одно из них просачивается и его подхватывает 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/
Майк Капли 7 лет назад рекомендовал, чтоникто этого не делает. Вполне возможно было бы достичь желаемого эффекта, каким-то образом переопределив записи набора ключей omni.ja, а не изменяя их, но если это так, то я не смог найти документацию по этому поводу.
https://developer.mozilla.org/en-US/docs/Archive/Mozilla/XUL/Tutorial/Keyboard_Shortcuts
Устаревшая документация по XUL. Интересно почитать, но напрямую мне это не помогло.