Сценарии Logitech, сочетающие нажатие клавиш и щелчок мыши

Я пытаюсь сделать сценарий, который несколько раз нажимает левую кнопку мыши, когда я одновременно удерживаю левую кнопку управления левой кнопкой мыши

Это то, что я до сих пор:

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  

Обратите внимание, что я впервые рассматриваю этот тип кодирования, так как любая помощь очень ценится.

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

То, что вы конкретно ищете, может быть невозможно с 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

Эта информация основана на Lua API G-серии Logitech V3.02.

Другие вопросы по тегам