我学到了lua。这是我的第一种编程语言。我自己编写了这个脚本,使用logitechs文档来学习语言。
我写了两个类似的代码,试图从两种不同的方式来解决我的问题。两者都失败了。
Code#1
EnablePrimaryMouseButtonEvents(true)
function OnEvent(event, arg)
--OutputLogMessage("Event: "..event.." Arg: "..arg.."\n")
if IsKeyLockOn("capslock") then
repeat
if IsMouseButtonPressed(1) then
repeat
PressAndReleaseKey("p")
Sleep(10)
MoveMouseRelative(-10,0)
Sleep(10)
MoveMouseRelative(10,0)
Sleep(10)
until not IsMouseButtonPressed(1)
end
until not IsKeyLockOn("capslock")
end
end
这段代码的意思是反复按下键盘按钮"p“,然后反复向左移动鼠标,然后向右移动,直到LMB不再被按下。我所使用的方法是使用MoveMouseRelative左转,然后暂停10 10睡眠(10),然后使用MoveMouseRelative右转,然后重复这个循环。我注意到它从左向右移动太快,当我增加睡眠延迟时,它也增加了"P“被按压的延迟。因此,我认为我需要找到一种方法,使程序从左向右移动更慢,而不影响按下"P“的速度。
现在是第二次尝试Code#2
EnablePrimaryMouseButtonEvents(true)
function OnEvent(event, arg)
--OutputLogMessage("Event: "..event.." Arg: "..arg.."\n")
if IsKeyLockOn("capslock") then
repeat
if IsMouseButtonPressed(1) then
repeat
PressAndReleaseKey("p")
Sleep(10)
for i = 1, 20 do
MoveMouseRelative(10,0)
end
for i = 1,20 do
MoveMouseRelative(-10,0)
end
until not IsMouseButtonPressed(1)
end
until not IsKeyLockOn("capslock")
end
end
这段代码基本上是按照我想要的方式做的。问题是,当我长时间按住鼠标按钮时,当我释放鼠标按钮时,我的鼠标仍会从左向右移动一段时间。所以我需要一个方法来做它,这样当我释放我的鼠标按钮,它停止从左向右移动,无论发生什么。
发布于 2022-09-29 13:05:36
关于您之前关于使鼠标移动平稳的评论,
能否详细说明一下您的意思:重复移动一点点+在循环中稍微睡觉。
下面是一个如何使鼠标运动最流畅的例子。
首先,在OnEvent
之前定义以下函数
function SmoothMouseMovement(x_speed, y_speed, duration)
local last_x, last_y = 0, 0
local tm_start = GetRunningTime()
repeat
Sleep(5)
if not IsMouseButtonPressed(1) then break end
local tm = math.min(GetRunningTime() - tm_start, duration)
local x = math.floor(x_speed * tm)
local y = math.floor(y_speed * tm)
if x ~= last_x or y ~= last_y then
MoveMouseRelative(x - last_x, y - last_y)
last_x = x
last_y = y
end
until tm >= duration
end
其次,用以下代码替换旧循环for i = 1,20 do
:
local x_speed = 1.5 -- pixels per millisecond
local duration = 200 -- milliseconds
SmoothMouseMovement(x_speed, 0, duration)
local x_speed = -1.5 -- pixels per millisecond
local duration = 200 -- milliseconds
SmoothMouseMovement(x_speed, 0, duration)
https://stackoverflow.com/questions/73862616
复制相似问题