KeyWait

키나 마우스/조이스틱 버튼이 눌리거나 떼어지기를 기다립니다.

KeyWait, KeyName [, Options]
선택

매개변수

KeyName

이것은 키보드로부터 문자 하나 또는 키 리스트로부터의 이름 중 하나가 될 수 있습니다. 마우스/조이스틱 버튼과 같은 경우, 조이스틱 속성은 버튼 지원합니다.

명시적인 가상 키 코드도 vkFF와 같이 역시 지정할 수 있습니다. 희귀한 경우이기는 하지만 키에 이름이 없거나 눌릴 때 보이지 않는 문자를 생산하는 경우에 유용합니다. 그의 가상 키 코드는 다음 키 리스트 페이지 아래에 있는 단계를 밟아 알아낼 수 있습니다 .

Options

이 매개변수가 비어 있으면, 명령어는 지정된 키나 마우스/조이스틱 버튼을 물리적으로 사용자가 떼기를 무한정 기다립니다. 그렇지만, 키보드 갈고리가 설치되어 있지 않고 KeyNameSend 명령어와 같은 수단으로 인위적으로 뗀 키보드 키이면, 그 키는 물리적으로 뗀 것처럼 보일 것입니다. 마우스 갈고리가 설치되어 있지 않을 때 마우스 버튼도 마찬가지입니다.

Options: 다음 기호로 구성되는 문자열 (순서대로, 선택적으로 사이에 스페이스 허용):

D: 키가 눌리기를 기다립니다.

L: 키의 논리적 상태를 점검합니다. 이는 OS와 활성 창이 믿고 있는 키의 상태입니다 (반드시 물리적 상태와 같은 것은 아닙니다). 이 옵션은 조이스틱 버튼에 대해서는 무시됩니다.

T: 시간제한 (예, T3). 시한 종료를 선언하기 전에 기다릴 초의 개수. 시한이 지나면 ErrorLevel에 1이 설정됩니다. 키나 버튼이 지정된 상태를 이루면, 이 명령어는 시한이 지나기를 기다리지 않습니다. 대신에, 즉시 ErrorLevel에 0을 설정하고 스크립트는 실행을 계속합니다.

시간제한 값은 2.5와 같이 부동 소수점 수가 될 수 있습니다. 그러나 0x03와 같은 십육진 수는 안 됩니다.

ErrorLevel

명령어가 시한제한에 걸리면 ErrorLevel에 1이 설정되고 그렇지 않으면 0이 설정됩니다.

논평

키나 마우스 버튼의 물리적 상태는 보통 논리적 상태와 같습니다. 단, 키보드/마우스 갈고리가 설치되어 있지 않아야 합니다. 설치가 되어 있으면, 사용자가 물리적으로 키를 누르고 있는지 아닌지 정확하게 반영합니다. 여러분의 스크립트가 갈고리를 사용하고 있는지 알고 싶으면 KeyHistory 명령어 또는 메뉴를 사용할 수 있습니다. 두 갈고리를 모두 강제로 설치하려면 스크립트에 #InstallKeybdHook 지시어와 #InstallMouseHook 지시어를 추가하면 됩니다.

이 명령어가 대기 상태에 있는 동안, 새 쓰레드핫키, 맞춤 메뉴 항목, 또는 타이머를 통하여 기동할 수 있습니다.

두 개 이상의 키가 떼어지기를 기다리려면, KeyWait를 연속적으로 사용하십시오. 예를 들어:

KeyWait Control  ; Control과 Alt가 모두 떼어지기를 기다립니다.
KeyWait Alt
선택 | 내려받기

키 집합 중의 한 키가 떼어지기를 기다리려면, Input 명령어의 예제 섹션을 참조하십시오.

관련 항목

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

예제

; 예제 #1: 기본 사용법:
KeyWait, a  ; A 키가 떼어지기를 기다립니다.
KeyWait, LButton, D  ; 왼쪽 마우스 버튼이 눌리기를 기다립니다.
KeyWait, Joy1, D T3  ; 첫 번째 조이스틱 버튼이 눌리기를 3 초까지 기다립니다.
KeyWait, LAlt, L  ; 왼쪽 Alt 키가 논리적으로 떼어지기를 기다립니다.
선택 | 내려받기

 

; 예제 #2: 간단한 핫키:
~Capslock::
KeyWait, Capslock  ; 사용자가 물리적으로 떼기를 기다립니다.
MsgBox Capslock 키를 누르고 뗐습니다.
return
선택 | 내려받기

 

; 예제 #3: 키 또는 마우스 버튼 리맵핑하기
; (이것은 오직 시연용입니다. 내장된 리맵핑 특징을 사용하는 것이 더 쉽습니다):
; 왼버튼이 눌려 있는 동안 NumpadAdd를 눌렀습니다.
; 그 효과로 NumpadAdd가 왼 버튼으로 변신합니다.
*NumpadAdd::
MouseClick, left,,, 1, 0, D  ; 왼버튼을 누르고 있습니다.
KeyWait, NumpadAdd  ; 키가 떼어지기를 기다립니다.
MouseClick, left,,, 1, 0, U  ; 마우스 버튼을 뗍니다.
return
선택 | 내려받기

 

; 예제 #4: 키가 두 번 눌릴 때를 탐지합니다 (더블 클릭과 유사).
; KeyWait는 키보드의 자동 반복 특징 때문에 RControl 키를 누른 채 또다른 키를 변경할 때
; 원하지 않는 이중-눌림이 되지 않도록 방지하는 데 사용됩니다. 
; 핫키의 쓰레드를 계속 실행되도록 유지해 자동-반복을 막고,
; #MaxThreadsPerHotkey이 기본 설정으로 1을 유지하도록 함으로써 이 기능을 구현합니다.
; 주의:  SetTimer 페이지 하단에 1, 2, 3-클릭을 구별하는
; 더 정교한 스크립트가 있습니다.

~RControl::
if (A_PriorHotkey <> "~RControl" or A_TimeSincePriorHotkey > 400)
{
    ; 눌림 사이에 너무 시간이 많습니다. 그래서 이것은 더블 클릭이 아닙니다.
    KeyWait, RControl
    return
}
MsgBox 오른쪽 콘트롤 키를 두 번 눌렀습니다.
return
선택 | 내려받기