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

Logitech Lua脚本故障:按键按下启动循环松开无法停止

Logitech Lua脚本循环无法终止的问题修复

问题根源

原脚本的核心问题是:OnEvent函数是事件驱动的,当按下G1触发G_PRESSED事件进入循环后,函数会一直卡在repeat-until循环里,无法响应后续的G_RELEASED事件——循环内的event变量始终是触发循环时的G_PRESSED值,不会自动更新,导致永远无法触发break或满足until条件。

正确实现方案

需要用全局变量标记循环状态,配合非阻塞的循环逻辑,让脚本能同时响应按键松开事件:

local is_loop_running = false  -- 全局变量标记循环运行状态

function OnEvent(event, arg)
    -- 按下G1时启动循环
    if event == "G_PRESSED" and arg == 1 then
        is_loop_running = true
        OutputLogMessage("Start Loop\n")
        
        -- 循环逻辑:通过全局变量控制启停
        while is_loop_running do
            OutputLogMessage("Loop\n")
            Sleep(100)  -- 必须添加Sleep,避免占用100%CPU,同时给脚本处理其他事件的间隙
        end
        
        OutputLogMessage("End Loop\n")
    -- 松开G1时终止循环
    elseif event == "G_RELEASED" and arg == 1 then
        is_loop_running = false
    end
end

关键要点

  • 全局状态变量:is_loop_running用来跨事件传递状态,松开按键时修改该变量,循环内会实时检测到并退出。
  • Sleep函数:必须添加,一方面降低CPU占用,另一方面让脚本有时间处理G_RELEASED事件,否则循环会一直占用线程,无法响应松开操作。

内容的提问来源于stack exchange,提问作者Diogo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:52:09