如何在Logitech鼠标按钮中使用LUA编写切换宏

我刚接触Lua语言,想为Logitech鼠标按钮编写宏,所需操作是:按下按钮启动并循环执行宏,直到我再次按下按钮来切换它为止。

我知道有一个相似的问题已经发布过: Lua处理鼠标事件。但我有困难来运行他们的示例代码。存在两个问题: 1、我可以通过按下按钮5来启动循环,但只有在按住按钮5时循环才会继续。如何设置循环,只需按下一次然后释放即可继续循环? 2、重复循环不能通过再次按下按钮5来中止。它仍然会持续不断地运行。

我还尝试了这段代码

script_running = false
function OnEvent(event, arg)
    if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then
        if script_running then
            script_running = false
            return
        else
            script_running = true
        end
        repeat
            OutputLogMessage("repeat\n")
            Sleep(3000)
        until not script_running
        OutputLogMessage("end\n")
    end
end

重复循环仍然无法停止。

有没有人可以给出一些成熟的代码示例?非常感谢。

点赞
用户1847592
用户1847592
local flag

function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then
      flag = not flag
      if flag then
         repeat
            -----------------------
            -- 在此处添加你的操作
            OutputLogMessage("repeat\n")
            Sleep(1000)
            -----------------------
            Sleep(15)
            local prev_flag = flag
            flag = IsMouseButtonPressed(5)
         until not prev_flag and flag
      end
   end
end

本地变量 flag

函数 OnEvent(event, arg),当事件为 "MOUSE_BUTTON_PRESSED" 并且参数为 5 时执行以下操作:

flag 取反

如果 flag 为真,则重复执行以下操作:

“你的操作”处添加自己所需的代码

输出字符串 "repeat\n"

暂停 1000 毫秒

暂停 15 毫秒

将变量 prev_flag 赋值为旧的 flag

将变量 flag 赋值为是否按下鼠标中键

直到 prev_flag 是假且 flag 是真。

2020-10-08 15:08:50