Logitech脚本结合击键和鼠标点击

问题描述 投票:4回答:2

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

这是我到目前为止:

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  

请注意,这是我第一次查看此类编码,因为非常感谢任何帮助

lua logitech logitech-gaming-software
2个回答
1
投票

首先,您必须定义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

0
投票

api可能无法满足您的需求。

当你调用PressMouseButton(1)时,这会改变鼠标左键的状态。当你打电话给ReleaseMouseButton(1)时,即使你仍按下按钮也是如此,脚本会将其视为已发布。这意味着您无法使用IsMouseButtonPressed(1)来检测按钮是否仍然按下。

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

在检测到左击ctrl down之后应重复以下操作,并且只有在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。

© www.soinside.com 2019 - 2024. All rights reserved.