【问题标题】:How does IsMouseButtonPressed() in Logitech Lua API work exactly?Logitech Lua API 中的 IsMouseButtonPressed() 是如何工作的?
【发布时间】:2022-01-28 01:47:16
【问题描述】:

我想制作一个简单的脚本,当我按住鼠标右键时,鼠标会自动释放并按下鼠标右键。但是我遇到了一个棘手的问题。

Lua 代码:

function OnEvent(event, arg)
    OutputLogMessage("Event: "..event.." Arg: "..arg.."\n")
    repeat
        ReleaseMouseButton(3)
        OutputLogMessage("RELEASED.\n")
        
        Sleep(300)
        rbPressed = IsMouseButtonPressed(3)
        PrintBool(rbPressed)
        
        --PressMouseButton(3)
        OutputLogMessage("PRESSED.\n")  
    until not rbPressed
end

当我如上所述注释掉PressMouseButton(3)时,在足够的时间(>300ms)按下鼠标右键并释放按钮,我得到以下日志:

事件:MOUSE_BUTTON_PRESSED Arg:2
已发布。
是的
已按下。
已发布。
真的
已按下。
已发布。
假的
已按下。
事件:MOUSE_BUTTON_RELEASED Arg:2
已发布。
假的
按下。

你可以看到释放后的rbPressedTrue,这似乎是鼠标按键的状态,而不是模拟的释放动作。但是,rbPressed 变为 FalsePressMouseButton(3) 行。日志:

事件:MOUSE_BUTTON_PRESSED Arg:2
已发布。
错误
已按下。
事件:MOUSE_BUTTON_RELEASED Arg:2
已发布。
假的
按下。

这怎么可能?由于PressMouseButton(3) 行在IsMouseButtonPressed(3) 行之后,它不应该影响rbPressedFIRST 输出。

【问题讨论】:

    标签: lua mouse script logitech logitech-gaming-software


    【解决方案1】:

    你可以看到释放后的rbPressed为True,这似乎是鼠标按键的状态,而不是模拟的释放动作。

    IsMouseButtonPressed 返回模拟按钮,而不是物理按钮。

    ReleaseMouseButton(3) 被忽略,因为之前没有调用过 PressMouseButton(3)
    有一个内部计数器,PressMouseButton 增加它,ReleaseMouseButton 减少。
    当计数器 = 0 时,ReleaseMouseButton 被忽略。

    【讨论】:

    • 感谢您的快速回答。但如果IsMouseButtonPressed() 只返回模拟按钮,则rbPressed 应在PressMouseButton() 被注释掉时保持false
    • 按钮绑定还模拟按下/释放物理按钮时的按下/释放。去掉人民币绑定再试一次,rbPressed会变成false
    • 确实rbPressed在G HUB中从物理G2按钮中删除默认Secondary Key绑定后仍然保持False,但是发生了什么并使'rbPressed'变成True之后按住 G2 按钮和 Secondary Key 绑定时的 ReleaseMouseButton(3) 操作?
    • 如果是因为Secondary Key绑定做了一次PressMouseButton(3)动作,那么RealeaseMouseButton(3)之前的rbPressed不应该被忽略。如果Secondary Key绑定使PressMouseButton(3)连续动作或者锁定IsMouseButtonPressed(3)的值,那么rbPressed应该保持True不管是否注释掉PressMouseButton(3)
    • 辅助键绑定执行一次 PressMouseButton(3) 操作 - 绑定不调用 PressMouseButton,它模拟按键而不影响计数器。
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2014-06-19
    • 2020-03-12
    • 2021-07-09
    • 2021-01-23
    相关资源
    最近更新 更多