在 Firefox 中禁用 ctrl-b 键盘快捷键?

问题描述 投票:0回答:4

作为 tmux 用户,有很多 Ctrl+b 的事情发生。还有很多火狐浏览器。

可以肯定地说,我从来都不想看到书签竖条。不感兴趣。 20年来从未使用过电脑。

有没有办法在不使用插件的情况下禁用 Firefox 中的 Ctrl+b

firefox bookmarks
4个回答
3
投票

我已经能够通过使用

Shortkeys
扩展来禁用 Ctrl+B 快捷方式。

它的配置可能有点麻烦,所以这里有一个快速指南:

  • 在扩展页面 (
    about:addons
    ) 中,单击快捷键条目旁边的
    ...
    菜单,然后选择“首选项”
  • 添加新快捷方式:
    • 在“快捷方式”栏中,输入“Ctrl+B”。
    • 在“标签”列中,输入“禁用书签侧边栏”之类的内容。
    • 在“行为”列中,选择“不执行任何操作”条目
  • 不要忘记单击页面底部的保存快捷方式按钮!

注意: 这只适用于网页上下文。如果您在光标位于例如 时按下

Ctrl+B
,默认的 Firefox 操作仍会执行。在 URL 栏或搜索栏中。但对我来说这已经是一个很大的进步了!


1
投票

从 Firefox 72 开始,这需要使用 autoconfig.js 来完成。请参阅 Firefox 文档示例用法

老方法:这可以使用 userChrome.js

来完成

使用以下代码:

var key = document.getElementById('viewBookmarksSidebarKb');
if (key) key.remove();

信用-我发现这个感谢这个答案https://superuser.com/questions/1318336/how-to-disable-ctrlq-shortcut-in-firefox-on-linux/1348082#1348082


0
投票

我找到了一种在 macOS 版 Firefox 中使用 Greasemonkey 脚本来执行此操作的方法。

首先,安装 Firefox 的 Greasemonkey Extension 并为其授予适当的权限(例如,如果需要,“在私人 Windows 中运行”)。然后添加以下“新用户脚本...”:

// ==UserScript==
// @name           Disable “Bookmarks Sidebar” keyboard shortcut
// @description    Disables the Ctrl+B and Cmd+B keyboard shortcuts in Firefox
// @version        1
// @grant          none
// ==/UserScript==

window.addEventListener('keydown', function(event) {
  if (event.metaKey && event.keyCode == 66) { //macOS: Checks if Cmd and B are pressed
    event.preventDefault(); //Blocks default event handler
  }
  if (event.ctrlKey && event.keyCode == 66) { //Windows: Checks if Ctrl and B are pressed
    event.preventDefault(); //Blocks default event handler
  }
}, false);

在上面的代码中,键盘键“B”对应于数字 66,但您当然也可以将其更改为其他键盘快捷键。

不幸的是,如果您选择了 URL 地址栏或搜索框,则此功能不起作用。但在网页加载后,或者在网页内单击任何元素时,它确实会起作用。所以这是一个解决方法/部分解决方案。


-1
投票

关于此的许多主题,但似乎没有一个有效,所以我只是手写了一些似乎有效的东西。这仅适用于 JavaScript,为了清晰起见,没有 try/catch 块。

目标:在contentEditable DIV中,阻止Firefox处理Ctrl-B,这样我们就可以用它来将文本内容设置为粗体。

基本思想是停止在正文处传播(抑制向上冒泡到浏览器),同时在控件上设置粗体(允许向下冒泡到在 div 中编辑的文本)。解决方案是仅限 FF,因为这是问题所在,但我可以根据要求将其扩展到 Webkit 和 IE。

HTML:

<body onkeydown="bodyKeyHandler(this, event);">
    <div contentEditable="true" onkeydown="editorKeyHandler(event);"></div>
</body>

JavaScript:

function bodyKeyHandler(o,e) {
    var c = e.ctrlKey;
    var k = e.which;
    if (e.ctrlKey) { 
        switch ( k ) {
            case 17:
                e.preventDefault();
                o.stopPropagation();
                break;
        }
    }
}

function editorKeyHandler(e) {
    var c = e.ctrlKey;
    var k = e.which;
    if (c) { 
        switch ( k ) {
            case 17:
                document.execCommand("bold");
                break;
        }
    }
}

一个重要的警告,当在 FF 中摆弄这个问题时,注入alert()来查看发生了什么会破坏它,因为警报弹出窗口会捕获事件并将其冒泡到浏览器!要查看它的工作原理,请删除所有跟踪。

© www.soinside.com 2019 - 2024. All rights reserved.