4

我正在尝试制作一个脚本,当我用鼠标左键同时按住左控制键时反复单击鼠标左键

这是我到目前为止所拥有的:

function OnEvent(event, arg, family)
  OutputLogMessage("clicked event = %s, arg = %s\n", event, arg);
 if event == "MOUSE_BUTTON_PRESSED" and arg == 1 and Ctrl_Down == 1 then
      repeat
      PressMouseButton(1) //repeat while the left mouse button down
      until not PressMouseButton(1)
     else ReleaseMouseButton(3) //stop the repating on left mouse button up
  end

end  

请注意,这是我第一次查看这种类型的编码,非常感谢任何帮助

4

2 回答 2

2

首先,您必须定义EnablePrimaryMouseButtonEvents()为鼠标按钮 1 启用事件报告

为避免任何无限循环,您必须放置sleep();

按左控制键然后鼠标左键它将重复单击,直到您释放鼠标左键然后释放左控制键脚本应该停止

您的最终代码应如下所示:

EnablePrimaryMouseButtonEvents(true);

function OnEvent(event, arg)
    if IsModifierPressed("lctrl") then
        repeat  
            if IsMouseButtonPressed(1) then
                repeat
                    PressMouseButton(1)
                    Sleep(15)
                    ReleaseMouseButton(1)
                until not IsMouseButtonPressed(1)
            end             
        until not IsModifierPressed("lctrl")
    end         
end
于 2019-02-22T14:14:12.037 回答
0

使用 api 可能无法实现您特别寻找的内容。

当您调用PressMouseButton(1)它时,会更改鼠标左键的状态。ReleaseMouseButton(1)即使您仍然按下按钮,当您调用时也是如此,脚本会将其视为已释放。这意味着您不能IsMouseButtonPressed(1)用来检测按钮是否仍被按下。

要创建“点击”,您需要使用它PressAndReleaseMouseButton(1),并且您无法再检测到何时停止按下鼠标按钮。作为替代方案,您可以查看 ctrl 键并查看它是否仍被按下,使用IsModifierPressed("ctrl").

在检测到按下 ctrl 的左键单击后,应重复以下操作,并且仅在释放 ctrl 后才结束:

function OnEvent(event, arg, family)
    OutputLogMessage("clicked event = %s, arg = %s\n", event, arg);
    if event == "MOUSE_BUTTON_PRESSED" and arg == 1 and Ctrl_Down == 1 then
        repeat
            PressAndReleaseMouseButton(1) --repeat while the ctrl is still pressed
        until not IsModifierPressed("ctrl")
    end
end

此信息基于Logitech G 系列 Lua API V3.02

于 2019-02-18T21:04:35.460 回答