No AutoHotkey, o envio duplo de uma chave é bastante simples.
#IfWinActive
~^v::SendInput, ^v
Alguns itens adicionais:
1) Você pode personalizar quais programas receberão um envio duplo ou não usando #IfWinActive
e designando um nome de janela, nome de exe, classe, etc. para WinTitle
2) O til na definição de tecla de atalho significa que o script não impede que o pressionamento de tecla original seja executado. Se você quiser total controle sobre se o original passa ou não, você pode remover o til (que bloqueará o pressionamento de tecla original) e depois enviá-lo duas vezes (ou nada, ou o que você quiser fazer sem o pressionamento de tecla original sendo registrado).
3) Você pode adicionar um atraso, se necessário, estendendo a função para mais do que apenas uma definição de tecla de atalho de linha única e usando uma declaração Return
4) Você pode usar o mesmo código para várias teclas de atalho usando A_ThisHotkey.
5) Você também pode permitir combinações de teclas com vários modificadores usando um modificador *, se necessário. Isso pode não funcionar corretamente com o código de exemplo abaixo, mas apenas algo em que você deve estar ciente.
Exemplo dos itens acima 1-4:
; this will execute the code to send duplicate keystrokes
; for any of the hotkeys defined, in this case, a,b,c, or Ctrl+V
#IfWinActive ahk_exe notepad.exe
~a::
~b::
~c::
~^v::
Sleep 200 ; Possibly use or adjust for reliability if needed
SendInput % SubStr(A_ThisHotkey, 2) ; Remove tilde and send duplicate keystrokes for whichever hotkey executed
Return