Подтвердить что ты не робот

Ключ AutoHotKey SEQUENCE, а не только клавиша с одним ключом

Я не глупый... на самом деле. Как вы сопоставляете ключ SEQUENCE (т.е.: Ctrl + Q, F) в AutoHotKey.

У меня Ctrl + Q вниз:

^q::

У меня даже есть F:

f::

Примеры в файлах справки даже показывают, как делать два нажатия клавиши подряд:

Numpad0 & Numpad1::

Но это просто не сработает с:

^q & f ::

Или любой из них:

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

Как выполнить ключ SEQUENCE, запускающий что-то, когда один из этих ключей является клавишей Ctrl? Вместо этого я изучил использование HOTSTRING, но не смог понять, как включить символ Ctrl в этом контексте!

4b9b3361

Ответ 1

Хорошо; Ответ выглядит следующим образом:

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

Ответ 2

В случае, если кто-то ищет подобную вещь, но на самом деле хочет Ctrl Q + Ctrl F и только если 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 для моих объяснений.

Ответ 3

Или вы можете сделать это следующим образом:

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

Я думаю, что это немного читаемо, чем использование Input Key, L1, как указано выше.

Ответ 4

Это улавливает CTRL + F. Если в этот момент удерживается Q, ваш код срабатывает.

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