如何为Logitech鼠标编写简单的Lua代码?
我正在尝试为logitech鼠标制作一个脚本:如何为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
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