如何编写适用于罗技鼠标的简单Lua代码?

我正在尝试为罗技鼠标编写脚本,实现以下功能:

1.当左鼠标按钮被按下时,它将激活第一种情况 2.当按住右鼠标按钮并按下左鼠标按钮时,它将激活第二种情况

然而,无论我如何尝试,它都只能在第一种情况下工作。

EnablePrimaryMouseButtonEvents(true)

function OnEvent(event, arg)
  -- Case 1: Press only Button  1
  if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and IsKeyLockOn("scrolllock") == false) then
    Sleep(77)
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 4)
      Sleep(76)
    end
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 6)
      Sleep(62)
    end
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 5)
      Sleep(84)
    end

  --Case 2: Press button 1+2
  elseif (event == "MOUSE_BUTTON_PRESSED" and arg == 2 and IsKeyLockOn("scrolllock") == false) then
    Sleep(77)
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 8)
      Sleep(76)
    end
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 9)
      Sleep(62)
    end
    if (IsMouseButtonPressed(1)) then
      MoveMouseRelative(0, 0)
      Sleep(84)
    end
  end
end

我想为这个脚本添加更多的情况:

-当按下RMB时-》按下Lshift键 -当释放RMB时-》再次按下Lshift键

我在脚本的末尾添加了以下内容,但它不起作用。

elseif (event == "MOUSE_BUTTON_PRESSED" and arg==2 and IsKeyLockOn("scrolllock")==false) then
    PressAndReleaseKey("lshift")

elseif (event == "MOUSE_BUTTON_RELEASED" and arg==2 and IsKeyLockOn("scrolllock")==false) then
    PressAndReleaseKey("lshift")

如果我想添加第三种情况:按下LAlt+LMB,那我应该把IsModifierPressed("lalt")放在哪里?我尝试了以下代码但失败了

function OnEvent(event, arg)
  if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and not IsKeyLockOn("scrolllock")) then
    if not IsMouseButtonPressed(3) then -- 3 = 右鼠标键(与arg==2相同)
      -- Case 1: Press only LMB
    if IsModifierPressed("lalt") then
      -- Case 3: Press LAlt+LMB
   else
      -- Case 2: Press RMB+LMB
    end
  elseif ((event == "MOUSE_BUTTON_PRESSED" or event == "MOUSE_BUTTON_RELEASED") and arg==2 and not IsKeyLockOn("scrolllock")) then
    PressKey("lshift")
    Sleep(50)
    ReleaseKey("lshift")
  end
end
点赞
用户6924740
用户6924740

你不应该在一个elseif之前放置一个end。elseif会自动作为最后一个if的end

我很惊讶这段代码居然能编译运行,就像你提到的,第一个case确实可以工作。

另外,你不需要在if的条件周围使用括号。因为已经被ifthen封装,所以语言设计上不需要像其他语言一样强制使用括号。

2019-11-14 07:07:08
用户1847592
用户1847592
  if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and not IsKeyLockOn("scrolllock")) then
    if IsModifierPressed("lalt") then
      -- Case 3: Press LAlt+LMB
    elseif not IsMouseButtonPressed(3) then -- 3 = Right Mouse Button (it's the same button as arg==2)
      -- Case 1: Press only LMB
    else
      -- Case 2: Press RMB+LMB
    end
  elseif ((event == "MOUSE_BUTTON_PRESSED" or event == "MOUSE_BUTTON_RELEASED") and arg==2 and not IsKeyLockOn("scrolllock")) then
    PressKey("lshift")
    Sleep(50)
    ReleaseKey("lshift")
  end
end
函数 OnEvent(事件,arg)
  如果 (事件 == “鼠标按钮按下”并且arg == 1且未锁定键盘锁定键(“scrolllock”))则
    如果 IsModifierPressed(“lalt”) 然后
     --情况3:按下LAlt + LMB
     否则如果 没有IsMouseButtonPressed(3)然后--3 =右鼠标按钮(与arg == 2的按钮相同)
     --情况1:只按下LMB
     其他
     --情况2:按下RMB + LMB
    结束
  否则 如果((事件 ==“鼠标按钮按下”或事件 ==“鼠标按钮释放”)且arg == 2且未锁定键盘锁定键(“scrolllock”))则
    PressKey(“lshift”)
    Sleep(50)
    ReleaseKey(“lshift”)
  结束
end
2019-11-14 08:48:53