Autohotkey, 키가 접두어로 사용될 때 키 릴리스를 감지하는 방법


1

나는 아래의 스크립트로 간결한 질문을 가지고있다.

global Eme_Fn_idle := true

F1 UP:: 
    MsgBox, F1_up ; ★I wish to see this after pressing and releaseing F1+F9
    Eme_Fn_idle = true
return

F1 & F9::
    if (Eme_Fn_idle) {
        Eme_Fn_idle = false
        Eme_ClickOnDocTab(0, 0, 18)
    }
    else {
        Send ^!. ; switch to Right Document
    }
return

나는 오직 볼 수있다. F1_up 내가 누를 때 F1 혼자. 하지만, 내가 F1 키를 누르고 F9 키를 누른 다음 F9 키를 놓고 F1 키를 놓으십시오 , 난 볼수 없어 F1_up . 그것을 어떻게 보는가?

Autohotkey 1.1.13.1

답변:


0

나는이 행동을 이해하지 못한다. 분명히 F1 UP는 키 히스토리에 표시된대로 프로그램에 의해 차단됩니다 (아래 두 번째 행부터 마지막 ​​행까지 억제 또는 차단됨을의 미합니다).

h=Hook Hotkey, s=Suppressed (blocked)

70  03B s   d   0.89    F1              temp.ahk
70  03B h   u   0.17    F1              
0D  01C     d   0.31    Enter           temp.ahk
0D  01C     u   0.17    Enter           temp.ahk
70  03B s   d   1.36    F1              
78  043 h   d   0.17    F9              
78  043 s   u   0.16    F9              
70  03B s   u   0.45    F1              
26  148     d   0.95    Up 

당신은 아마도 F1 & F9 UP:: F1 또는 F9 중 하나의 OR 조건을 잡아서 4 스트로크 프레스 (F1 Down, F9 Down, F9 Up, F1 Up)에서 F1 Up이 아닌 F9 Up에서 발사 할 것입니다.

한 가지 가능한 솔루션은 키의 상태를 감지하고 독립적으로 코드를 호출하는 자체 루틴을 만드는 것입니다. 아마도 첫 번째 문제와 관련이 있지만 GetKeyState는 실제 코드를 추가하면 작동하지 않는 것 같습니다. F1:: 전화 또는 F1 & F9:: 호출하므로이 독립 실행 형을 테스트하여 다른 것으로 통합하기 전에 제대로 작동하는지 확인하십시오.

waitingForF1Up := false
CheckF1Up:
    Loop
    {
        F1 := GetKeyState("F1", "P")
        F9 := GetKeyState("F9", "P")

        tooltip % F1 ", " F9

        if F1 and F9 and not waitingForF1Up
        {
            SetTimer, F1andF9, -1
            waitingForF1up := True
        }
        else if not F1 and waitingForF1up
        {
            SetTimer, F1up, -1
            waitingForF1up := False
        }

        sleep 10

    }

return

F1up:
    tooltip F1 up executed
    sleep 1000
    tooltip
return

F1andF9:
    tooltip F1 and F9 executed
    sleep 1000
    tooltip
return
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.