如何为罗技鼠标编写简单的 Lua 代码?
Posted
技术标签:
【中文标题】如何为罗技鼠标编写简单的 Lua 代码?【英文标题】:How can I write simple Lua code for Logitech mouse? 【发布时间】:2020-03-10 00:04:33 【问题描述】:我正在尝试为罗技鼠标制作一个脚本:
-
当按下鼠标左键时,将激活案例 1
按住鼠标右键并按下鼠标左键时,将激活案例2
但是,无论我如何尝试,它都只适用于案例 1。
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")
如果我想添加案例 3:按 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 = Right Mouse Button (it's the same button as 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
【问题讨论】:
其实代码并没有按照你说的做。我不熟悉罗技软件,但在你的情况下,如果没有按下键 1(因为elseif
),你只会进入elseif (event == "MOUSE_BUTTON_PRESSED"
。将第二个语句作为“正常”的 if 语句放入另一个语句中,它将起作用。
【参考方案1】:
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
【讨论】:
提前感谢您的帮助:D 我想在我按此脚本的 RMB 时再添加一个案例: - 当按 RMB -> 按 Lshift 按钮。 - 释放人民币时 -> 再次按下 Lshift 按钮。我在下面添加了脚本的结尾,它不起作用,你能帮帮我吗? elseif (event == "MOUSE_BUTTON_PRESSED" and arg==2 and IsKeyLockOn("scrolllock")==false) 然后 PressAndReleaseKey("lshift") elseif (event == "MOUSE_BUTTON_RELEASED" and arg==2 and IsKeyLockOn("scrolllock" )==false) 然后 PressAndReleaseKey("lshift") 再问一个问题 :) @Kel - 已更新。 我还有一个问题,希望你能帮助我xD link【参考方案2】:elseif 前不得有end
。 elseif 自动充当最后一个 if 的 end
。
我很惊讶这段代码甚至可以编译和运行,正如你所提到的,第一种情况确实有效。
编辑:您也不需要在 if 的条件周围使用括号。由于它已经被if
和then
封装,因此语言设计没有必要像其他语言那样强制要求。
【讨论】:
只是格式不好,end
关闭了内部if
。以上是关于如何为罗技鼠标编写简单的 Lua 代码?的主要内容,如果未能解决你的问题,请参考以下文章
高分请求JavaScript高人们:如何用JavaScript判断鼠标键盘无动作?