【问题标题】:How to set the execution time of the MoveMouseRelative function in LUA?如何设置LUA中MoveMouseRelative函数的执行时间?
【发布时间】:2021-07-23 14:58:49
【问题描述】:

我是编程新手,需要问一个问题。 因此,加载到罗技鼠标中的这段代码以给定的速度拉下它:

MoveMouseRelative(0,3)
                        Sleep(25)

问题的本质:如何在切换到另一个功能之前以毫秒为单位设置此功能的确切时间,可能是这样的:

MoveMouseRelative(0,1)
                        Sleep(18)

因此,鼠标以一种速度移动一段时间,然后切换到另一种速度。 这是要修复的代码:

EnablePrimaryMouseButtonEvents(true);
 
function OnEvent(event, arg)
 
        if IsMouseButtonPressed(3)then
            repeat  
                if IsMouseButtonPressed(1) then
                    repeat
                        MoveMouseRelative(0,3)
                        Sleep(25)

                    until not IsMouseButtonPressed(1) 
                end             
            until not IsMouseButtonPressed(3)
        end 
end

感谢您的支持

【问题讨论】:

  • 您可以将repeat 循环替换为for i=1,10 do 循环,以在可预测的时间间隔后退出循环。

标签: lua logitech-gaming-software


【解决方案1】:

MoveMouseRelative 参数始终为整数(越大越快)
Sleep 参数建议为 15 的倍数(越小越快)

EnablePrimaryMouseButtonEvents(true)
 
function OnEvent(event, arg)
   Sleep(10)
   if IsMouseButtonPressed(3) and IsMouseButtonPressed(1) then
      local t0 = GetRunningTime()
      repeat
         MoveMouseRelative(0,3)  -- move fast
         Sleep(15)
      until GetRunningTime() > t0 + 500  -- exit this loop after 500 ms
         or not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
      repeat
         MoveMouseRelative(0,1)  -- move slow
         Sleep(30)
      until not (IsMouseButtonPressed(3) and IsMouseButtonPressed(1))
   end 
end

【讨论】:

    【解决方案2】:

    影响函数执行时间的唯一方法是降低 CPU 时钟(您不能)或插入空闲时间。

    这就是您使用 sleep 已经在做的事情。

    请注意,时间通常不是很准确。所以不要指望微秒级的分辨率。

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      相关资源
      最近更新 更多