如何在自动热键中分配顺序热键? ctrl+K 然后是 ctrl+D
How to assign sequential hotkeys in autohotkey? ctrl+K followed by ctrl+D
我想在按下这些键序列时运行一个函数:
ctrl+K 然后是 ctrl+D
在进行上述操作时,我们全程按住ctrl。
我想将 function1() 分配给 ctrl+K,但将 function2() 分配给此组合:ctrl+K 然后是 ctrl+D
在 autohotkey 中可以实现吗?
只是为了清楚起见,你可以想到Visual Studio中的那个组合,用于格式化代码。
^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。
我对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+D ]Ctrl+K 被按下,然后它只会等待 Ctrl+D 仅 1 秒。 user3419297 给出的答案的缺点是他的脚本会在脚本为 运行 的所有时间将 Ctrl+D 与 autohotkey 绑定,我调整了代码以便它只有在按下 Ctrl+K 后才会得到 Ctrl+D。所以 Ctrl+D 在任何时候都不会绑定 autohotkey,因此当 Ctrl+ 时其他程序也可以使用 Ctrl+D K没有被用户按下
我想在按下这些键序列时运行一个函数:
ctrl+K 然后是 ctrl+D
在进行上述操作时,我们全程按住ctrl。 我想将 function1() 分配给 ctrl+K,但将 function2() 分配给此组合:ctrl+K 然后是 ctrl+D
在 autohotkey 中可以实现吗?
只是为了清楚起见,你可以想到Visual Studio中的那个组合,用于格式化代码。
^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。
我对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+D ]Ctrl+K 被按下,然后它只会等待 Ctrl+D 仅 1 秒。 user3419297 给出的答案的缺点是他的脚本会在脚本为 运行 的所有时间将 Ctrl+D 与 autohotkey 绑定,我调整了代码以便它只有在按下 Ctrl+K 后才会得到 Ctrl+D。所以 Ctrl+D 在任何时候都不会绑定 autohotkey,因此当 Ctrl+ 时其他程序也可以使用 Ctrl+D K没有被用户按下