Клавиша AutoHotKey SEQUENCE, а не просто клавиша быстрого доступа - PullRequest
32 голосов
/ 19 января 2010

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

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

^q::

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

f::

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

Numpad0 & Numpad1::

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

^q & f ::

или любым из них:

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

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

Ответы [ 4 ]

29 голосов
/ 19 января 2010

Хорошо;Ответ, кажется,:

^q::
Input Key, L1
if Key=f
...some code here...
return
5 голосов
/ 06 марта 2014

В случае, если кто-то ищет похожую вещь, но на самом деле хочет 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 голосов
/ 13 марта 2013

Или вы можете сделать это так:

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

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

1 голос
/ 16 ноября 2013

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

^f::
    If GetKeyState("q", "p") {
        MsgBox test
    } Else {
        Send ^f
    }
return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...