在 PressMouseButton(1) 和 ReleaseMouseButton(1) 之间使用“then break end”保持按下按钮

问题描述

执行宏时,按住 LMB + RMB 时,有时按钮保持按下状态。如何在不求助于 PressAndReleaseMouseButton(1) 的情况下解决此问题?甚至有可能吗?

    EnablePrimaryMouseButtonEvents(true);
    function OnEvent(event,arg)
     if IsMouseButtonpressed(1) then
      repeat
       PressMouseButton(1)
       Sleep(33) if not IsMouseButtonpressed(3) then break end
       ReleaseMouseButton(1)
       PressMouseButton(1)
       Sleep(33) if not IsMouseButtonpressed(3) then break end
       ReleaseMouseButton(1)
       PressMouseButton(1)
       Sleep(33) if not IsMouseButtonpressed(3) then break end
       ReleaseMouseButton(1)
      until not IsMouseButtonpressed(1)
     end
    end

附言不需要循环,应该执行到最后停止,或者松开按钮时提前停止。

解决方法

function OnEvent(event,arg)
   if event == "PROFILE_ACTIVATED" then
      EnablePrimaryMouseButtonEvents(true)
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and IsMouseButtonPressed(3) then
      for i = 1,3 do  -- press LMB 3 times and stop
         PressMouseButton(1)
         Sleep(33)
         ReleaseMouseButton(1)
         Sleep(33)
         if not IsMouseButtonPressed(3) then break end
      end
   end
end