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

时间:2017-08-14 19:29:37

标签: autohotkey

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

目前我得到的是:

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

    Send, {M down}

}
Send, {M up}

Return

我想弄清楚当我想要垃圾信件M时如何删除点击操作。

1 个答案:

答案 0 :(得分:1)

以下应该做你想做的事:

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。这可能是可以解决的,所以告诉我你是否需要它。