Logitech Lua脚本求助:按住Mb5时LShift切换循环动作失效
Logitech Lua脚本切换循环问题修复
需求:
- 按住Mb5 → 循环执行按键8和7
- 按住Mb5同时按下LShift → 切换为循环执行按键r和e
- 释放LShift → 切回循环执行8和7
问题:按下LShift时,原循环停止但无法启动新循环;释放LShift后也无法切回原循环。
修改后的脚本
EnablePrimaryMouseButtonEvents(true) function OnEvent(event, arg) if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then repeat -- 每次循环前检查当前LShift状态,决定执行哪种按键序列 if IsModifierPressed("lshift") then -- 带LShift的循环逻辑:r和e Sleep(math.random(17, 34)) PressKey("r") Sleep(math.random(41, 85)) ReleaseKey("r") Sleep(math.random(17, 34)) PressKey("e") Sleep(math.random(41, 85)) ReleaseKey("e") else -- 无LShift的循环逻辑:8和7 local key1 = ({"8", "8"})[math.random(2)] local key2 = ({"7", "7"})[math.random(2)] Sleep(math.random(17, 34)) PressKey(key1) Sleep(math.random(17, 34)) PressKey(key2) Sleep(math.random(41, 85)) ReleaseKey(key1) Sleep(math.random(41, 85)) ReleaseKey(key2) end -- 循环终止条件:Mb5释放 until not IsMouseButtonPressed(5) end end
关键修改说明
- 合并循环逻辑:不再通过Mb5按下事件区分两种模式,而是在同一个循环内实时检测LShift状态,动态切换执行的按键序列
- 实时状态检测:每次循环迭代都检查LShift是否按下,确保状态变化能立即生效,无需重新触发Mb5按键事件
- 简化终止条件:仅保留Mb5释放作为循环终止条件,LShift的状态变化只影响循环内执行的动作,不再作为终止条件
内容的提问来源于stack exchange,提问作者Schomi
相关产品推荐
相关产品推荐

