为什么autohotkey无法将{Backspace}保存为输入?

时间:2018-02-11 16:48:21

标签: autohotkey

请考虑以下代码。键入x后跟{Backspace}后我希望收到一个退格键但是autohotkey没有显示反应。对于其他键,不会出现此问题。有没有办法修复这段代码?

~x::
    Input Key, L1
    if Key=s
    {
    do something
    exit
    }
    else {
    send %Key%
    }
    return

一个明确的例子:

~x::
Input Key, L1
if Key=s
{
send blablabla
exit
}
else {
send %Key%
}
return

1 个答案:

答案 0 :(得分:1)

您可以将BackSpace和所有其他键放在EndKeys命令的第三个Input参数中,然后发送EndKey(如果已按下)。

~x::
    Input Key, L1, {BackSpace}{Enter}{LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}

    ; If end key was pressed, extract it and replace `Key` with the EndKey
    FoundPos := RegExMatch(ErrorLevel, "EndKey:(.*)", SubPat)
    if (FoundPos > 0)
        Key = {%SubPat1%}

    if (Key="s")
        send blablabla
    else
        send %Key%
return

您可以在documentation

中找到有关它的更多信息

另一种解决方案是使用A_PriorKey检查x之前是否已按下s

; $ is required to prevent the hoteky from firing itself
$s::
    if (A_PriorKey = "x")
        Send blablabla
    else
        Send s
return