从 Firefox 57 开始,Linux 上无法通过插件禁用Ctrl+快捷方式(请参阅Q这个错误)。我发现的所有解决方法都是基于将全局Ctrl+Q快捷方式设置为从 Firefox 中“窃取”它。但这会在每个应用程序中禁用此快捷方式,而我只想在 Firefox 中禁用此快捷方式,而不影响任何其他应用程序。
有没有办法禁用或仅捕获一个应用程序的快捷方式?我正在使用带有 Unity 的 Ubuntu。
答案1
在about:config
设置偏好设置中。
Firefox >= 87
browser.quitShortcut.disabled true
(此设置将在重新启动浏览器后生效。)
https://bugzilla.mozilla.org/show_bug.cgi?id=52821
Firefox >= 65
browser.sessionstore.warnOnQuit true
browser.warnOnQuit true
旧版 Firefox
browser.showQuitWarning true
browser.warnOnQuit true
在所有版本中测试过,我遇到了 64 位 Linux 上的 61.0.2-64.0.2(以及 Win10 上的 60esr 频道)。
答案2
tl/dr:为 Ctrl-Q 分配一个全局快捷键
在 Firefox Quantum 中,about:config
设置以前通过意外按下 Ctrl-Q 键来警告 Firefox 关闭的功能不再起作用。
解决方法:在 Arch Linux | XFCE 桌面环境上(其他 Linux 发行版和/或桌面可能允许类似的方法):
Whiskers 菜单 >> 所有设置 >> 键盘 >> 应用程序快捷方式 >> 添加
添加新的“应用程序”,
null
并将其分配给Ctrl-Q
按键- 更新(@justderb 的评论):“如果您不想弹出错误窗口,最好使用‘true’而不是‘null’。”
调用:在这里,我按下了Ctrl-Q
Firefox Quantum v. 60.0.1 (64 位);我没有退出 Firefox,而是弹出了这个窗口,
警告:当然,这会全局影响所有 Ctrl-Q 按键。但是,——根据我自己的偏好——这个缺点可以通过取消那些意外的 Firefox Ctrl-Q 关闭来弥补(之后我必须重新登录网站:GitHub;reddit;...)。
更新 1
@crazypyro 的答案也适用于我(x86_64 Linux 上的 FF Quantum 63.0),如果您尝试退出 Firefox,则会弹出警告。这可能应该被视为具体答案,而我的解决方案则是更通用的解决方法。
about:config
(以下均设置为true
):
browser.showQuitWarning
browser.warnOnQuit
更新 2[2020-03-01]
在 Vim 中,我遇到了一些令人沮丧的问题,比如终端“冻结”,我失去了对键盘的控制。Vim(需要我杀死/重新启动 Vim)。
经过一番调查,发现问题是软件流控制(XON/XOFF 流控制)。Ctrl-s
冻结终端直到Ctrl-q
按下——根据我上面提出的解决方案,它被全局重新映射到“虚拟应用程序” true
。
解决此问题的方法是添加以下行
# enable Ctrl-s and Ctrl-q:
stty -ixon
靠近你的 顶部~/.bashrc
,然后打开一个新终端并启动 Vim。
相关链接/讨论:
- https://unix.stackexchange.com/questions/72086/ctrl-s-hang-terminal-emulator
- https://stackoverflow.com/questions/3419820/sometimes-my-file-just-freezes-in-my-vi-vim-what-happened
https://unix.stackexchange.com/questions/478532/why-is-vim-frozen
https://unix.stackexchange.com/questions/72086/ctrl-s-hang-terminal-emulator| ... 以前键盘有滚动锁定键
C-s
,C-q
以前是“滚动锁定切换”。您可以通过在 ~/.bashrc 中添加stty ixany
和来禁用此功能stty ixoff -ixon
[...并重新启动终端]
答案3
在 Firefox Quantum 中使用 userChrome.js 禁用 Ctrl+q
只需在 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 将不再导致应用程序退出。
在 Firefox Quantum 中启用 userChrome.js
为了完整起见,下面是修改后的 chrome 文件的全部内容。要启用 userChrome javascript,请在chrome
Firefox 配置文件中的目录中创建这两个文件。
about:support
在地址栏中输入。- 在下面应用程序基础 > 配置文件目录点击开放目录按钮打开您的 Firefox 配置文件目录。
- 在配置文件目录中,创建一个名为的新目录
chrome
- 在该
chrome
目录中,创建新文件userChrome.css
并userChrome.xml
列出其内容。 - 重新启动 Firefox(如果您按照以下步骤禁用 ctrl+q,您可能还需要创建上面的 .uc.js 文件)
用户Chrome.css
/* 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");
}
用户Chrome.xml
<?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>
答案4
我能够得到我需要的东西自动键。安装后,我创建了空脚本,并将Ctrl+指定Q为“热键”和.*Firefox
“窗口过滤器”。
然后在 AutoKey 首选项中我将其添加到自动启动并禁用通知图标,因此它对我来说变得透明。
我使用了几个小时,效果不错 - 到目前为止没有误报或漏检。目前Ctrl+Q无法在 Firefox 上使用,但在 PhpStorm 等平台上运行良好。
此外错误 1215061希望将来这会变得更容易,并且 Firefox 最终会获得一些不错的键盘快捷键设置。