Mantener pulsada la tecla "w" haciendo doble pulsacion en ella
Posted: 12 Dec 2016, 05:02
by Nucleorion
Hola,
He estado intentando mantener pulsada una tecla con doble pulsación, por ejemplo la w para avanzar en los juegos sin tener que estar manteniendo la presion sobre la tecla constantemente.
Entre las muchas cosas que he probado la que mas cerca ha estado ha sido esta:
Code: Select all
Pulsada:=true
w:: ;No consigo evitar que se active la doble pulsacion al repetirse la tecla
If (A_PriorHotKey = "w" AND A_TimeSincePriorHotkey < 400) ;El ultimo valor serian los milisegundos entre pulsaciones para activar la doble pulsacion
{
Pulsada := !Pulsada ;Si pulsada es true se pone en false y si es false se pone en true
If Pulsada
Send {w up}
Else
Send {w down}
;keywait, w
Return
}
else
Send, w
Return
Al mantener pulsada la tecla w se activa la doble pulsacion, pensaba que poniendo ~w:: se iba a evitar eso pero tampoco
Re: Mantener pulsada la tecla "w" haciendo doble pulsacion en ella
Posted: 13 Dec 2016, 10:09
by Flipeador
Hola, diría que en casi todos (por no decir todos) los teclados no es posible mantener presionada teclas que no sean modificadoras como ALT, CTRL, SHIFT, etc, solo en juegos es distinto.
Code: Select all
~w:: ; al pulsar la tecla 'w' (el '~' impide el bloqueo de la tecla, haciendo que se envíe con normalidad)
; Si la tecla 'w' ha sido pulsada mas de una vez en menos de 200ms:
If (A_PriorHotKey = A_ThisHotkey) && (A_TimeSincePriorHotkey < 200) {
KeyWait w ; espera a que el usuario suelte la tecla 'w' para continuar
While !GetKeyState("w") { ; mientras la tecla 'w' no esté presionada
SendInput w ; presiona de nuevo la tecla 'w'
Sleep 50 ; espera 50ms para continuar (con 'SetKeyDelay' puedes establecer los retrasos, pero afecta a 'Send', y no a 'SendInput')
}
; Llegado a este punto, el usuario presionó la tecla 'w' por lo que el bucle 'while' de arriba ha terminado.
KeyWait w
}
return
Re: Mantener pulsada la tecla "w" haciendo doble pulsacion en ella
Posted: 22 Jan 2021, 11:59
by Nucleorion
Hola, Muchas gracias
se me pasó
Intento de nuevo hacerlo funcionar pero no va. He intentado tambien ejecutar unas funciones de autowalk y autorun
https://www.autohotkey.com/boards/viewtopic.php?f=19&t=19372&p=324558#top
Me gustaria saber lo que hace cada instrucción para poder editarlo y ajustarlo, paso a comentar las que creo que entiendo
Code: Select all
~w:: //No entiendo que hace el signo antes de la w, he encontrado algo de cambia si es de 32 o 64 bits pero creo que no va por ahi la cosa
If (A_PriorHotKey = A_ThisHotkey) && (A_TimeSincePriorHotkey < 200) { //Aqui detecta si la tecla ha sido pulsada dos veces en menos de 200 ms
KeyWait w // Entiendo que se queda esperando a que pulsemos la w pero no entiendo porque. ¿Acaso es esta la segunda pulsación?
While !GetKeyState("w") { //Mientras no se pulse de nuevo la w
SendInput w // se envia la pulsación de la tecla
Sleep 50 ;quita esta linea para mayor velocidad. //Le da mayor velocidad al detectar que volvemos a pulsar la w?
}
KeyWait w // No entiendo porque se queda de nuevo esperando al terminar el while
}
return
Entonces con el autorun he intentado
Code: Select all
~w::
If (A_PriorHotKey = A_ThisHotkey) && (A_TimeSincePriorHotkey < 200) {
AutoRun() //La propia funcion de autorun ya contempla que al pulsar la w dejara de correr
}
return
Pero no me funciona
Re: Mantener pulsada la tecla "w" haciendo doble pulsacion en ella
Posted: 27 Jan 2021, 08:05
by Flipeador
@Nucleorion Hola, he añadido comentarios al script de arriba.
Con respecto al AutoWalk, no he revisado el código, pero cuando se trata de juegos debes ejecutar siempre los scripts como Administrador. En el tema que has puesto, en los comentarios casi al final hay otro script, podrías probar ese, creo que solo tienes que cambiar la tecla para iniciarlo, o sea AppsKey por $w.
Re: Mantener pulsada la tecla "w" haciendo doble pulsacion en ella
Posted: 19 Apr 2021, 03:27
by Nucleorion
Gracias por comentar el codigo! No me llegaba el correo con el aviso de respuesta y no la habia visto.
Volveremos a la carga con la doble pulsación
Un saludo.