Ответ 1
Хорошо; Ответ выглядит следующим образом:
^q::
Input Key, L1
if Key=f
...some code here...
return
Я не глупый... на самом деле. Как вы сопоставляете ключ 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 в этом контексте!
Хорошо; Ответ выглядит следующим образом:
^q::
Input Key, L1
if Key=f
...some code here...
return
В случае, если кто-то ищет подобную вещь, но на самом деле хочет 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 для моих объяснений.
Или вы можете сделать это следующим образом:
q & f::
if GetKeyState("Control") {
; Do something
return
}
return
Я думаю, что это немного читаемо, чем использование Input Key, L1, как указано выше.
Это улавливает CTRL + F. Если в этот момент удерживается Q, ваш код срабатывает.
^f::
If GetKeyState("q", "p") {
MsgBox test
} Else {
Send ^f
}
return