You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求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

关键修改说明

  1. 替换事件类型:用KEYBOARD_PRESSED替代G_PRESSED,该事件可监听普通键盘的所有按键操作
  2. 大小写兼容:通过string.lower(arg)统一按键名称为小写,避免Caps Lock状态影响检测
  3. 保留原有宏逻辑:鼠标中键触发宏的逻辑不变,仅调整按键记录的触发条件

测试注意事项

  • 确保罗技G-Hub已授予脚本权限(在脚本设置中启用“允许脚本控制键盘/鼠标”)
  • 部分游戏可能有反宏机制,需确认游戏允许此类自定义输入
  • 可根据实际操作手感调整leanDuration和pauseDuration的数值

内容的提问来源于stack exchange,提问作者thpii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:24:51