Сценарии 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.