从Firefox 57开始,无法在Linux上通过插件禁用Ctrl+ Q快捷方式(请参见此bug)。我发现的所有解决方法都是基于将全局Ctrl+ Q快捷方式设置为从Firefox“窃取”它。但这将在每个应用程序中禁用此快捷方式,我只想在Firefox中禁用此快捷方式,而不会影响任何其他应用程序。
有没有一种方法只能为一个应用程序禁用或捕获快捷方式?我在Unity上使用Ubuntu。
从Firefox 57开始,无法在Linux上通过插件禁用Ctrl+ Q快捷方式(请参见此bug)。我发现的所有解决方法都是基于将全局Ctrl+ Q快捷方式设置为从Firefox“窃取”它。但这将在每个应用程序中禁用此快捷方式,我只想在Firefox中禁用此快捷方式,而不会影响任何其他应用程序。
有没有一种方法只能为一个应用程序禁用或捕获快捷方式?我在Unity上使用Ubuntu。
Answers:
在about:config
设置首选项中。
browser.sessionstore.warnOnQuit true
browser.warnOnQuit true
browser.showQuitWarning true
browser.warnOnQuit true
browser.showQuitWarning
在Linux 上看不到ff Quantum 64.0 64bit。browser.warnOnQuit
已启用但什么都不做?
browser.tabs.warnOnClose;true
现在将不得不处理。相关:bugzilla.mozilla.org/show_bug.cgi?
tl / dr:为Ctrl-Q分配全局快捷方式
在Firefox Quantum中,用于通过意外的Ctrl-Q按键警告Firefox关闭的about:config
设置不再起作用。
解决方法:在Arch Linux上 XFCE桌面环境(其他Linux发行版和/或桌面可能允许类似的方法):
晶须菜单>>所有设置>>键盘>>应用程序快捷方式>>添加
添加一个新的“应用程序” null
;分配给Ctrl-Q
按键
调用:在这里,我按下Ctrl-Q
了Firefox Quantum v。60.0.1(64位)。而不是退出Firefox,我得到了这个弹出窗口,
警告:当然,这会全局影响所有Ctrl-Q按键。但是,根据我自己的喜好,通过消除这些偶然的Firefox Ctrl-Q关闭来弥补缺点(在此之后,我必须重新登录网站:GitHub; reddit; ...)。
更新资料
@crazypyro的答案也对我有用(在x86_64 Linux上为FF Quantum 63.0),如果您尝试退出Firefox,则会弹出警告。应该将其视为特定的答案,而我的解决方案将是更一般的解决方法。
about:config
(以下两项均设置为true
):
browser.showQuitWarning
browser.warnOnQuit
true
代替代替null
会很好。
无需外部应用程序,即可通过Firefox个人资料中的一小段JavaScript来完成此操作。
作为前提条件,您必须启用userChrome.js(请参见下文,或从原始GitHub存储库中获取)
将chrome目录及其内容复制到您的用户个人资料后,创建一个<profile-dir>/chrome/disable_ctrl_q.uc.js
包含以下内容的文件:
var kqa = document.getElementById('key_quitApplication');
if (kqa) kqa.remove();
最后,重新启动Firefox,然后ctrl + q将不再导致应用程序退出。
为了完整起见,以下是修改后的chrome文件的全部内容。要启用userChrome javascript,请chrome
在Firefox配置文件的目录内创建这两个文件。
about:support
在地址栏中。chrome
chrome
目录中,创建新文件,userChrome.css
并userChrome.xml
包含以下内容。/* Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
*/
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
toolbarbutton#alltabs-button {
-moz-binding: url("userChrome.xml#js");
}
<?xml version="1.0"?>
<!-- Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
-->
<bindings id="generalBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="js" extends="chrome://global/content/bindings/toolbarbutton.xml#menu">
<implementation>
<constructor><![CDATA[
function makeRelativePathURI(name) {
let absolutePath = Components.stack.filename;
return absolutePath.substring(0, absolutePath.lastIndexOf("/") + 1) + name;
}
// The following code executes in the browser context,
// i.e. chrome://browser/content/browser.xul
Services.scriptloader.loadSubScript(makeRelativePathURI("userChrome.js"), window);
]]></constructor>
</implementation>
</binding>
</bindings>
document.getElementById('key_quitApplication')
返回null。此元素的名称是否已更改?
丑陋但简单有效的解决方法始终是打开具有活动onbeforeunload
处理程序的页面,即会触发“此页面正在要求您确认要离开-输入的数据可能不会保存。” 对话框,当您尝试将其关闭时。
这样,如果您不小心尝试按CTRL + Q,将收到该对话框,然后可以选择“停留在此页面上”以取消退出。
我可以通过AutoKey获得所需的东西。安装后,我创建了一个空脚本,将Ctrl+ 分配Q为“ Hotkey”和.*Firefox
“ Window filter”。
然后在“自动按键”首选项中,我将其添加到了自动启动和禁用的通知图标中,因此它对我来说是透明的。
我使用了几个小时,它看起来很有前途-到目前为止,还没有错误的阳性结果或没有错过的收获。现在Ctrl+ Q不适用于Firefox,但例如在PhpStorm中就可以正常工作。
此外,错误1215061还给我们带来了希望,它将来会变得更容易,并且Firefox最终将获得一些不错的键盘快捷键设置。