0

我有一个特殊的鼠标按钮,可用作双击。它没有任何特殊的键,它只是发送两个 LButton 信号。

我在脚本中引入了#InstallMouseHook,以便能够跟踪鼠标点击。多次按下双按钮后我得到了这个:

VK  SC  Type    Up/Dn   Elapsed Key     
---------------------------------------------------------------------------------------     
04  000     d   2.78    MButton         
04  000     u   0.19    MButton         
01  000     d   0.65    LButton         <- Manual DC     
01  000     u   0.17    LButton         
01  000     d   0.11    LButton         
01  000     u   0.14    LButton         
04  000     d   0.75    MButton         
04  000     u   0.19    MButton         
01  000     d   0.45    LButton         <- Special button DC            
01  000     u   0.00    LButton         
01  000     d   0.00    LButton         
01  000     u   0.00    LButton    

根据我的假设,经过的键是确定什么是 DC 鼠标按钮双击 (DC) 以及我手动按下左键两次的关键。我想重新映射前一个场景,而不是后者(DC 按钮:: 其他类似中键和我的手动双击左键保持不变)。到目前为止,似乎 DC 按钮的经过时间是 <2.0 和手动 DC >2.0。

我们的想法是有这样的东西(不是 AHK 语言):

loop 
 if (LButton == 1) //pressed
    {
    t=StartElapseTimer;
    if (t<2 && LButton == 1) //how to check it went down and up before down the 2nd time?
       LButton::MButton; //the remapping I want
    else // t>2
       Nothing //let me do a regular DC
    }
end

您能帮我了解如何启动计时器以及需要设置哪些环境变量吗?

谢谢。

4

1 回答 1

0

每次点击时,您必须检查自上次点击后经过的时间并决定如何处理信息:

dcTime := 50

LButton::
    if(A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < dcTime) {
        Send, {MButton}
    } else {
        Send, {LButton}
    }
return

当然,您必须根据鼠标按钮的速度调整超时。我还建议打电话SetBatchLines, -1,因为它可以最大限度地减少时间测量的不准确性。

于 2013-12-12T18:39:17.513 回答