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(并释放按钮,我得到以下日志:

事件:MOUSE_BUTTON_PRESSED Arg:2
RELEASED

按下
已发布

按下
已发布
错误
按下
事件:MOUSE_BUTTON_RELEASED参数:2
已释放
错误
按下。

正如您所看到的,释放后的rbPressedTrue,这似乎是物理鼠标按钮的状态,而不是模拟的释放动作。然而,rbPressedPressMouseButton(3)线一起变为False。日志:

事件:MOUSE_BUTTON_PRESSED Arg:2
RELEASED
错误
按下
事件:MOUSE_BUTTON_RELEASED参数:2
已释放
错误
按下。

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

正如您所看到的,发布后的rbPressed为True,这似乎是物理鼠标按钮的状态,而不是模拟的发布操作。

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

已忽略ReleaseMouseButton(3),因为以前未调用PressMouseButton(3)
有一个内部计数器,PressMouseButton增加,ReleaseMouseButton减少
当计数器=0时,ReleaseMouseButton将被忽略。

最新更新