AutoHotKey(오토핫키) 설명서 KeyWait

Posted by 발전소장
2014. 8. 14. 13:36 AutoHotKey/Commands

KeyWait

키보드나 마우스, 죠이스틱의 버튼이 밀린다/떼어 놓아질 때까지 대기

KeyWait, KeyName [, Options]

Parameters

인수명설명
KeyName 문자 키의 문자나키 일람에 있는 키명.
죠이스틱의Joy1...Joy32이외의 요소는 사용 할 수 없다.
Options
이하의 것을 반각 스페이스 단락으로 지정.
D
눌러 내릴 수 있는 것을 기다린다(통상은 떼어 놓아지는 것을 기다린다)
L
강제적으로 논리적 판정을 사용
Tn
n에 대기하는 최대초수를 지정(례:T3).소수도 지정 가능.

ErrorLevel

T옵션으로 지정한 초수가 경과했을 경우 「1」, 그 이외는 「0」

Remarks

Options하지만 아무것도 지정되지 않았던 경우, 지정한 키가 떼어 놓아질 때까지 계속 쭉 대기한다.

WindowsNT계로 키보드/마우스 훅이 사용되고 있는 경우, 물리적인 키/버튼 상태(유저가 실제로 키/버튼을 누르고 있을까)에 의해서 판정된다.
#InstallKeybdHook(이)나#InstallMouseHook지령으로, 강제적으로 훅을 유효하게 하는 것이 가능.

상기의 조건에 들어맞지 않는 경우, 논리적인 상태로 판정된다.
이 경우,AutoHotkey의Send커멘드와 같은 프로그램에 의해서 생성된 조작에도 반응해 버린다.

대기중은 hot key나 타이머등에서 기동되었다스렛드하지만 끼어들 수 있다.

복수의 키가 지정 상태가 되는 것을 기다리게 한 싶은 경우는, 복수의KeyWait(을)를 연속해 실행하면 좋다

KeyWait,Control
KeyWait,Alt

복수의 키 중 어떤 것인가가 밀리는 것을 기다리고 싶은 경우는,Input커멘드를 사용한다

Related

Key List, GetKeyState, Input, KeyHistory, #InstallKeybdHook, #InstallMouseHook, ClipWait, WinWait

Example(s)

KeyWait, a  ; Wait for the A key to be released.
KeyWait, LButton, D  ; Wait for the left mouse button to be pressed down.
KeyWait, Joy1, D T3  ; Wait up to 3 seconds for the first joystick button to be pressed down.
KeyWait, LAlt, L  ; Wait for the left-alt key to be logically released.
; Hotkey example:
~Capslock::
KeyWait, Capslock  ; Wait for user to physically release it.
MsgBox You pressed and released the Capslock key.
return
; Remapping example:
; The left mouse button is kept held down while NumpadAdd is down,
; which effectively transforms NumpadAdd into the left mouse button.
*NumpadAdd::
MouseClick, left,,, 1, 0, D  ; Hold down the left mouse button.
KeyWait, NumpadAdd   ; Wait for the key to be released.
MouseClick, left,,, 1, 0, U  ; Release the mouse button.
return

; This example shows how to detect when a key has been double-pressed (similar to double-click):
; It relies on #MaxThreadsPerHotkey being at its default setting of 1.
~RControl::
if A_PriorHotkey <> ~RControl
{
	KeyWait, RControl
	return
}
if A_TimeSincePriorHotkey > 400 ; Too much time between presses, so this isn't a double-press.
{
	KeyWait, RControl
	return
}
MsgBox You double-pressed the right control key.
return