Как переназначить кнопку двойного щелчка в autohotkey
У меня есть специальная кнопка мыши, которая служит двойным щелчком мыши. У него нет специального ключа, он просто посылает два сигнала 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: что-то еще, например, средний щелчок и мой двойной щелчок левой кнопкой мыши, чтобы остаться прежним). До сих пор кажется, что истекшее время для кнопки постоянного тока составляет <2,0, а для постоянного тока>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
Не могли бы вы помочь мне с тем, как запустить таймер и какие переменные среды должны быть установлены?
Благодарю.
1 ответ
При каждом нажатии вы должны проверить время, прошедшее с момента последнего нажатия, и решить, как обращаться с информацией:
dcTime := 50
LButton::
if(A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey < dcTime) {
Send, {MButton}
} else {
Send, {LButton}
}
return
Конечно, вам придется настроить время ожидания в соответствии со скоростью вашей кнопки мыши. Я также рекомендую звонить SetBatchLines, -1
так как это минимизирует неточности в измерении времени.