How can I mimic Visual Studio's “Ctrl-K, C” two-step macro behaviour using Autoit / Autohotkey?

谁都会走 提交于 2019-12-03 11:34:27

问题


I'm trying to set up AutoHotkey macros for some common tasks, and I want the hotkeys to mimic Visual Studio's "two-step shortcut" behaviour - i.e. pressing Ctrl-K will enable "macro mode"; within macro mode, pressing certain keys will run a macro and then disable 'macro mode', and any other key will just disable macro mode.

Example - when typing a filename, I want to be able to insert today's date by tapping Ctrl-K, then pressing D.

Does anyone have a good example of a stateful AutoHotkey script that behaves like this?


回答1:


This Autohotkey script, when you press ctrl+k, will wait for you to press a key and if you press d, it will input the current date.

^k::
Input Key, L1
FormatTime, Time, , yyyy-MM-dd
if Key = d
    Send %Time%
return



回答2:


A slight variation on the accepted answer - this is what I've ended up using. I'm capturing Ctrl+LWin (left Windows key) so it doesn't conflict with VS inbuilt Ctrl-K shortcuts.

; 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


来源:https://stackoverflow.com/questions/200587/how-can-i-mimic-visual-studios-ctrl-k-c-two-step-macro-behaviour-using-autoi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!