You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:21:01