我试图让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
}
答案 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
请注意,我将<
添加到了热键定义中,因为循环部分仅在寻找左修饰键。我认为这是预期的行为。