Как я могу имитировать двухэтапное поведение макроса Visual Studio “Ctrl-K, C”, используя Autoit / Autohotkey?

StackOverflow https://stackoverflow.com/questions/200587

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top