Autohotkey - tecla de atalho 1 faz algo, sequência de teclas 11 faz outra coisa

1

Im muito novo em AHK, eu gostaria Autohotkey para sempre que eu pressionar o atalho "1" no tipo MS Word HELLOW, mas ao mesmo tempo no mesmo aplicativo (MS Word) eu quero a combinação de teclas "11" ( tecla 1 pressionada duas vezes muito rapidamente) para digitar BYE, isso é possível? vai AHK tipo "1HELLOW" quando eu digito "1", vai digitar "11BYE" quando eu digitar "11"? É possível fazer o mesmo script, mas com F1 em vez disso? Quero dizer F1, e a seqüência de teclas F1F1 (F1 pressionada duas vezes muito rapidamente)

Até agora eu tentei isso

~1::
;400 is the maximum allowed delay (in milliseconds) between presses.
if (A_PriorHotKey = "~1" AND A_TimeSincePriorHotkey < 400)
{
   Msgbox,Double press detected.
}
else if (A_PriorHotKey = "~1" AND A_TimeSincePriorHotkey > 400)
{
    Msgbox,Single press detected.
}

Sleep 0
KeyWait 1
return

Mas apenas funciona na primeira vez que pressiono a sequência de teclas 11 (1 pressionada duas vezes rapidamente), então ela sempre reconhecerá somente a tecla 1, por que ???

~1::
if (A_PriorHotkey <> "~1" or A_TimeSincePriorHotkey > 400)
{
    ; Too much time between presses, so this isn't a double-press.
    KeyWait, 1
    return
}
MsgBox You double-pressed the 1 key.
return

isto não ajuda a obter as duas teclas de atalho, (1 e 11) também.

Obrigado Advanced.

    
por litu16 21.11.2016 / 01:31

1 resposta

1

Funciona melhor usando o SetTimer:

    ; The following hotkeys work only if MS-WORD is the active window:
#If WinActive("ahk_exe WINWORD.EXE")    ; (1)

    1::
    if 1_presses > 0
    {
        1_presses += 1
        SetTimer Key1, 300
        return
    }
    1_presses = 1
    SetTimer Key1, 300
    return

    Key1:
    SetTimer Key1, off
    if 1_presses = 2
      SendInput, BYE
    else
      SendInput, HELLOW
    1_presses = 0
    return

    F2:: MsgBox, You pressed F2 in MS-Word


    ; The following hotkeys work only if NOTEPAD is the active window:
#If WinActive("ahk_exe NOTEPAD.EXE") 

    1:: Send 2

    F2:: MsgBox, You pressed F2 in NOTEPAD


#If ; turn off context sensitivity (= end of context-sensitive hotkeys)


; The following hotkeys work only if MS-WORD or NOTEPAD is NOT the active window (because they are already defined in those programs):

1:: Send 3

F2:: MsgBox, You pressed F2 while  MS-WORD or NOTEPAD is NOT the active window


; The following hotkeys work in all windows (incl. MS-WORD and NOTEPAD because they are NOT defined in those programs)

F3:: MsgBox, You pressed F3

Esc:: ExitApp

link (Exemplo # 3)

(1) Assim como as diretivas #IfWin , #If cria hotkeys e hotstrings sensíveis ao contexto e é posicional: afeta todas as hotkeys e hotstrings fisicamente abaixo dele no script.

    
por 21.11.2016 / 08:47