Encontrei este script em https://autohotkey.com/boards/viewtopic.php?f=5&t=51596 e funciona perfeitamente. Gosto que seja fácil de entender e alterar facilmente a chave desejada.
A coisa é:
Ele dispara "a" quando é executado pela primeira vez sem que eu pressione nenhuma tecla
Eu queria definir outras chaves usando este método, mas ele só funciona para a primeira atribuição de chave. Copiei o script de trabalho e tentei modificar os nomes das variáveis para não interferirem uns com os outros e colei abaixo do "retorno" inferior, mas qualquer coisa que eu adicionar abaixo
KeyWait, {%Key%} tapCount = Return
não funciona
Aqui está o script parcialmente funcional atualmente modificado, o que estou faltando aqui
Key = a ;Main Keybind
tLength = -300 ;Time before key is pressed
tapSingle = a ;Single Tap Keybind
tapDouble = b ;Double Tap Keybind
tapHold = c ;Hold Keybind
;----------------------------------------------------------
Hotkey, $%Key%, startTimer
startTimer:
If !endTimer
SetTimer, endTimer, %tLength%
tapCount++
Return
endTimer:
If GetKeyState(Key, "P") and tapCount < 2
Send, {%tapHold%}
Else If tapCount = 2
Send, {%tapDouble%}
Else If tapCount = 1
Send, {%tapSingle%}
KeyWait, {%Key%}
tapCount =
Return
==ANYTHING BELOW IS NOT WORKING==
bKey = b ;Main Keybind
btLength = -300 ;Time before key is pressed
btapSingle = w ;Single Tap Keybind
btapDouble = a ;Double Tap Keybind
btapHold = s ;Hold Keybind
;----------------------------------------------------------
Hotkey, $%bKey%, bstartTimer
bstartTimer:
If !bendTimer
SetTimer, bendTimer, %btLength%
btapCount++
Return
bendTimer:
If GetKeyState(bKey, "P") and btapCount < 2
Send, {%btapHold%}
Else If btapCount = 2
Send, {%btapDouble%}
Else If btapCount = 1
Send, {%btapSingle%}
KeyWait, {%bKey%}
btapCount =
Return
Existem alguns problemas de sintaxe (por exemplo,
tapCount =
na penúltima linha). Reescrevi o script atualizando-o para AutoHotkey v2 e usando uma função para que várias combinações de teclas possam ser vinculadas sem a necessidade de copiar e colar linhas.