Как я могу имитировать двухэтапное поведение макроса Visual Studio “Ctrl-K, C”, используя Autoit / Autohotkey?
-
03-07-2019 - |
Вопрос
Я пытаюсь настроить Автоотключение макросы для некоторых распространенных задач, и я хочу, чтобы горячие клавиши имитировали поведение "двухэтапного ярлыка" Visual Studio, т.е.нажимающий Ctrl-K включит "режим макроса";в режиме макросъемки нажатие определенных клавиш приведет к запуску макроса, а затем отключит "режим макросъемки", а любая другая клавиша просто отключит режим макросъемки.
Пример - при вводе имени файла я хочу иметь возможность вставить сегодняшнюю дату, нажав Ctrl-K, затем нажав D.
У кого-нибудь есть хороший пример скрипта AutoHotkey с отслеживанием состояния, который ведет себя подобным образом?
Решение
Этот скрипт автозапуска, когда вы нажимаете ctrl+k, будет ждать, пока вы нажмете клавишу, и если вы нажмете d, он введет текущую дату.
^k::
Input Key, L1
FormatTime, Time, , yyyy-MM-dd
if Key = d
Send %Time%
return
Другие советы
Небольшое отклонение от принятого ответа - это то, что я в итоге использовал.Я фиксирую Ctrl + LWin (левую клавишу Windows), поэтому она не конфликтует со встроенными сочетаниями клавиш Ctrl-K.
; Capture Ctrl+Left Windows Key
^LWin::
; Show traytip including shortcut keys
TrayTip, Ctrl-Win pressed - waiting for second key..., t: current time`nd: current date, 1, 1
; Capture next string input (i.e. next key)
Input, Key, L1
; Call TrayTip with no arguments to remove currently-visible traytip
TrayTip
if Key = d
{
FormatTime, Date, , yyyyMMdd
SendInput %Date%
}
else if Key = t
{
FormatTime, Time, , hhmmss
SendInput %Time%
}
return