autohotkey 如何重新映射鼠标左键单击保持操作

autohotkey how to remap mouse left click hold action

我想在按住鼠标左键时更改鼠标输入。 通常的左键单击操作必须保留。让左键单击按原样运行,但如果您单击并按住,让它执行类似于按住键盘按钮 P(或任何其他键盘按钮)的操作。

目前我得到的是这样的:

~LButton:: 
sleep 100
While (Getkeystate("LButton","P"))
{   

    Send, {M down}

}
Send, {M up}

Return

我想弄清楚当我只想发送垃圾邮件 M 时如何删除点击操作。

下面应该做你想做的:

threshold := 100
LButton::
    CoordMode, Mouse, Screen ; needed to prevent some issues when clicking changes focus
    MouseGetPos, mXclick, mYclick ; save mouse position before sleep

    sleep % threshold

    ; mouse up, do normal click
    if (!GetKeyState("LButton", "P")) {
        MouseGetPos, mXcurr, mYcurr ; save mouse position before click
        Click %mXclick%, %mYclick%
        MouseMove, %mXcurr%, %mYCurr% ; restore mouse position
        return
    }

    while (GetKeyState("LButton", "P")) {
        Send {M down}
        Sleep 30
    }
    Send {M up}
return

您可以尝试使用 threshold,尝试不同的值,看看它是如何工作的。此外,可能不需要所有 MouseGetPosMouseMove,这取决于您想要发生什么。

目前 doubleClick 也会有一点问题,您需要比 threshold doubleClick 慢但足够快才能注册 doubleClick。这可能可以解决,如果您需要,请告诉我。