Lua脚本:为鼠标移动添加重复代码

我正在查看一些用于Logitech键盘的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

请注意,这是我第一次查看此类编码,因此任何帮助都将不胜感激。

点赞
用户6614127
用户6614127

如果你想让 G1 键作为切换键,你需要做一些与之前不同的事情。检查 G1 键是否按下的唯一方式是通过使用 OnEvent() 处理程序响应点击事件。IsMouseButtonPressed() 无法让你检查 G 键。

如果你当前正在按下键后运行 OnEvent() 函数,再次按下 G1 键将简单地再次调用该函数,重新启动循环。为了避免这个问题,你需要保持一个信号量来防止函数重新进入循环。此外,这个标志将信号量原始运行,以便完成。

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_runningnil(相当于 false)。所以 script_running 被设置为 true 并运行循环。然后,当你再次按下 G1 键时,它会再次进入函数,但这次 script_runningtrue,它将把 script_running 变量设置为 false 并退出函数。此时,原始循环最终会遇到循环条件 not script_running == true 并退出,停止脚本。

是的,这比你的原始代码更复杂,但不幸的是必要的。

2017-08-28 22:03:06