Справка по сценарию Logitech — Переключение Левой Кнопки Мыши

#lua #logitech #logitech-gaming-software

Вопрос:

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

 toggle_button = 4 -- What mouse button should control the toggle
button_to_toggle = 1 -- What mouse button to toggle
toggle = false
EnablePrimaryMouseButtonEvents(true)
function OnEvent(event, arg)
    if (event == "MOUSE_BUTTON_PRESSED" and arg == toggle_button) then
        toggle = not toggle
            OutputLogMessage("Mouse %d toggled %s n", button_to_toggle, tostring(toggle))
    elseif toggle and (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then
            OutputLogMessage("Mouse 1 pressed n")
        PressAndReleaseMouseButton(1)
        elseif toggle then
            PressMouseButton(button_to_toggle)
        else
            ReleaseMouseButton(button_to_toggle)
        end
end
 

По какой-то причине мой сценарий вроде как работает. Левая кнопка мыши во время переключения работает только иногда, но в большинстве случаев не будет повторно включать переключатель мыши 1. Как мне очистить и исправить свой сценарий?

Комментарии:

1. Какого поведения вы хотите добиться при нажатии кнопки MB1 во время ее переключения?

2. Я бы хотел, чтобы он щелкнул левой кнопкой мыши, а затем вернулся к переключению, поэтому наведите курсор вверх, а затем снова вниз.

Ответ №1:

Шаг 1.
Вы собираетесь изменить поведение левой кнопки мыши.
Это является потенциально опасной операцией: вы можете делать практически ничего на вашем компьютере без ЛКМ.
Поэтому необходимо создать «запасной ЛКМ».
Например, если вы не используете кнопку мыши 8, вы можете сделать это вести себя как клон на ЛКМ.
Перейти на большую картинку мышкой в ЛГС и назначить команде «левой кнопкой мыши», чтобы ваше физическое МБ#8.
Теперь, если что-то пойдет не так и ваш ЛКМ перестает работать, вы можете нажать МБ#8 вместо ЛКМ.


Шаг 2.
Перейдите к изображению большой мыши в LGS.
Отмените назначение стандартной команды «Щелкните левой кнопкой мыши» на физическом МБ № 1 (выберите «Отменить назначение» в раскрывающемся меню).
Вы увидите предупреждение о потенциально опасной операции.
Разрешите эту операцию, потому что у вас есть «запасной ЛМБ», если что-то пойдет не так.


Шаг 3.
Ваш MB#1 сейчас не работает (пока вы не сохранили сценарий), поэтому используйте MB#8 вместо MB#1 в графическом интерфейсе LGS.
Установите сценарий:

 local pressed

function OnEvent(event, arg)
   if event == "PROFILE_ACTIVATED" then
      EnablePrimaryMouseButtonEvents(true)
   elseif event == "PROFILE_DEACTIVATED" then
      ReleaseMouseButton(1)
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 4 
   or (event == "MOUSE_BUTTON_PRESSED" or event == "MOUSE_BUTTON_RELEASED") and arg == 1 then
      pressed = not pressed
      ;(pressed and PressMouseButton or ReleaseMouseButton)(1)
   end
end
 

Комментарии:

1. Спасибо за подробный код. Ваш код кажется более отзывчивым и хорошо работающим, но я больше не могу удерживать мышь 1, когда переключатель отключен, он действует только как щелчок. Как заставить мою мышь 1 действовать как обычную мышь, когда переключатель отключен?

2. @derkamo — Ответ изменен.