Logitech g hub 脚本在我停止按下鼠标后立即停止执行

是否有可能使代码在我松开鼠标按钮1时立即停止运行,而不是等到循环结束?

EnablePrimaryMouseButtonEvents(true);
function OnEvent(event, arg)
  if IsKeyLockOn("capslock")then
    if IsMouseButtonPressed(1) then
      repeat
        MoveMouseRelative(-69,99)
        Sleep(133)
        MoveMouseRelative(11,91)
        Sleep(133)
        MoveMouseRelative(-109,84)
        Sleep(133)
        MoveMouseRelative(-86,75)
        Sleep(133)
        MoveMouseRelative(1,64)
        Sleep(133)
        MoveMouseRelative(33,56)
        Sleep(133)
        MoveMouseRelative(58,47)
        Sleep(133)
        MoveMouseRelative(75,39)
        Sleep(133)
        MoveMouseRelative(84,29)
        Sleep(133)
        MoveMouseRelative(83,18)
        Sleep(133)
        MoveMouseRelative(75,20)
        Sleep(133)
        MoveMouseRelative(60,36)
        Sleep(133)
        MoveMouseRelative(33,49)
        Sleep(133)
        MoveMouseRelative(3,55)
        Sleep(133)
        MoveMouseRelative(-32,69)
        Sleep(133)
        MoveMouseRelative(-55,64)
        Sleep(133)
      until not IsMouseButtonPressed(1)
    end
  end
end

所以即使我点击左键,我仍然必须等待循环完成,所以我想知道是否有方法让程序在我松开左键时立即停止。

点赞
用户7396148
用户7396148

为了使脚本更加响应,你需要紧缩循环。

在循环体中,你反复使用了相同的函数(MoveMouseRelativeSleep)。如果你简化循环体,你可以让它在每个 Sleep 后检查释放条件。

EnablePrimaryMouseButtonEvents(true);
function OnEvent(event, arg)
  if IsKeyLockOn("capslock") then
    if IsMouseButtonPressed(1) then
      local positions = {             -- 将 `MoveMouseRelative` 的参数移到一个二维数组中。
          {-69, 99},
          {11, 91},
          {-109, 84},
          {-86, 75},
          {1, 64},
          {33, 56},
          {58, 47},
          {75, 39},
          {84, 29},
          {83, 18},
          {75, 20},
          {60, 36},
          {33, 49},
          {3, 55},
          {-32, 69},
          {-55, 64},
      }
      local index = 1
      repeat
        MoveMouseRelative(positions[index][1], positions[index][2])
        Sleep(133)
        index = (index % #positions) + 1 -- 当索引达到数组长度时循环索引。
      until not IsMouseButtonPressed(1)
    end
  end
end
2020-08-11 19:51:36