如何修改Lua脚本实现松开鼠标左键时立即终止当前执行流程
问题根源
你当前代码的核心问题是Sleep(5000)是阻塞式等待,在这5秒内不会实时检测鼠标左键是否松开,所以只能等整个5秒延时走完才会判断循环终止条件,导致无法即时停止。
解决方案
把长延时拆分为多次短延时,每次短延时后都检测一次鼠标按键状态,只要检测到松开就立刻释放x键、终止流程:
EnablePrimaryMouseButtonEvents(true); function OnEvent(event, arg) if IsKeyLockOn("numlock") then if IsMouseButtonPressed(1) then repeat PressKey("x") -- 把5000ms拆成短等待,每次都检测按键状态,100ms可根据灵敏度需求调整 local holdTime = 0 while holdTime < 5000 do Sleep(100) holdTime = holdTime + 100 if not IsMouseButtonPressed(1) then ReleaseKey("x") goto exitLoop -- 直接跳出所有循环 end end ReleaseKey("x") -- 200ms间隔等待也做同步检测处理 local waitTime = 0 while waitTime < 200 do Sleep(100) waitTime = waitTime + 100 if not IsMouseButtonPressed(1) then goto exitLoop end end until not IsMouseButtonPressed(1) ::exitLoop:: end end end
修改说明
- 原有功能逻辑完全保留:仅在NumLock开启、按住鼠标左键时触发x键循环按放逻辑
- 拆分长延时后响应灵敏度可自由调整,把每次短等待的100ms改得越小,松开鼠标后的停止响应速度越快
- 只要检测到鼠标左键松开,会立刻释放x键并终止所有执行逻辑,不会残留按键按下状态
内容的提问来源于stack exchange,提问作者klara
相关产品推荐
相关产品推荐

