寻求Logitech G-Hub Lua脚本解决方案:非G键M/N触发不同按键序列
解决非罗技G键(M/N)的按键记忆与宏触发问题
你的核心问题是原脚本用G_PRESSED事件仅能监听罗技自定义G键,无法捕捉普通键盘的M/N按键,导致无法记录最后按下的键。下面是修正后的可行方案:
修正后的脚本
-- 记录最后按下的按键 local lastKeyPressed = nil function OnEvent(event, arg) -- 监听普通键盘的M/N按键按下事件 if event == "KEYBOARD_PRESSED" then -- 统一转小写,避免大小写区分问题 local key = string.lower(arg) if key == "m" then lastKeyPressed = "m" elseif key == "n" then lastKeyPressed = "n" end end -- 监听鼠标中键按下,触发宏序列 if event == "MOUSE_BUTTON_PRESSED" and arg == 3 then QP() end end function QP() local leanDuration = 25 -- 按键按住时长(毫秒) local pauseDuration = 40 -- 动作间隔时长(毫秒) if lastKeyPressed == "n" then -- 最后按N:先M后N PressKey("m") Sleep(leanDuration) ReleaseKey("m") Sleep(pauseDuration) PressKey("n") Sleep(leanDuration) ReleaseKey("n") elseif lastKeyPressed == "m" then -- 最后按M:先N后M PressKey("n") Sleep(leanDuration) ReleaseKey("n") Sleep(pauseDuration) PressKey("m") Sleep(leanDuration) ReleaseKey("m") else -- 无前置按键时的默认动作(可按需修改) PressKey("n") Sleep(leanDuration) ReleaseKey("n") Sleep(pauseDuration) PressKey("m") Sleep(leanDuration) ReleaseKey("m") end lastKeyPressed = nil -- 触发后重置记录 end
关键修改说明
- 替换事件类型:用
KEYBOARD_PRESSED替代G_PRESSED,该事件可监听普通键盘的所有按键操作 - 大小写兼容:通过
string.lower(arg)统一按键名称为小写,避免Caps Lock状态影响检测 - 保留原有宏逻辑:鼠标中键触发宏的逻辑不变,仅调整按键记录的触发条件
测试注意事项
- 确保罗技G-Hub已授予脚本权限(在脚本设置中启用“允许脚本控制键盘/鼠标”)
- 部分游戏可能有反宏机制,需确认游戏允许此类自定义输入
- 可根据实际操作手感调整
leanDuration和pauseDuration的数值
内容的提问来源于stack exchange,提问作者thpii
相关产品推荐
相关产品推荐

