Firefox:阻止特定网站的左右键击键

Firefox:阻止特定网站的左右键击键

我使用启用了触摸手势的 Wacom 手写板。出于某种原因,使用 Firefox 时,左右滚动被解释为左右箭头按键。

这会给一些网站带来严重破坏,比如 DuckDuckGo 和 Google 图片,因为如果你试图滚动浏览页面,任何完美垂直滚动移动突然开始改变标签或选择东西(DuckDuckGo 有键盘导航,所以如果你按左箭头或右箭头,它会在网页搜索、图像搜索、购物和地图之间切换)。

我意识到我可以使用不同的浏览器(不、从不、冷、死手等),或者关闭触摸手势,但对于大多数网站来说这没问题,而且触摸滚动很棒。

因此,我尝试使用 Tampermonkey 将其关闭,但我对 JavaScript/DOM 的了解太有限了。我发现,如果我在开发人员工具中编辑其中一个页面的源代码并添加此脚本,它就会成功捕获击键事件并停止不良行为:

window.addEventListener('keydown', (event) => {
      if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {}
});

我尝试将它添加到用户脚本中,但没有成功,我也尝试在用户脚本中使用它

window.onkeydown = function(event) {
    if (event.code === 'ArrowRight'||event.code === 'ArrowLeft'){
      console.log('ohai');
      event.preventDefault();
      event.stopPropagation();
      return false;
    }
};

发生了这种console.log()情况,但是 keydown 事件仍然会转到在 DuckDuckGo 中执行制表符的脚本。

如何在用户脚本中阻止左右箭头键击?

答案1

我还没有能够从 Mozilla 找到此问题的内置方法,因此使用 Autohotkey(@Mikhail-V 建议的)似乎是解决方法。

我编写了一个 AHK 脚本,将左右箭头按下事件转换为左右滚轮事件。现在的问题是,这会禁用左右箭头键,因此我添加了一个检查来查看 scrollLock 是否已打开。如果已打开,则左右箭头将转换为 mouseLeft 和 mouseRight,否则将转换为左右键按下事件。

#if winActive("ahk_class MozillaWindowClass") and GetKeyState("ScrollLock", "T")
#MaxHotkeysPerInterval, 200 ;the tablet sends a LOT of keypresses
Left::WheelLeft
Right::WheelRight

相关内容