Как можно имитировать поведение двухступенчатого макроса в Visual Studio "Ctrl-K, C" с помощью Autoit / Autohotkey? - PullRequest
15 голосов
/ 14 октября 2008

Я пытаюсь настроить макросы AutoHotkey для некоторых распространенных задач, и я хочу, чтобы горячие клавиши имитировали поведение Visual Studio в двухэтапном режиме - то есть нажатие Ctrl - K включит «макрорежим»; в режиме макросъемки нажатие определенных клавиш запускает макрос, а затем отключает «режим макросъемки», а любая другая клавиша просто отключает режим макросъемки.

Пример - при вводе имени файла я хочу иметь возможность вставить сегодняшнюю дату, нажав Ctrl - K , затем нажав D .

У кого-нибудь есть хороший пример сценария AutoHotkey с отслеживанием состояния, который ведет себя так?

Ответы [ 2 ]

8 голосов
/ 14 октября 2008

Этот скрипт Autohotkey, когда вы нажимаете ctrl + k , будет ждать, пока вы нажмете клавишу, и если вы нажмете d , он введет текущая дата.

^k::
Input Key, L1
FormatTime, Time, , yyyy-MM-dd
if Key = d
    Send %Time%
return
5 голосов
/ 15 октября 2008

Небольшое отклонение от принятого ответа - это то, чем я в конечном итоге воспользовался. Я фиксирую Ctrl + LWin (левая клавиша Windows), чтобы он не конфликтовал со встроенными сочетаниями клавиш Ctrl-K VS.

; 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
...