阻止 Firefox 窃取击键的扩展

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

我必须将 Firefox 与 Web 应用程序一起使用,该应用程序使用类似 Emacs 的击键,包括

ctrl-w
来剪切文本。我的 Emacs 肌肉记忆经常让我不假思索地点击
ctrl-w
,然后我的 Firefox 选项卡突然消失,因为
ctrl-w
是 Firefox 关闭选项卡的快捷方式。这太令人抓狂了。不幸的是,这种情况发生在我没有管理员权限的网络上,甚至无法获得在没有神圣干预的情况下从外部安装任何软件的权限。我在
about:config
中没有找到可以阻止此问题的 Firefox 设置——我用 google 搜索了又搜索,但没有任何效果。

但我突然想到,我可以编写一个小的 Firefox 扩展,在 Firefox 正确获取击键之前拦截它们,然后将它们转发到应用程序。这可能吗?我成功地完成了这篇post。然后我尝试写一个击键的事件监听器,如下

onCommand
,如下,

document.addEventListener("keydown", function(event) {
    console.log("Keydown:", event);
});

window.addEventListener("load", (event) => {
    console.log("page is fully loaded");

    document.addEventListener('keydown', function(e) {
        console.log('document keydown event');
        console.log('key:', e.key);
        console.log('ctrl:', e.getModifierState('Control'));
    }, false);
});

window.addEventListener('keydown', function(e) {
    console.log('keydown event');
    console.log('key:', e.key);
    console.log('ctrl:', e.getModifierState('Control'));
}, false);

load
事件显示在控制台上,但没有其他内容。我错过了什么?

javascript firefox-addon keyboard-shortcuts
1个回答
0
投票

事实证明,

ctrl-w
是一个保留键,这给我上面提出的解决方案带来了问题。在 Firefox 的地址字段中,输入

view-source:chrome://browser/content/browser.xhtml

这显示了 Firefox 的设置列表。在第 289 行或附近,你会看到

<key id="key_close" 
     data-l10n-id="close-shortcut" 
     command="cmd_close" 
     modifiers="accel" 
     reserved="true"/>

cmd_close
是关闭当前选项卡的命令。现在去

view-source:resource:///localization/en-US/browser/browserSets.ftl

您将找到

ctrl-w
的按键绑定:

close-shortcut =
    .key = W

Firefox 安装中有一个 zip 文件

omni.ja
,其中存储了这些设置,但如果没有管理员权限,则无法更改它们。 (请参阅here了解进行此更改的补丁。)用户cor-el提供的一种不太激烈的方法是将两个JavaScript文件添加到Firefox安装中,这将完成相同的事情。不幸的是,这也需要管理员权限。

此时我想起可以将 Firefox 安装到用户帐户,而无需管理员权限。经过一段时间的探索,我找到了一个 Firefox 安装程序。我安装了它,将 cor-el 中的 JavaScript 放入其中,然后 voila,不再有 ctrl-w 的问题。

    

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