使用 Logitech G13 LUA 脚本将字符串输出到桌面应用程序
Posted
技术标签:
【中文标题】使用 Logitech G13 LUA 脚本将字符串输出到桌面应用程序【英文标题】:Using Logitech G13 LUA script to output a string to a desktop application 【发布时间】:2021-12-09 09:06:32 【问题描述】:由于受伤,我正在使用 G13 以几种格式之一自动执行工作任务,其中之一是输入当前日期。使用此处的在线编译器:https://www.tutorialspoint.com/execute_lua_online.php,我能够弄清楚如何获取和格式化日期,但我找不到将字符串发送到 Word、Chrome、记事本等的输出方法 -无论活动窗口是什么。将它输出到日志或 LCD 并没有在我需要的地方得到它。打印不输出到活动窗口,并且 io.write 给出以下错误:[string“LuaVM”]:11:尝试索引全局 'io'(一个 nil 值)。 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
提前感谢您的任何想法。
【问题讨论】:
【参考方案1】:据我所知,必须对字符串的每个字符使用函数PressAndReleaseKey
。由于此函数不将字符本身作为参数,而是将 keyname (请参阅 API 中的 扫描码和键名表),情况变得更加复杂文档)。对于您的date
字符串,这可以工作(我还没有测试过):
for c in date:gmatch '.' do
if c == '/' then
c = "slash"
end
PressAndReleaseKey(c)
end
【讨论】:
因此,为了输出日期,我需要它读取字符串中 n = 1 到 string_length 的第 n 个字符,确定与该字符相关的键码字符串,然后 PressAndRelease(that_key)? 是的,这就是上面的 sn-p 应该做的。幸运的是,数字的键名与各自的数字相同,因此不需要翻译。以上是关于使用 Logitech G13 LUA 脚本将字符串输出到桌面应用程序的主要内容,如果未能解决你的问题,请参考以下文章