能否将 .ahk 转换成 .lua?

我想使用 LUA 制作一个简单的宏来控制罗技鼠标。我完全是新手,只是从几个来源粘贴了几行代码。首先,它看起来很混乱,但是基本上能工作,对此我很抱歉,我完全是新手。现在我遇到的问题是;

我要实现的是,当我按下我分配的任何键时,它将切换为循环/重复,直到我再次按下任何键将其关闭。

我想要能够在鼠标上按 CTRL+7 并切换为重复模式,直到我再次按下 CTRL+7 将重复模式关闭。

请帮忙。非常感谢您的时间。

OutputLogMessage("Event:"..event.."Arg:"..arg.."\n"if event == "MOUSE_BUTTON_PRESSED" and arg == nil then
   repeat
      MoveMouseRelative(1280-5000)
      PressAndReleaseMouseButton(1)
      Sleep(3200until not IsMouseButtonPressed(nilend
end
点赞
用户1847592
用户1847592

步骤1

你在游戏中使用鼠标按钮4(“后退”)吗?

  • 如果是(在游戏中设置了某个操作与MB#4绑定),则继续“步骤2”。
  • 如果不是(游戏忽略MB#4按下),则跳过“步骤2”并继续“步骤3”。

步骤2

您需要将游戏操作从MB#4重新映射到其他键。

请执行以下操作:

  • 选择游戏中当前未使用的键盘按键

    (假设当前没有使用F12键)

  • 进入GHUB(鼠标设备,“分配”屏幕,键选项卡);

    F12分配给您的物理MB#4

  • 进入游戏设置;

    将游戏操作设置为F12,而不是MB#4

现在,当您按下物理MB#4时,游戏将收到F12并激活游戏操作。

跳过“步骤3”并进行“步骤4”。


步骤3

进入GHUB(鼠标设备,“分配”屏幕)。

取消分配物理MB#4的标准命令“后退”(单击并从下拉菜单中选择“DISABLE”)。

禁用的MB#4看起来像是一个白色的圆圈里面有黑色。


步骤4

进入GHUB(键盘设备,“分配”屏幕)。

将标准命令“后退”分配给物理键G7。


步骤5

设置脚本:

local toggle, prev_down

local function Interruptable_Sleep(ms)
   local tm = GetRunningTime() + ms
   repeat
      local now = GetRunningTime()
      if now < tm then
         Sleep(math.min(10, tm - now))
         local down = IsMouseButtonPressed(4)  -- 4 = "Back"
         toggle, prev_down = toggle or not prev_down and down, down
      end
   until toggle or now >= tm
end

function OnEvent(event, arg)
   OutputLogMessage("Event: "..event.." Arg: "..arg.."\n")
   if event == "G_PRESSED" and arg == 7 then
      toggle = not toggle
      if toggle then
         prev_down, toggle = true
         repeat
            for j = 1, 40 do
               MoveMouseRelative(1280/40,-5000/40)
               Interruptable_Sleep(10)
            end
            if not toggle then
               PressAndReleaseMouseButton(1)
               Interruptable_Sleep(3200)
            end
         until toggle
      end
   end
end

现在,您可以按下键盘键G7来启动和停止循环。

2021-09-01 11:56:50