如何包含带有修饰符的循环?

时间:2019-05-03 04:22:51

标签: autohotkey

我试图让AHK继续按“ 2”,直到再次按“ 2”。如果按住alt,ctrl或shift,则在按住alt时发送^ 2,+ 2,!2,然后在释放修改键后返回垃圾邮件“ 2”。

到目前为止,此代码仅可用于修饰符,我只需要弄清楚如何添加循环即可。

; Disable Alt+Tab
!Tab::Return

; Disable Windows Key + Tab
#Tab::Return

#ifWinActive World of Warcraft
{
$2::
$^2::
$+2::
$!2::
Loop
{
if not GetKeyState("2", "P")
break
if GetKeyState("LCtrl", "P")
Send ^2
else if GetKeyState("LShift", "P")
Send +2
else if GetKeyState("LAlt", "P")
Send !2
else
Send 2
sleep 135
}
return
}

1 个答案:

答案 0 :(得分:1)

我建议您为循环使用SetTimer并启用和禁用它。请查看以下各项是否对您有用:

$2::
$<^2::
$<+2::
$<!2::
SetTimer , label_TwoLoop , % ( bT := !bT ) ? "135" : "Off"
Return

label_TwoLoop:
If GetKeyState( "LCtrl" , "P" )
    Send , ^2
Else If GetKeyState( "LShift" , "P" )
    Send , +2
Else If GetKeyState( "LAlt" , "P" )
    Send , !2
Else
    Send , 2
Return

https://autohotkey.com/docs/commands/SetTimer.htm

请注意,我将<添加到了热键定义中,因为循环部分仅在寻找左修饰键。我认为这是预期的行为。