0

ダブルクリックとして機能する特別なマウスボタンがあります。特別なキーはなく、2 つの 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)とは何か、そして手動で左クリックを2回押すことによるものを決定するための鍵です。後者ではなく、前者のシナリオを再マップしたい (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 に答える