Numpad 000 Key

이 예제 스크립트는 어떤 키보드에 나타나는 특수한 000 키를 등호 키로 변신시킵니다. 행위를 바꾸려면 Send, = 줄을 여러분의 기호대로 변경하십시오.

이 스크립트 내려 받기  |  다른 샘플 스크립트  |  홈으로

#MaxThreadsPerHotkey 5  ; 이 핫키에 대하여 여러 쓰레드를 허용합니다.
$Numpad0::
#MaxThreadsPerHotkey 1
; 위에서: $를 사용해 갈고리 사용을 강제합니다. 이렇게 하면 무한 회돌이를 방지합니다.
; 서브루틴 자체가 Numpad0를 전송하기 때문인데, 이 때문에
; 자기 자신을 호출하는 무한 재귀에 빠질 수 있습니다.
SetBatchLines, 100 ; 이 경우 약간 더 빨리 실행하도록 만듭니다.
DelayBetweenKeys = 30 ; 작동하지 않을 경우 이 값을 조절합니다.
if A_PriorHotkey = %A_ThisHotkey%
{
    if A_TimeSincePriorHotkey < %DelayBetweenKeys%
    {
        if Numpad0Count =
            Numpad0Count = 2 ; 즉, 앞에 것에다 이것을 더한 것입니다.
        else if Numpad0Count = 0
            Numpad0Count = 2
        else
        {
            ; 여기에 있으므로, Numpad0Count가 이전 호출에서
            ; 반드시 2로 설정되어 있어야 합니다.
            ; 즉, 이 번에 키가 세 번째 눌린 것이라는 뜻입니다
            ; 그러므로, 핫키 연속열이 촉발되어야 합니다:
            Numpad0Count = 0
            Send, = ; ******* 이것이 000 키에 대한 조치입니다
        }
        ; 위의 모든 경우에, 더 이상 조치 없이 돌아갑니다:
        CalledReentrantly = y
        return
    }
}
; 그렇지 않으면, 이 Numpad0 이벤트는 일련의 연속에서 첫 번째이거나
; 아니면 어쩌다가 첫 번째 이벤트 다음에 너무 오래 걸린 것입니다.
; (예, 사용자가 Numpad0 키를 계속 눌러서 자동 반복을 하는 경우가 그럴텐데, 
; 이것을 허용하고 싶은 것입니다).  그러므로, 짧은 지연 시간 후에
; -- 그 사이에 또다른 Numpad0 핫키 이벤트가 재진입하여
;  이 서브루틴을 호출할 수도 있지만 -- 
; 재진입 호출이 일어나지만 않는다면 그 키를 계속 보냅니다:
Numpad0Count = 0
CalledReentrantly = n
; 이렇게 자는 동안, 이 서브루틴은 재진입 호출될 수 있습니다
; (즉, 동시 "쓰레드"로서 현재 호출 상태에 있는 쓰레드와
; 병행적으로 실행됩니다):
Sleep, %DelayBetweenKeys%
if CalledReentrantly = y ; 또다른 "쓰레드"가 값을 변경했습니다.
{
    ; 재진입 호출되었으므로, 이 키 이벤트는 연속열에서
    ; 첫 번째 이벤트였습니다. 그래서 억눌러야 합니다 (시스템으로부터 숨겨야 합니다):
    CalledReentrantly = n
    return
}
; 그렇지 않으면, 연속열에 포함되지 않습니다. 그래서 그 키를 보통처럼 전송합니다.
; 다른 말로, *진짜* Numpad0 키가 눌렸습니다. 그래서 정상처럼 효과가 있기를 원합니다.:
Send, {Numpad0}
return
선택 | 내려받기