【问题标题】:Lua keyboard/mouse macro - stop on key releaseLua 键盘/鼠标宏 - 释放键时停止
【发布时间】:2023-04-02 17:30:01
【问题描述】:

早安,

我为我的鼠标录制了一个罗技游戏软件的宏,它结合了键盘按下、鼠标左键单击和延迟,并且运行良好。只要我按下鼠标按钮,它就会重复。

但是我遇到的问题是,一旦我松开按钮,它并没有立即结束。它完成序列然后结束。

我从来没有过任何 lua 编码经验,并做了一些谷歌搜索。我找到了很多信息和代码来做我目前正在做的事情,比如这个:

local flag

function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then
      flag = not flag
      if flag then
         repeat
            -----------------------
            -- your actions here 
            OutputLogMessage("repeat\n")
            Sleep(1000)
            -----------------------
            Sleep(15)
            local prev_flag = flag
            flag = IsMouseButtonPressed(5)
         until not prev_flag and flag
      end
   end
end

但如果我理解正确,如果我放开鼠标按钮,它不会中断代码,它根本不会再次循环。举个例子,如果代码按下 1,2,3,4,5 并且我在按下 3 时松开按钮。我不希望它执行 4,5 - 以防万一。

非常感谢您的帮助。

谢谢!

【问题讨论】:

  • 您发布的代码用于切换:您按 MB#5 启动循环,然后再次按 MB#5 停止此循环。此脚本无法解决您的问题(按下按钮时播放宏)。你需要另一个脚本。
  • It finishes the sequence and then ends. - 这就是 LGS 宏的工作原理。要立即停止序列,您需要一个脚本。
  • 那么,您更喜欢“按下按钮时播放宏”还是“按下开始并再次按下停止”?
  • 嘿,是的,我了解 LGS 宏的工作方式,因此我寻求脚本的帮助:3 我更喜欢“在按钮按下时播放宏”,谢谢。珍惜你的时间

标签: lua logitech-gaming-software


【解决方案1】:

创建您的宏“它是键盘按下、鼠标左键单击和延迟的组合”。
我假设您的宏的名称是MY_LOOP
将宏的类型设置为toggle
不要将宏绑定到任何按钮。

function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 20 then
      PlayMacro("MY_LOOP")
   end
   if event == "MOUSE_BUTTON_RELEASED" and arg == 20 then
      AbortMacro()
   end
end

宏在 MB#20 关闭时工作。

【讨论】:

  • 非常感谢您将这些放在一起。当然,菜鸟我很难让它着火:D我把你的代码放到我的游戏配置文件的脚本中,它保存得很好..很酷。我用游戏软件录制的宏叫做“Sorc”,所以我用Sorc替换了MY_LOOP。我不知道我的按钮 5 是哪个,我有一个有 20 个按钮的 G600。我尝试将 G20 设为“20”,但这并没有做任何事情。很抱歉成为害虫
  • 答案已更新。现在宏由按钮 #20 控制。
  • 现在火了,非常感谢。但是,当我松开按钮时,AbortMacro("Sorc") 行以红色突出显示,并显示“无效参数计数”。宏设置为切换。
  • 啊..没关系,我想通了。 AbortMacro() 而不是 AbortMacro("Sorc") 起作用。非常感谢您对此的帮助!
  • 操作!。我的错。
猜你喜欢
  • 2021-11-12
  • 2021-10-17
  • 2012-08-01
  • 1970-01-01
  • 2014-06-13
  • 2021-03-23
  • 2019-01-11
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多