Ativando um comando após vários pressionamentos sequenciais de teclas?

0

A ideia principal:

  1. Primeiro pressionamento de tecla ativa todo o script, deixe-o ser Enter por exemplo
  2. Se dentro de 5 segundos após a ativação, as teclas específicas forem pressionadas e liberadas em ordem, a parte principal do script será executada. Se qualquer outra tecla for pressionada durante esse tempo, o script sai

Eu sei como definir um temporizador e como verificar se uma tecla é pressionada ou não no momento atual (com GetKeyState), mas não tenho idéia de como verificar se uma tecla foi pressionada (e talvez liberada) durante o intervalo de tempo específico, até que o tempo se esgote para ser específico.

    
por Shajirr 03.11.2016 / 19:12

1 resposta

0

Você pode usar uma tecla de atalho seguida de hotstrings para capturar a sequência de teclas.

Isso não sai do período de 5 segundos mais cedo se outras teclas forem pressionadas, mas nada aconteceria também. Se você quisesse sair imediatamente ao detectar certas teclas, você poderia entrar em um loop comparando A_LastKey com as teclas 'ok' conhecidas para pressionar e sair mais cedo se algo for detectado.

#Persistent    

hotstringsDisabled:=True

Return

; hotkey definition to enable hotstrings
Enter::
    hotstringsDisabled:=False
    SetTimer, DisableHotstrings, -5000  ; run once after 5 seconds
Return

DisableHotstrings:
    hotstringsDisabled:=True
Return

; hotstring definitions... 
; make as many as you like using this form...
; b0=don't backspace, c=case sensitive
:*b0c:custom::
    If hotstringsDisabled
        Return

    ;your code to do something useful goes here...
    Msgbox % "A_ThisHotkey=" A_ThisHotkey "'n" "A_LastKey=" A_LastKey
Return

A tecla de atalho inicial também pode ser combinada (depende de como você quer fazer isso) ...

Enter::
    hotstringsDisabled:=False
    Sleep 5000
    hotstringsDisabled:=True
Return

A instrução Sleep 5000 é o que você substituiria por um loop se quisesse sair antes de algumas outras chaves ou algo assim.

    
por 07.11.2016 / 00:36