使用 Logitech G13 LUA 脚本将字符串输出到桌面应用程序

由于受伤,我正在使用 G13 自动化工作任务,其中之一就是以几种格式输入当前日期。使用在线编译器 https://www.tutorialspoint.com/execute_lua_online.php,我能够弄清楚如何获取和格式化日期,但我找不到将字符串发送到 Word、Chrome、记事本等任何活动窗口的输出方法。将其输出到日志或液晶显示器并不能达到我需要的目的。print 不会输出到活动窗口,而 io.write 给出以下错误:[string "LuaVM"]:11: attempt to index global 'io' (a nil value)。Os.date 给出了类似的错误,这就是为什么它被注释掉的原因。

我测试用的代码:

function OnEvent(event, arg)
    OutputLogMessage("event = %s, arg = %s\n", event, arg)

    local MKeyState = GetMKeyState("lhc")
    --OutputLogMessage(MKeyState)

    if (event == "G_PRESSED" and arg == 14 and MKeyState == 2) then
        local date = GetDate("%m/%d/%y") --os.date("%m/%d/%y")
        OutputLogMessage(date)
        OutputLCDMessage(date)
        io.write(date)
        --print(os.date("%m/%d/%y"))
    end
end

我的测试输出:

event = PROFILE_DEACTIVATED, arg = 0
event = PROFILE_ACTIVATED, arg = 0
event = G_PRESSED, arg = 14
10/22/21[string "LuaVM"]:11: attempt to index global 'io' (a nil value)

event = G_RELEASED, arg = 14

感谢您提供的任何想法。

原文链接 https://stackoverflow.com/questions/69681644

点赞
stackoverflow用户2413201
stackoverflow用户2413201

据我所见,用户需要使用函数PressAndReleaseKey与字符串中的每个字符一起使用。此情况更加复杂,因为该函数不会将字符本身作为参数,而是一个 keyname (参见 API 文档中的_扫描码和键名称表_)。对于 date 字符串,可能可以使用以下方法(我没有测试):

        for c in date:gmatch '.' do
            if c == '/' then
                c = "slash"
            end
            PressAndReleaseKey(c)
        end
2021-10-23 09:13:35