Сценарии Logitech, сочетающие нажатие клавиш и щелчок мыши - PullRequest
0 голосов
/ 13 февраля 2019

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

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

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 ]

0 голосов
/ 22 февраля 2019

Прежде всего, вы должны определить 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 голосов
/ 19 февраля 2019

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

...