Following what is given by @Plox that halffills what is required by this post, more to be elucidated if we realise that c:: MouseClick left,,,,, D
works by the same mechanism used by:
c::
MouseClick left,,,,, D
return
The AHK engine here fires a MouseDown, gets out of this thread and hooks up to User Input again waiting another action, that says if the key is still held, AHK will gets infinitely into the same routine when it realises that the hotkey triggering it is still pressed.
One of two palliatives can be used:
You choose to keep AHK busy until releasing the same kay:
c::
MouseClick left,,,,, D
Keywait, c, U
MouseClick left,,,,, U
return
Or you can prefer keeping AHK interpreter free outside of the same routine, by reserving a gloval variable keybound
to forbid revolving into the same action over again if the key is not made free yet.
#HotkeyInterval 0
keybound:=0
c::
if keybound
return
keybound:=1
MouseClick left,,,,, D
return
c Up::
MouseClick left,,,,, U
keybound:=0
return
#HotkeyInterval 2000 ; Reset to default value
HotkeyInterval
is some threshold switched off to prevent undesired warns.