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