Logitech Lua脚本需求:实现随机Alt+Tab及修复停止功能报错
解决方案
修复后的完整脚本
EnablePrimaryMouseButtonEvents(true) -- 标记是否已完成首次点击后的窗口切换 local has_switched_windows = false function OnEvent(event, arg) -- CapsLock未开启时直接退出 if not IsKeyLockOn("capslock") then return end -- 鼠标5键启动自动点击循环 if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then has_switched_windows = false repeat -- 模拟真实右键点击(按住后释放) PressMouseButton(3) Sleep(math.random(50, 200)) ReleaseMouseButton(3) -- 首次点击后执行窗口切换流程 if not has_switched_windows then -- 随机延迟后切换到其他窗口 Sleep(math.random(1000, 3000)) PressKey("alt") PressKey("tab") Sleep(math.random(100, 300)) ReleaseKey("tab") ReleaseKey("alt") -- 随机停留后切回原窗口 Sleep(math.random(5000, 15000)) PressKey("alt") PressKey("tab") Sleep(math.random(100, 300)) ReleaseKey("tab") ReleaseKey("alt") has_switched_windows = true end -- 拆分长睡眠为小段,实时检测停止指令 local total_sleep = math.random(2000, 940000) local slept = 0 while slept < total_sleep do local step = math.min(200, total_sleep - slept) Sleep(step) slept = slept + step -- 检测到鼠标4键按下则退出循环 if IsMouseButtonPressed(4) then goto stop_loop end end ::stop_loop:: until IsMouseButtonPressed(4) end end
关键改动说明
- 修复鼠标4键停止失效问题:将原脚本的长时长
Sleep拆分为200ms的小段,每段睡眠后立即检查鼠标4键状态,确保能及时响应停止指令,不会因长时间睡眠导致无法触发停止。 - 添加随机窗口切换功能:
- 通过全局变量
has_switched_windows控制切换流程仅在首次点击后执行一次,避免重复切换。 - 模拟
Alt+Tab按键时添加短延迟,保证系统能正确识别按键序列,防止切换失败。 - 切换后随机停留5-15秒再切回原窗口,符合随机化需求。
- 通过全局变量
- 优化点击行为:右键点击时增加50-200ms的按住时长,更贴近真实用户的操作逻辑。
使用步骤
- 开启CapsLock键激活脚本功能;
- 按下鼠标5键(前侧键)启动自动点击,首次点击后会自动执行窗口切换流程;
- 按下鼠标4键(后侧键)可立即停止脚本运行。
内容的提问来源于stack exchange,提问作者Devin Gottlieb
相关产品推荐
相关产品推荐

