Como fazer o autohotkey ligar vários comandos de envio com apenas uma chave?

2

Por exemplo, quando pressiono # 1, ele envia hey

#1::
send hey

Quando eu pressionar #1 novamente dentro de 900 milissegundos, eu quero enviar hi e assim por diante.

Então, o que eu quero alcançar é ligar vários comandos pressionando o mesmo botão dentro de um determinado período de tempo.

    
por Mikey 14.03.2012 / 01:09

2 respostas

1

Para encadear as teclas pressionadas juntas como N key presses per X milliseconds , você pode usar a seguinte estrutura:

key::
    x = ;milliseconds

    if n > 0
    {
        n += 1
        return
    }

    n = 1
    SetTimer, Chain, %x%
    return

    Chain:
        SetTimer, Chain, off

        if n = 1
        {
            ;if key was pressed 1x
        }
        else if n = 2
        {
            ;if key was pressed 2x
        }
        else if n > 2
        {
            ;if key was pressed 3x or more
        }

    n = 0
    return

Então, com base no seu exemplo, temos:

#1::
    x = 900

    if n > 0
    {
        n += 1
        return
    }

    n = 1
    SetTimer, Chain, %x%
    return

    Chain:
        SetTimer, Chain, off

        if n = 1
        {
            Send, hey
        }
        else if n = 2
        {
            Send, hi
        }

    n = 0
    return
    
por 14.03.2012 / 02:40
0

Simples, basta usar o comando Sleep e passar milissegundos para ele.

#1::
Send hey
Sleep, 900 ; 1 second
Send hi
return

Para sua última frase, use uma variável global e uma expressão if. Então, ao invés de "Send hey" você teria um if onde você selecionaria qual string você enviaria. Então você configura uma variável global para 1 após a qual você dorme, depois de dormir você ajusta de volta para 0 ...

Veja também: Se , Hotkeys , Sono e Variáveis

    
por 14.03.2012 / 01:15

Tags