如何在一系列输入后发送加法序列?

How to send an addition sequence after a series of input?

我要每次编Ctrl GUpEnter and Ctrl GDownEnter被按下,之后会Send !wi。正常热键工作:

~^PgUp::
~^PgDn::Send !wi

但这不起作用,尽管 ~^g down enter 不是无效的热键:

~^PgUp::
~^PgDn::
::~^g down enter::
::~^g up enter::Send !wi

另外,由于我不知道很多次UpDown会在Enter[=之前被按下29=],有没有办法让它跳过中间键?

尝试:

~^PgUp::
~^PgDn::Send !wi
~^g::
    Input, key, V L1, {Enter}
    if (ErrorLevel == "EndKey:Enter")
        Send {Enter}!wi
return

一个简单的解决方案是在按下 ^g 时设置一个布尔标志。然后在按下 enter 时检查此标志,如果已设置则触发 !wi。然而,这需要重置标志 - 因此,如果其他一些键可以结束序列,它也必须由这些键重置(参见代码底部的示例)。

await := 0

~^g::
    await := 1              ; set flag 
    tooltip %await%
return

~enter::
    if (await = 1) {
        await := 0          ; reset flag  
        sleep 300           ; safety pause 
        send !wi
        tooltip %await%
    }
return


; note: the 'await' flag must be reset if other
; key can end the sequence.
; here for example escape or mouse click

~esc::
    await := 0
    tooltip  %await%
return

~lbutton::
    await := 0
    tooltip %await%
return