Logitech Lua API 中的 IsMouseButtonPressed() 到底是怎么工作的?

我想制作一个简单的脚本,在我按住右键时,鼠标会自动释放和按下右键。但我遇到了一个奇怪的问题。

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) 然后释放按钮,我会得到以下日志:

Event: MOUSE_BUTTON_PRESSED Arg: 2

RELEASED.

True

PRESSED.

RELEASED.

True

PRESSED.

RELEASED.

False

PRESSED.

正如你所看到的,在释放后 rbPressedTrue,它似乎是物理鼠标按钮的状态,而不是模拟释放操作的状态。但是,在 PressMouseButton(3) 行之后 rbPressed 变为了 False。日志如下所示:

Event: MOUSE_BUTTON_PRESSED Arg: 2

RELEASED.

False

PRESSED.

Event: MOUSE_BUTTON_RELEASED Arg: 2

RELEASED.

False

PRESSED.

这是怎么回事?既然 PressMouseButton(3) 行在 IsMouseButtonPressed(3) 行之后,它不应该影响 rbPressed第一个输出吗?

原文链接 https://stackoverflow.com/questions/70523535

点赞
stackoverflow用户1847592
stackoverflow用户1847592

可以看到,在释放后,rbPressedTrue,这似乎是物理鼠标按钮的状态,而不是模拟释放动作。

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

ReleaseMouseButton(3) 被忽略了,因为没有在之前调用 PressMouseButton(3)

有一个内部计数器,PressMouseButton 会增加它,ReleaseMouseButton 会减少它。

当计数器为0时,ReleaseMouseButton 会被忽略。

2021-12-29 19:05:44