34

我不傻……真的。你如何在 AutoHotKey 中映射一个键序列(即: Ctrl+ Q, )。F

我有Ctrl+Q下来:

^q::

我什至有F

f::

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

Numpad0 & Numpad1::

但它不适用于:

^q & f ::

或其中任何一个:

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

当其中一个键是键时,我如何完成触发某些东西的键序列Ctrl?我考虑使用 HOTSTRING 代替,但无法弄清楚如何Ctrl在这种情况下包含角色!

4

4 回答 4

30

好的; 答案似乎是:

^q::
Input Key, L1
if Key=f
...some code here...
return
于 2010-01-19T19:30:19.063 回答
5

如果有人正在寻找类似的东西,但实际上想要CtrlQ+CtrlF并且只有Ctrl整个过程中都被持有(所以,对某些人来说,这可能看起来像CtrlQ+ 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

于 2014-03-06T04:19:18.780 回答
2

或者你可以这样做:

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

我认为这比使用上面的输入键 L1 更具可读性。

于 2013-03-13T08:33:15.917 回答
1

这抓住了CTRL+ F。如果Q在那一刻被按住,你的代码就会触发。

^f::
    If GetKeyState("q", "p") {
        MsgBox test
    } Else {
        Send ^f
    }
return
于 2013-11-15T21:16:20.787 回答