1 votos

AHK – el modo de agrupar los diferentes comandos a un atajo de teclado?

En Photoshop tengo 3 acciones para mi tecla "g":

  1. Si tengo "espacio + g", zoom y activar la herramienta (zoom);

  2. Si presiona "g", habilitar la herramienta (mancha);

Y...

  1. Si me toca "g" 2 veces, abra el menú de teclas (Ctrl+Alt+F12). Si toca 4 veces, se abre otro menú (Shift+Alt+F1).

NOTA: Necesita ser "~g" para trabajar.

MI PREGUNTA:

Cómo el código de grupo 1 y 2 en conjunto con la tercera?

De esta manera el tercer código no funciona:

; CODES 1 AND 2 - WORKS:

g::
if !GetKeyState("Space","U")
{
    Send, g ; CODE 2
    return
} else {
    Send, ^{Numpad0} ; CODE 1
    Sleep 10
    Send, z
    return
}


; CODES 3 - WORKS:

~g::
    if (A_PriorHotkey <> "~g" or A_TimeSincePriorHotkey > 400)
    {
        KeyWait, g
        return
    }
    Send, % ["^!{F12}","+!{F1}"][(count >= 2 || !count) ? count := 1 : ++count]
return

; --------------------------------------------------
; Trying to put together...
; CODES 1 AND 2 + CODE 3 - (THIRD DON'T WORKS):

g::
    if !GetKeyState("Space","U")
    {
        Send, g
        return
    } else {
        Send, ^{Numpad0}
        Sleep 10
        Send, z
        return
    }
    if (A_PriorHotkey <> "~g" or A_TimeSincePriorHotkey > 400)
    {
        KeyWait, g
        return
    }
    Send, % ["^!{F12}","+!{F1}"][(count >= 2 || !count) ? count := 1 : ++count]
return

0voto

user3419297 Puntos 741

Probado en Word (no tengo Photoshop):

#If WinActive("ahk_exe WINWORD.EXE") 

    $g::
        If GetKeyState("space","p") ;"space + g"
        {
            space_g := true
            Send, z
        }
        else
        If (A_PriorHotKey = "~$g Up" AND A_TimeSincePriorHotkey < 300) ;tap "g" 2 times
        {
            double_g := true
            KeyWait, g, L
                Send, a 
        }
    return

    ~$g Up::
        Sleep, 300
        If (!(double_g) and !(space_g))
            Send, g
        double_g := false
        space_g := false
    return

#If

                                    .

0voto

rdllngr Puntos 6

No sé si la sintaxis de código a continuación es correcta, ya que soy novato en AHK, pero al menos funciona.

Que funciona en Photoshop CC2015:

~g::
{
    Sleep, 150
    GetKeyState, state, g, U
    IfEqual, state, U
    {
        if (A_PriorHotkey <> "~g" or A_TimeSincePriorHotkey > 400)
        {
            KeyWait, g
            return
        }
        Send, % ["^!{F12}","+!{F1}"][(count >= 2 || !count) ? count := 1 : ++count]
        return
    }
    if !GetKeyState("Space","U")
    {
        Send, g
        return
    }
    else
    {
        Send, ^{Numpad0}
        Sleep 10
        Send, z
        return
    }
}

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X