1 (изменено: DarkBrain, 2020-03-18 15:46:04)

Тема: AHK: Click Middle удерживание нажатия

На тачпаде нужно сделать имитацию удерживания нажатой MButton по такой схеме:
Одиночный клик MButton работает в стандартном режиме.
Двойной клик MButton выполняет ее нажатие и удерживание.
Если MButton нажата, одиночный клик выполняет ее отпускание.

Готового решения не нашел.
Собрал всю инфу на форумах и по-быстрому сваял это:


DoubleClickTime := DllCall("GetDoubleClickTime")

MButton::
	Click Middle
	
	If (A_PriorHotkey = A_ThisHotkey && A_TimeSincePriorHotkey <= DoubleClickTime) {
		Click Down Middle
		}
		Else {
			Click Up Middle
			}
Return

Работает нормально, но написано криво, т.к. вникать в тонкости пока нет возможности из-за банального отсутствия времени.
Буду премного благодарен за готовое решение вопроса!

2

Re: AHK: Click Middle удерживание нажатия

Благодарю за помощь - сам разобрался!
Повесил на MButton 3 действия - одиночный клик, двойной клик и клик с недолгим удержанием (держит MButton в нажатом положении).
Если кому нужно, действия можно переназначить. Может пригодится и в игрухах.


MButton::
	If (GetKeyState("MButton", "P")) {
		Click Up Middle
		}
		
	; Двойной клик
	;If (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey <= 300) {
	If (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey <= DllCall("GetDoubleClickTime")) {
		KeyWait MButton, T0.5
		SendPlay {MButton Down}
		Return
		}
		
	; Удержание кнопки
	KeyWait MButton, T0.3
	If (ErrorLevel) {
		Click Down Middle
		Return
		}
		
	Click Middle
Return