LOGITECH GHUB LUA: SetMKeyState

我想使用 Logitech LUA 脚本 api 中可用的 SetMKeyState(...) 和 GetMKeyState(...) 函数编写一些宏。

我正在使用 Windows 10 和最新版本的 Logitech GHUB(由于各种原因,我不能使用 LGS)。在我的键盘上,Logitech G815,似乎从 LUA 宏调用任何 SetMKeyState(...) 都无法起作用。而 GetMKeyState(...) 则可以正确返回当前 MKey 状态。我已经阅读了“G 系列 Lua API V8.45”文档中与这两个函数相关的文档,并且看起来我正在正确使用它们。

例如,以下 LUA 脚本应该使用 G1 键在 M1/M2/M3 之间切换 MKey 状态,但实际上不会做任何事情(尽管代码已经执行,因为调试日志行出现):

function OnEvent(event, arg)
  if (event == "G_PRESSED" and arg == 1) then
    currentState = GetMKeyState("kb")
    OutputLogMessage("Current MKey state: %d\n", currentState)
    newState = currentState + 1
    if newState == 4 then
      newState = 1
    end
    OutputLogMessage("Setting new MKey state: %d\n", newState )
    SetMKeyState(newState , "kb");
  end
end

我做错了什么吗?

如果预期 SetMKeyState(...) 函数不支持 Logitech G815,则哪个键盘型号将正确支持 SetMKeyState(...) 函数以更改 MKey 状态?

点赞
用户5920627
用户5920627

这实际上不是一个答案,只是一个建议,但我不知道如何在评论中粘贴代码,所以希望你能原谅我:)

API文档有一个参考代码:

-- 当按下G1键时将当前的M键状态设置为M1
function OnEvent(event, arg)
    if (event == "G_PRESSED" and arg == 1) then
        SetMkeyState(1);
    end
end

如果我是你,我会先检查它是否可以正常工作,没有任何更改。

然后,一步步进行:

  • 添加调试信息;
  • 再次检查;
  • 尝试将其设置为2而不是1;
  • 尝试将其设置为3;
  • 尝试在操作之前和之后读取和打印当前状态,考虑到API文档中的这一说明:“立即调用GetMKeyState很可能会返回上一个状态。使用OnEvent处理程序确定操作何时已完成。”
2021-07-05 00:07:33