AHK – 如何将不同的命令分组为热键?

AHK – 如何将不同的命令分组为热键?

在 Photoshop 中,我的热键“g”有 3 个操作:

  1. 如果我按住“space + g”,放大并启用工具(缩放);

  2. 如果点击“g”,启用工具(涂抹);

和...

  1. 如果我点击“g”2次,则打开菜单(Ctrl+Alt+F12)。如果点击4次,则打开另一个菜单(Shift+Alt+F1)。

注意:需要“~g”才能工作。

我的问题:

如何将代码 1 和 2 与第三个代码组合在一起?

这样第三个代码就不起作用了:

; 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

答案1

由于我是 AHK 新手,所以我不知道下面代码的语法是否正确,但至少它可以工作。

适用于 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
    }
}

相关内容