罗技 LUA 脚本添加睡眠定时器

Posted

技术标签:

【中文标题】罗技 LUA 脚本添加睡眠定时器【英文标题】:Logitech LUA script adding sleep timer 【发布时间】:2021-08-13 06:08:22 【问题描述】:

想知道如何将睡眠计时器添加到我的 LUA 脚本中,这样它就不会尽可能快地持续循环并按 0x29,我想这样做,所以当我按下鼠标上的按钮 1 和 3 时它会命中每 3-4 秒键入一次 0x29,而不是尽可能快。

EnablePrimaryMouseButtonEvents(true);
function OnEvent(event, arg)
    if event == "MOUSE_BUTTON_PRESSED" then
        if (arg == 1 or arg == 2) then
            mb1 = IsMouseButtonPressed(1);
            mb2 = IsMouseButtonPressed(3);
            --OutputLogMessage(tostring(mb1) .. " - " .. tostring(mb2));
            if (mb1 == true and mb2 == true) then
                PressAndReleaseKey(0x29);
            end
        end
    end
end

【问题讨论】:

您的脚本模拟按键 0x29 每次按下物理鼠标按钮仅一次。它不是continually loops as fast as possible。实际上,您的代码中没有循环。所以,到目前为止,不需要睡眠定时器。 我相信的罗技 G 集线器程序会自动无限循环脚本并尽可能快地循环,这是我遇到的问题,所以我必须实际放置一些东西,所以如果可能的话,它只执行一次 G hub program I believe automatically loops the script infinitely - 否。每次按下/释放物理按钮都会调用一次 OnEvent()。 I have to physically put something - “实际放置”是什么意思? 我很抱歉我用错了词,谢谢你的帮助 Egor 我通过在脚本中添加一个按下和释放键的功能来解决我的问题。它现在按预期工作:) 单独的问题,@EgorSkriptunoff 有没有办法做到这一点,如果我有 MouseButtonPressed(1) 和 (3),在 5 秒的时间范围内只按下并释放键 0x29 一次?即使在所述 5 秒的时间范围内释放并再次按下鼠标按钮 1 和 3。 【参考方案1】:

您可以通过GetRunningTime()获取当前时间(毫秒)

local last_time = -math.huge
local is_pressed = 

function OnEvent(event, arg)
    if event == "PROFILE_ACTIVATED" then
        EnablePrimaryMouseButtonEvents(true)
    elseif event == "MOUSE_BUTTON_RELEASED" and (arg == 1 or arg == 2) then
        is_pressed[arg] = false
    elseif event == "MOUSE_BUTTON_PRESSED" and (arg == 1 or arg == 2) then
        is_pressed[arg] = true
        local mb1 = is_pressed[1]
        local mb2 = is_pressed[2]
        --OutputLogMessage(tostring(mb1) .. " - " .. tostring(mb2))
        if mb1 and mb2 and GetRunningTime() - last_time > 5000 then
            PressAndReleaseKey(0x29)
            last_time = GetRunningTime()
        end
    end
end

【讨论】:

哇非常感谢!!这太棒了,我不知道你能做到这一点

以上是关于罗技 LUA 脚本添加睡眠定时器的主要内容,如果未能解决你的问题,请参考以下文章

罗技 g512 键盘的 lua 脚本问题

ESP8266 LUA脚本语言开发: 外设篇-定时器,延时,看门狗

如何修复“在 Qt 中将两个定时器变为一个函数,使用 qmutex 将 qeventloop 进行睡眠”

罗技/LGHUB Lua - 带中断的循环

如何为罗技鼠标编写简单的 Lua 代码?

Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠