如何使用 AHK 在两个功能之间进行一键切换

How to have one key toggle between two functions using AHK

我将如何在 AHK 中创建一个热键,它在第一次按下时运行一个功能,在第二次按下时运行另一个功能。我正在尝试模拟 on/off 场景。

可以做到吗?如果可以,怎么做?

我正在寻找类似伪代码的东西:

#space::toggleit()

toggleit()
{
   if (last time it was pressed, functionA was run)
      run functionB
   else
      run functionA
}

我使用的是 AHK 版本 1.1.19.01

尝试使用 AutoHotkey 的 hotkey-命令:

hotkey, #space, functionA
return

functionA:
hotkey, #space, functionB
msgbox, A
return

functionB:
hotkey, #space, functionA
msgbox, B
return

如果您只想在 functionA 和 "do nothing" 之间切换,您可以使用以下命令:

hotkey, #space, functionA, toggle
return

functionA:
msgbox, A
return

一个简单的方法是使用变量:

setting := false
toggleit()
{
   if setting
      run functionB
   else
      run functionA
   setting := !setting
}

我找到了解决办法。把它放在这里是为了其他人的利益:

#space::tog()

tog()
{
    static togstate = 0
    if (togstate = 1)
    {
        msgbox ON
        togstate = 0
    }
    else
    {
        msgbox OFF
        togstate = 1
    }
}