罗技游戏软件鼠标Lua宏:松开按键立即中断执行的实现咨询
罗技游戏软件宏即时终止解决方案
核心实现代码
local running = false function OnEvent(event, arg) -- 触发按键默认设置为鼠标侧键5,可根据需求修改对应数字 if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then running = true repeat -- ------------------- 宏动作序列开始 ------------------- -- 示例动作:按下并释放键盘1键 PressKey("1") ReleaseKey("1") -- 每次操作后检查按键状态,松开则立刻终止 if not IsMouseButtonPressed(5) then running = false break end -- 示例短延时100ms Sleep(100) if not IsMouseButtonPressed(5) then running = false break end -- 示例动作:按下并释放键盘2键 PressKey("2") ReleaseKey("2") if not IsMouseButtonPressed(5) then running = false break end Sleep(100) if not IsMouseButtonPressed(5) then running = false break end -- 示例动作:按下并释放键盘3键 PressKey("3") ReleaseKey("3") if not IsMouseButtonPressed(5) then running = false break end Sleep(100) if not IsMouseButtonPressed(5) then running = false break end -- 示例动作:按下并释放键盘4键 PressKey("4") ReleaseKey("4") if not IsMouseButtonPressed(5) then running = false break end Sleep(100) if not IsMouseButtonPressed(5) then running = false break end -- 示例动作:按下并释放键盘5键 PressKey("5") ReleaseKey("5") if not IsMouseButtonPressed(5) then running = false break end Sleep(100) -- ------------------- 宏动作序列结束 ------------------- Sleep(15) until not running end end
使用说明
- 替换触发按键:如果需要使用其他鼠标按键触发,将代码中所有
5替换为对应按键编号,侧键4对应数字4、左键对应1、右键对应2、中键对应3。 - 替换自定义宏动作:把你录制的宏拆分为单个最小操作(按键按下/释放、鼠标点击、短延时),每完成一个操作就插入一段检查代码:
if not IsMouseButtonPressed(你的触发按键编号) then running = false break end - 长延时特殊处理:如果原有宏包含超过200ms的长延时,不要直接使用
Sleep(1000)这类长延时代码,拆分为多次短延时,每次短延时后插入检查,示例:-- 原需要延时1000ms,拆分为10次100ms短延时,每次检查按键状态 for i = 1, 10 do Sleep(100) if not IsMouseButtonPressed(5) then running = false break end end if not running then break end
原代码问题说明
你找到的原有代码仅在每轮宏序列完全执行完成后才检查一次按键状态,因此必须等整轮序列执行完毕才会停止。本方案在每个最小操作单元后都检查按键状态,只要检测到按键松开就会立刻跳出循环,终止后续所有操作,哪怕序列执行到一半也会立刻停止。
内容的提问来源于stack exchange,提问作者Maike
相关产品推荐
相关产品推荐

