1 (изменено: Wescholm, 2018-05-11 03:50:14)

Тема: AHK: Активация долгим нажатием клавиши

Доброй ночи! Подскажите, пожалуйста, как сделать запуск скрипта долгим нажатием определенной клавиши.

2

Re: AHK: Активация долгим нажатием клавиши

MButton::
Sleep, 500 ; пауза
If GetKeyState("MButton","P") = 0 ; отслеживаем состояние - если кнопка отпущена
  MouseClick, M ; выполняем обычное действие
else ; в противном случае, то есть если после паузы клавиша в нажатом состоянии
  MsgBox, клавиша %A_ThisHotkey% нажата по истечении заданного периода ; само действие
Return

AHK: Многодельность клавиши

3

Re: AHK: Активация долгим нажатием клавиши

red2881
Поставил данный код на зажатие клавиши "vk31", но при обычном нажатие клавиши "vk31", она не срабатывает.


Пробовал делать через Send, {vk31}
А так же через:
Send, {vk31 Down}
Sleep, 20
Send, {vk31 Up}

4 (изменено: shahlik002, 2018-05-12 11:48:11)

Re: AHK: Активация долгим нажатием клавиши

Нужно обратить внимание что скрипт должен реагировать на отжатие и действовать сразу, если оно произошло.
Можно вот так:

1::
if KW(A_ThisHotkey,"U","200")=0	; Ждать Отжатия последней активированной горячей клавиши 200 миллисекунд. 
	Return						; При отжатии ничего не делать
a++
ToolTip, % a
Return

; 	KW:
; Key - нужная нам кнопка
; State - ожидаемое положение кнопки (U - отжата, D - нажата)
; Delay - количество миллисекунд, которое будем ждать
;
; Если дождались		- вернет 1
; Если не дождались		- вернет 0


KW(Key,State,Delay) {
KeyWait, % key, % "T" Delay/1000 " " State
Return ErrorLevel
}

Esc::ExitApp