Быстрый огонь со сценарием Logitech Lua? - PullRequest
1 голос
/ 26 сентября 2019

При написании сценариев lua для моего logitech g502 я получил быстрый запуск, но он продолжит выполнять нажатия мыши после отпускания одной кнопки мыши, пока удерживается клавиша ctrl.Мне интересно, есть ли какая-либо итерация, которая позволила бы мне сигнализировать о функции, которая нажимает и отпускает мышь, но при условии, что нажата та же кнопка мыши (например, должен удерживаться ctrl, и быстрый запуск выполняется только тогда, когдакнопка мыши 1 удерживается, а не до отпускания Ctrl).

Вот код, на который я ссылаюсь

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

Мне интересно, существует ли какая-либо итерация, котораяпозволил бы мне сигнализировать о функции, которая нажимает и отпускает мышь, но при условии, что та же самая кнопка мыши нажата (например, должен удерживаться Ctrl, и быстрый запуск выполняется только тогда, когда кнопка мыши удерживается нажатой, а не доCtrl выпущен).

Альтернативы, которые я рассмотрел: привязка огня к другой клавише, которая не является кнопкой мыши 1, и повторение ее при нажатии кнопки мыши 1.

Заранее спасибо

1 Ответ

0 голосов
/ 26 сентября 2019

Фактическая проблема заключается в том, что вы пытаетесь одновременно прочитать реальное состояние и симулировать нажатие / отпускание одной и той же кнопки мыши.
Единственный способ решить эту проблему - это (как вы предложили) привязать огонь к дополнительной клавише.
Например, в игровом конфиге вы назначаете комбинацию левой клавиши мыши и клавиши клавиатуры Ctrl P для «Огонь».Обратите внимание, что P без модификатора НЕ должно быть назначено для каких-либо действий в игре.
И ваш сценарий будет следующим:

EnablePrimaryMouseButtonEvents(true)

function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 1 and IsModifierPressed("lctrl") then
      repeat
         Sleep(15)
         PressKey("P")
         Sleep(15)
         ReleaseKey("P")
      until not IsMouseButtonPressed(1) or not IsModifierPressed("lctrl")
   end
end
...