Autohotkey 自动热键如何重新映射鼠标左键单击保持操作

Autohotkey 自动热键如何重新映射鼠标左键单击保持操作,autohotkey,Autohotkey,当我点击左键并按住鼠标时,我想更改鼠标的输入。 通常的左键单击操作必须保留。让左键单击按原样操作,但如果单击并按住,则让它执行类似按住键盘按钮P(或任何其他键盘按钮)的操作 目前我得到的是: ~LButton:: sleep 100 While (Getkeystate("LButton","P")) { Send, {M down} } Send, {M up} Return 当我只想发送垃圾邮件给M时,我正在试图找出如何删除单击操作。以下操作应满足您的要求: thre

当我点击左键并按住鼠标时,我想更改鼠标的输入。 通常的左键单击操作必须保留。让左键单击按原样操作,但如果单击并按住,则让它执行类似按住键盘按钮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
您可以使用
阈值
,尝试不同的值,看看它是如何工作的。此外,可能不需要所有的
MouseGetPos
MouseMove
,这取决于您希望发生什么


目前双击也会有一些问题,您需要双击速度低于
阈值
,但速度足够快,以注册双击。这可能可以解决,所以请告诉我您是否需要它。

您是否知道您的请求会禁用鼠标拖放/移动或高亮度文本等功能。这是你考虑过的吗?是的,我知道。我只需要在玩游戏时运行这个脚本。用我到目前为止得到的更新了问题。Oleg谢谢你的代码。我试图完成的是在游戏中拖动函数。可以将拖动指定给键盘上的任何键。我指定拖动字母M。您的代码非常有用。这让我明白了门槛是非常重要的,要把它设置得完美几乎是不可能的。单击本身会有延迟。@IamMashed np,如果您希望一次单击完成两件不同的事情,那么是的,解决方案只能基于时间。另外,看起来你可能有一个问题,如果是这样的话,你也应该问另一个关于X的问题,也许有人会为你想出一个解决方案。