Autohotkey 如何在自动热键中分配连续热键?ctrl+;K后跟ctrl+;D

Autohotkey 如何在自动热键中分配连续热键?ctrl+;K后跟ctrl+;D,autohotkey,Autohotkey,我想在按下这些键序列时运行一个功能: ctrl+K后跟ctrl+D 在执行上述操作时,我们在整个过程中按住ctrl键。 我想将function1()分配给ctrl+K,但将function2()分配给以下组合:ctrl+K后跟ctrl+D 在自动热键中是否可以实现此操作 为了让事情更清楚,您可以考虑在VisualStudio中使用这种组合来格式化代码 ^k:: ctrl_k_var := true ; assign the Boolean value "true" or "1

我想在按下这些键序列时运行一个功能:

ctrl+K后跟ctrl+D

在执行上述操作时,我们在整个过程中按住ctrl键。 我想将function1()分配给ctrl+K,但将function2()分配给以下组合:ctrl+K后跟ctrl+D

在自动热键中是否可以实现此操作

为了让事情更清楚,您可以考虑在VisualStudio中使用这种组合来格式化代码

^k::
ctrl_k_var := true           ; assign the Boolean value "true" or "1" to this variable
SetTimer ctrl_k_action, -50  ; launch the "ctrl_k_action" subroutine automatically after this hotkey
return

^d::
; KeyWait, Ctrl             ; wait for Ctrl to be released
If (ctrl_k_var)             ; If the variable "ctrl_k_var" has the value "true" 
{
    ; SendRaw ctrl+K+D
    MsgBox, ctrl+K+D
    ctrl_k_var := false
}
else
{
    ; SendRaw ctrl+D
    MsgBox, ctrl+D
}
return


ctrl_k_action:
    KeyWait, Ctrl
    If (ctrl_k_var)
    {
        ; SendRaw ctrl+K
        MsgBox, ctrl+K
    }
    ctrl_k_var := false
return
编辑:
只要按住ctrl键,它就会在获得ctrl+K后等待ctrl+D。如果要在ctrl+K之后仅等待一秒钟,请尝试以下操作:

^k::
    ctrl_k_var := true
    sleep 1000  ; wait 1 second for ctrl+D
    if (ctrl_k_var)  ; If  you don't press ctrl+D within 1 second after ctrl+K
        MsgBox, ctrl+K
    ctrl_k_var := false
return

^d::
    if (ctrl_k_var)  ; If  you press ctrl+D within 1 second after ctrl+K
        MsgBox, ctrl+K+D
    else
        MsgBox, ctrl+D
    ctrl_k_var := false
return

编辑2:我编辑了第一个代码,使其仅在第一个函数(ctrl+K)中等待释放ctrl。

我编辑并调整了用户3419297提供的第二个代码,如下所示:

;~ If you want to wait for only one second after ctrl+K,

^k::
    ctrl_k_var := true
    sleep 1000  ; wait 1 second for ctrl+D
    if (ctrl_k_var)  ; If  you don't press ctrl+D within 1 second after ctrl+K
        MsgBox, ctrl+K
    ctrl_k_var := false
return

#If ctrl_k_var

    ^d::    
        MsgBox, ctrl+K+D
        ctrl_k_var := false
    return

#If

此脚本不会始终绑定Ctrl+D,只有在按下Ctrl+K时才会使用Ctrl+D,只有在按下Ctrl+K后才会等待Ctrl+D,等待时间仅为1秒。用户3419297给出的答案的缺点是,他的脚本在脚本运行的所有时间都会将Ctrl+D与autohotkey绑定,我调整了代码,以便只有在按下Ctrl+K后才能获得Ctrl+D。因此,Ctrl+D并不总是使用autohotkey绑定,因此当用户未按下Ctrl+K时,其他程序也可以使用Ctrl+D。

您的脚本有一个缺陷,在获得ctrl+K后,它会无限期地等待ctrl+D。我们是否可以调整它,使其在获得ctrl+K后只等待ctrl+D一秒钟?只要按住ctrl键,它就会在获得ctrl+K后等待ctrl+D。如果您只想等待一秒钟,请尝试我编辑的答案。