Autohotkey:如何实现退出序列

时间:2014-09-03 07:59:10

标签: sequence autohotkey exit

为了结束我的自定义键盘映射以进行编码,我在脚本底部放置了以下行:

Esc::ExitApp

然而,由于其他原因,单次击键(特别是Esc)发生的太多。因此,我更喜欢一系列单键击(不按住任何键)退出Autohotkey映射,例如“Esc然后LCtrl”或“Esc,LCtrl然后再次Esc”

我从AutoHotKey key SEQUENCE, not just single-key hotkey尝试了这个想法:

Esc::
Input Key, L1
if Key=LCtrl 
ExitApp  
return

但它似乎没有诀窍:按Esc然后按下LCtrl,映射不会停止。 (另外,如果我按下Esc然后按下另一个键(不是LCt​​rl),则忽略下一次击键,我最好没有。

1 个答案:

答案 0 :(得分:0)

版本1a:

LCtrl & Esc::
ExitApp
return

您可以在脚本中的任何位置添加此代码。按 LCtrl 并在 Esc 之后退出脚本。

版本1b:

Esc & LCtrl::
ExitApp
return

您可以在脚本中的任何位置添加此代码。按 Esc 并在 LCtrl 之后退出脚本。

您可以添加版本1a 版本1b 。在这种情况下,按 LCtrl 并在 Esc OR Esc 之后和 LCtrl 脚本将退出。


版本2 (它使用不同的方法,如果由于某种原因你不喜欢版本1a 或/和版本1b )的

Loop
{
    a := GetKeyState("Esc")
    if (a=1)
    {
        b := GetKeyState("LCtrl")

        if (b=1)
        {
            ExitApp
        }

    }
}

在您的其他代码重新映射您需要的所有密钥后,应启动该代码。按 LCtrl 并在 Esc OR Esc 之后和 LCtrl 之后退出脚本。


修改

版本3

Loop
{
    a := GetKeyState("Esc")
    if (a=1)
    {
        Loop,60 ;number of 50 milliseconds script will wait to CTRL press. Example 60 means 60*50=3000, so script will wait 3000 milliseconds (1sec=1000 milliseconds) for CTRL press. After that time you have to press Esc again.
        {
            b := GetKeyState("LCtrl")

            if (b=1)
            {
                ExitApp
            }
            Sleep, 50
        }

    }
}

在您的其他代码重新映射您需要的所有密钥后,应启动该代码。按 Esc (现在可以释放 Esc )并在3000毫秒(1秒= 1000毫秒)内按 LCtrl 。在此之后,您必须再次按 Esc 以退出脚本。如果您想要修改时间,之后需要按 Esc 再次阅读代码中的注释。

此外,始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已过时,使用它们可能会遇到一些问题!