Upon each click, you have to check the elapsed time since the last click and decide how to handle the information:
dcTime := 50
LButton::
if(A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < dcTime) {
Send, {MButton}
} else {
Send, {LButton}
}
return
Of course, you'll have to adjust the timeout according to your mouse button's speed. I also recommend calling SetBatchLines, -1
as it will minimize inaccuracies in time measurement.