【问题标题】:Lua Script : adding a repeating code for a mouse movementLua 脚本:为鼠标移动添加重复代码
【发布时间】:2018-02-06 03:52:55
【问题描述】:

我目前正在研究罗技键盘的一些 Lua 编码。

我可以让代码在一次按下时工作,我已经放置了一个重复和睡眠计时器,并希望它继续循环,直到我按下不工作的鼠标按钮。

这是我目前所拥有的:

function OnEvent(event, arg)
    if event == "G_PRESSED" and arg == 1  then
        PressMouseButton(3)
repeat
           MoveMouseRelative(-20,0)
            Sleep(50)
        until not PressMouseButton(1)
    end
end

请注意,这是我第一次查看这种类型的编码,非常感谢任何帮助。

【问题讨论】:

  • “不工作。”不是很具有描述性。您解释了您希望脚本执行的操作,但没有解释当前不正确的行为或错误是什么。
  • 嗨,ktb,很抱歉,目前程序正在运行,按下 G1 键,屏幕移动,没有重复。希望这会有所帮助。

标签: lua repeater


【解决方案1】:

如果您希望 G1 键用作切换键,您将不得不做一些与您之前做的事情不同的事情。检查是否按下 G1 键的唯一方法是使用 OnEvent() 处理程序响应单击事件。 IsMouseButtonPressed() 不允许您检查 G 键。

如果您在按下按键后当前正在运行OnEvent() 函数,再次按下 G1 键只会再次调用该函数并重新启动循环。为了避免这个问题,您需要保留一个标志,以防止函数重新进入循环。此外,此标志将指示 OnEvent() 的原始运行完成。

function OnEvent(event, arg)
    if event == "G_PRESSED" and arg == 1  then
        if script_running then
            script_running = false
            return
        else
            script_running = true
        end
        PressMouseButton(3)
        repeat
            MoveMouseRelative(-20,0)
            Sleep(50)
        until not script_running
    end
end

上例中的标志是script_running。在函数 script_running 的第一次运行中是 nil(其计算结果为 false)。所以script_running 设置为true 并运行循环。然后当你再次按下 G1 键时它再次进入函数,但这次script_runningtrue,它将script_running 变量设置为false 并退出函数。此时原始循环最终将满足循环not script_running == true 的条件并退出;停止脚本。

是的,这比您的原始代码涉及更多,但不幸的是这是必要的。

【讨论】:

  • 嗨 ktb,感谢您为我查看此内容。我将看看实现代码。使用此代码,始终按下鼠标右键。理想情况下,我想要以下内容:通过按鼠标右键单击按住移动 -20 然后释放右键单击重复 50ms 延迟来循环。这段编码只是我理解Lua思想的起点。
  • 嗨,ktb,我将代码添加到脚本中,但它仍然只在按下 G1 键时执行一次,没有重复。右键单击保持活动状态,只是没有鼠标移动。
  • 我还是不太确定你想要什么行为。按下 G1 按钮后,您希望循环继续,将鼠标向左移动,直到您释放右键?或者直到您释放 G1 按钮?
  • 对不起,我应该说明我希望它如何工作。我希望它重复,直到我再次按下 G1。几乎可以用作切换开关。
  • 这需要对您的代码进行完整的重构才能工作。我将重写我的答案并尝试解释为什么您需要重构。
猜你喜欢
  • 1970-01-01
  • 2022-10-20
  • 2021-05-28
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 2011-06-11
  • 2020-09-22
  • 2018-04-19
相关资源
最近更新 更多