罗技Lua脚本需求:单键实现单击与长按自动触发不同操作
罗技鼠标10号按键脚本修改方案
要实现长按200ms无需松开按键就触发Win+V,同时单击触发Ctrl+V,需要通过定时器+按键状态检查调整原脚本逻辑,核心是在按键按下后主动定时判断状态,而非等待松开后再执行判断。
修改后的完整脚本
-- 全局变量记录状态:是否已触发长按动作 local hasTriggeredLongPress = false function OnEvent(event, arg) OutputLogMessage("event = %s, arg = %s\n", event, arg) if event == "MOUSE_BUTTON_PRESSED" and arg == 10 then hasTriggeredLongPress = false -- 设置200ms定时器,到时检查按键是否仍处于按住状态 SetTimer("CheckLongPress", 200) elseif event == "MOUSE_BUTTON_RELEASED" and arg == 10 then -- 清除定时器,避免短按后定时器延迟触发 ClearTimer("CheckLongPress") -- 仅当未触发过长按动作时,执行单击的Ctrl+V if not hasTriggeredLongPress then PressKey("lctrl") PressAndReleaseKey("V") ReleaseKey("lctrl") OutputLogMessage("Triggered Ctrl+V on short press\n") end end end -- 定时器触发的长按检查函数 function CheckLongPress() ClearTimer("CheckLongPress") -- 确保定时器仅执行一次 -- 检查10号按键是否仍处于按下状态 if IsMouseButtonPressed(10) then hasTriggeredLongPress = true -- 立即触发Win+V PressKey("lgui") PressAndReleaseKey("V") ReleaseKey("lgui") OutputLogMessage("Triggered Win+V on long press\n") end end
关键修改说明
- 新增状态标记:用
hasTriggeredLongPress变量记录是否已触发长按动作,避免松开按键时重复执行Win+V。 - 定时器主动检查:按下按键时启动200ms定时器,到时自动执行检查函数,主动判断按键是否仍按住,满足条件则立即触发Win+V。
- 松开逻辑优化:松开按键时先清除定时器,防止短按后定时器延迟触发;仅当未触发过长按动作时,才执行单击的Ctrl+V。
内容的提问来源于stack exchange,提问作者AINER
相关产品推荐
相关产品推荐

