如何为Logitech鼠标编写简单的Lua代码?

如何为Logitech鼠标编写简单的Lua代码?,lua,logitech-gaming-software,Lua,Logitech Gaming Software,我正在尝试为logitech鼠标制作一个脚本: 当按下鼠标左键时,它将激活案例1 按住鼠标右键并按下鼠标左键时,将激活案例2 然而,无论我如何尝试,它都只适用于案例1 EnablePrimaryMouseButtonEvents(真) 函数OnEvent(事件,参数) --情况1:只按按钮1 如果(event==“MOUSE\u BUTTON\u PRESSED”和arg==1,IsKeyLockOn(“scrolllock”)==false),则 睡眠(77) 如果(IsMouseButton

我正在尝试为logitech鼠标制作一个脚本:

  • 当按下鼠标左键时,它将激活案例1
  • 按住鼠标右键并按下鼠标左键时,将激活案例2
  • 然而,无论我如何尝试,它都只适用于案例1

    EnablePrimaryMouseButtonEvents(真)
    函数OnEvent(事件,参数)
    --情况1:只按按钮1
    如果(event==“MOUSE\u BUTTON\u PRESSED”和arg==1,IsKeyLockOn(“scrolllock”)==false),则
    睡眠(77)
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,4)
    睡眠(76)
    结束
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,6)
    睡眠(62)
    结束
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,5)
    睡眠(84)
    结束
    --案例2:按下按钮1+2
    elseif(event==“鼠标按钮按下”,arg==2,IsKeyLockOn(“滚动锁”)==false),然后
    睡眠(77)
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,8)
    睡眠(76)
    结束
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,9)
    睡眠(62)
    结束
    如果(IsMouseButton按下(1)),则
    MoveMouseRelative(0,0)
    睡眠(84)
    结束
    结束
    结束
    
    我想在按下此脚本的RMB键时再添加一个案例:

    • 按下RMB->按下LSShift按钮
    • 当释放RMB->再次按下LSShift按钮
    我添加了脚本的结尾,如下所示,它不起作用

    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")
    
    如果我想添加案例3:按LAlt+LMB,那么我应该将IsModifierPressed(“LAlt”)放在哪里?我试了一下,但失败了

    函数OnEvent(事件,参数)
    如果(事件==“按下鼠标按钮”,参数==1,而不是IsKeyLockOn(“滚动锁”)),则
    如果未按IsMouseButonPressed(3),则--3=鼠标右键(与arg==2相同)
    --案例1:仅按LMB
    如果按下“lalt”,则
    --案例3:按下LAlt+LMB
    其他的
    --案例2:按RMB+LMB
    结束
    elseif((事件==“鼠标按钮按下”或事件==“鼠标按钮释放”)和arg==2,而不是IsKeyLockOn(“滚动锁”))
    按键(“lshift”)
    睡眠(50)
    释放键(“lshift”)
    结束
    结束
    
    您不能在elseif之前有一个
    结尾。elseif自动作为最后一个if的
    结束

    正如您所提到的,我很惊讶这段代码竟然可以编译并运行,因为第一种情况确实有效


    编辑:您也不需要在if的条件周围使用括号。由于它已经被
    if
    封装,因此,Language设计没有必要像在其他语言中那样强制使用它们。

    在elseif之前不能有
    end
    。elseif自动作为最后一个if的
    结束

    function OnEvent(event, arg)
      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
    
    正如您所提到的,我很惊讶这段代码竟然可以编译并运行,因为第一种情况确实有效


    编辑:您也不需要在if的条件周围使用括号。因为它已经被
    if
    封装了,所以对于Language设计来说,没有必要像在其他语言中那样强制使用它们。

    实际上,代码并没有按照您所说的做。我不熟悉logitech软件,但在你的情况下,如果没有按1键(因为
    elseif
    ),你只能进入
    elseif(event==“MOUSE\u BUTTON\u PRESSED”
    ),将第二条语句设为“normal”如果语句转换成另一个,它就会工作。实际上代码并没有按照你说的做。我不熟悉logitech软件,但在你的情况下,如果没有按1键(因为
    elseif
    ),你只会进入
    elseif(event==“MOUSE\u BUTTON\u PRESSED”
    ),则第二个语句为“normal”如果语句转换成另一个,它就会工作。它只是格式不好,
    结束
    关闭内部
    如果
    。它只是格式不好,
    结束
    关闭内部
    如果
    。提前感谢您的帮助:D我想在按此脚本的RMB时再添加一个大小写:-按RMB->按Lshift按钮。-何时释放RMB->再次按Lshift按钮。我添加了下面的脚本结尾,它不工作,你能帮我吗?elseif(event==“MOUSE\u button\u PRESSED”和arg==2和IsKeyLockOn(“scrollock”)==false),然后按andreleaseKey(“Lshift”)elseif(event==“MOUSE\u button\u released”和arg==2和IsKeyLockOn(“scrollock”)==false)然后按andreleasekey(“lshift”)再问一个问题(请:)@Kel-更新。我还有一个问题,希望你能帮助我xD提前感谢你的帮助:D我想在我按此脚本的RMB时再添加一个案例:-按RMB时->按Lshift按钮。-释放RMB时->再次按Lshift按钮。我添加了以下脚本结尾,它不起作用,你能帮我吗?elseif(事件==“鼠标按钮按下”和arg==2和IsKeyLockOn(“滚动锁”)==false),然后按AndreleaseKey(“lshift”)elseif(事件==“鼠标按钮释放”和arg==2和IsKeyLockOn(“滚动锁”)==false),然后按AndreleaseKey(“lshift”)再问一个问题:)@Kel-更新。我还有一个问题,希望你能帮助我xD
    function OnEvent(event, arg)
      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