AHK 释放时中断循环并继续按键
Posted
技术标签:
【中文标题】AHK 释放时中断循环并继续按键【英文标题】:AHK Break Loop on Release and continue on keypress 【发布时间】:2014-01-05 14:56:56 【问题描述】:我正在寻找调整附加脚本的建议。
当 xbutton2 被按下时,循环被执行并重复正常,但我很难像我想要的那样停止循环。
理想情况下,我希望在释放 xbutton2 时尽快停止循环。
如果在按住 xbutton2 的同时按下某个键(或指定范围的键),我还希望循环跳到开头。
xbutton2 down = 1-(400ms)-2-(400ms)-3-(400ms)-4-(750ms)-5-(500ms) - 等等
xbutton2 按下并在发送后释放 3 = 1-(400ms)-2-(400ms)-3 -xbutton2 释放
xbutton2 向下并在发送后按下 x 3= 1-(400ms)-2-(400ms)-3 -X- 1-(400ms)-2-(400ms) 等 p>
SetNumlockState, Alwayson
#MaxThreadsPerHotkey 3
$*XButton2::
loop
if not GetKeyState("XButton2", "P")
break
Send Blind 1
sleep 400
if (not GetKeyState("XButton2", "P")or GetKeyState("x", "P"))
continue
Send Blind 2
sleep 400
if (not GetKeyState("XButton2", "P")or GetKeyState("x", "P"))
continue
Send Blind 3
sleep 400
if (not GetKeyState("XButton2", "P")or GetKeyState("x", "P"))
continue
Send Blind 4
sleep 750
if (not GetKeyState("XButton2", "P")or GetKeyState("x", "P"))
continue
Send Blind 5
sleep 500
return
【问题讨论】:
【参考方案1】:您可以尝试从AHK forums 的这个示例开始:
list=a,b,c,enter,stringclick ; the list of keys and combos. comma separated.
stringsplit, list, list,`,
Counter = 0
$F8::
While GetKeyState("F8","P")
Counter := (Counter=list0) ? (1) : (Counter+1)
Send % list%counter%
Sleep 50
return
您可以使用附加热键将计数器重置为“0”。我认为以下内容可能对您有用:
list=Blind1,Blind2,Blind3,Blind4,Blind5
stringsplit, list, list,`,
Counter = 0
$*XButton2::
While GetKeyState("XButton2","P")
Counter := (Counter=list0) ? (1) : (Counter+1)
Send % list%counter%
Sleep 400
return
x::Counter = 0
【讨论】:
感谢您的意见,我喜欢这个主意。处理可变睡眠定时器的最佳方法是什么,因为发送命令之间的时间不同。 为什么不遵循同样的模式呢?otherlist=400,200,730,10
然后是 stringsplit, otherlist, otherlist,`,
和 Sleep otherlist%counter%
?以上是关于AHK 释放时中断循环并继续按键的主要内容,如果未能解决你的问题,请参考以下文章