AutoHotKey键SEQUENCE,而不仅仅是单键热键

时间:2010-01-19 19:07:13

标签: keyboard-shortcuts autohotkey

我不是傻瓜......真的。 如何在AutoHotKey中映射关键SEQUENCE(即: Ctrl + Q F )。

我已经 Ctrl + Q 了:

^q::

我甚至得到了 F

f::

帮助文件中的示例甚至显示了如何连续执行两次击键:

Numpad0 & Numpad1::

但它不适用于:

^q & f ::

或者其中任何一个:

LCtrl & q & f::
^q & ^f::
^q^f::
^qf::

当其中一个键是 Ctrl 键时,如何完成按键SEQUENCE触发某些操作?我调查了使用HOTSTRING,但在这种情况下无法解决如何包含 Ctrl 字符的问题!

4 个答案:

答案 0 :(得分:28)

好的;答案似乎是:

^q::
Input Key, L1
if Key=f
...some code here...
return

答案 1 :(得分:5)

如果有人正在寻找类似的东西,但实际上想要 Ctrl Q + Ctrl F 和< em> only 如果 Ctrl 始终保持(因此,对某些人来说,这可能看起来像 Ctrl Q + F ),接下来是如何做到的:

$Ctrl::Send {Ctrl Down}
$Ctrl UP::
    ChordIsBroken := True
    Send {Ctrl Up}
    Return
^q::
    ChordIsBroken := False
    Input, OutputVar, L1 M
    If (!ChordIsBroken && Asc(OutputVar) = 6)
    {
        MsgBox "Hello, World!"
    }
    Else
    {
        SendInput %OutputVar%
    }
    Return

有关我的解释,请参阅https://superuser.com/a/725303/145431

答案 2 :(得分:3)

或者你可以这样做:

q & f::
    if GetKeyState("Control") {
        ; Do something
        return
    }
    return

我认为这比使用输入键L1更具可读性,如上所述。

答案 3 :(得分:1)

这会捕获 CTRL + F 。如果此时 Q 被按下,则会触发您的代码。

^f::
    If GetKeyState("q", "p") {
        MsgBox test
    } Else {
        Send ^f
    }
return