如何在autohotkey中分配顺序热键? ctrl + K后跟ctrl + D.

时间:2018-03-24 17:14:06

标签: autohotkey

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

ctrl + K 后跟 ctrl + D

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

这样可以在autohotkey中实现吗?

只是为了清楚起见,您可以在Visual Studio中考虑用于格式化代码的组合。

2 个答案:

答案 0 :(得分:1)

^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。

答案 1 :(得分:1)

我编辑并调整了user3419297提供的第二个代码,这里是:

;~ 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 + D 仅1秒钟。 user3419297给出的答案的缺点是,在脚本运行的所有时间,他的脚本将使用autohotkey绑定 Ctrl + D ,我保留了代码以便它只能获得 Ctrl仅在按下 Ctrl + K 之后+ D 。所以 Ctrl + D 不会一直使用autohotkey绑定,因此当没有按下 Ctrl + K 时,其他程序也可以使用 Ctrl + D 由用户。