使用 AutoHotKey 在 Chrome 中禁用 Backspace 作为导航

使用 AutoHotKey 在 Chrome 中禁用 Backspace 作为导航

我正在尝试使用 AutoHotKey 修复 Chrome 中的退格键。我的第一次尝试使用了以下解决方案这个问题

#IfWinActive, ahk_class Chrome_WidgetWin_1
BackSpace::Send, {Left}{Delete}

它确实有效,但不幸的是,它还阻止我选择input/中的文本textarea并使用退格键将其全部删除。因此,我开始寻找一种方法来排除光标位于其中一个位置的情况。然后我发现这个答案input,使用一个脚本来在/内部更改窗口标题textarea,并使用以下 AHK 脚本来使用该标题更新:

SetTitleMatchMode, RegEx

#x:: ; normal hotkey
     ; do something
    return

#IfWinActive, \[AHK\] - Google Chrome$
    #x:: ; input/textarea focus hotkey
         ; do something
        return

#IfWinActive

我一直在尝试将两者混合在一起,以便我可以重写在不以 结尾的 Chrome 窗口中 Backspace 的行为[AHK] - Google Chrome,但到目前为止我还没有成功。我觉得我真的很接近了,只是缺少了一些东西,但我对 AHK 完全是新手,我不知道接下来该怎么做。在摆弄了上面的代码并在线搜索后,我现在得到的是:

SetTitleMatchMode 2 ; partial title matches

IfWinActive, ahk_class Chrome_WidgetWin_1 ; identify Chrome
{
    #BackSpace::
    If WinActive("[AHK] - Google Chrome") ; identify when within text element
    {
        return
    }
    else {
        Send, {Left}{Delete}
    }
}

我觉得我应该能够用一个IfWinActive语句来实现这一点,包括 Chrome 并排除 [AHK] 内容,但是文档没有给出在第一个参数之后添加其他参数的任何示例,我自己的尝试都是徒劳的。任何帮助都将不胜感激。此外,如果有类似方法可以排除地址栏,那就太好了。

答案1

#ifWinActive, ahk_class Chrome_WidgetWin_1

bs::
    clipboard =  ; Clear clipboard
    send ^c  ; Copy any selected text
    if clipboard =  ; If nothing is selected
        send {left}
    send {del}
return

#ifWinActive

相关内容