Page 1 of 1

Evitar que falle el teclado

Posted: 28 Sep 2017, 15:42
by Hache_raw
Buenas tardes.

Tengo un script para que pulsa tres teclas en una ventana en segundo plano. Asi puedo trabajar mientras en otras cosas.

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

settitlematchmode,2

F1::
Gosub t1
SetTimer, t1, 500

i := false
While (!i)
{
    controlSend,,{left down}, Uso a distancia de tu PS4
    Sleep 1000
    controlSend,,{left up}, Uso a distancia de tu PS4

    controlSend,,{down down}, Uso a distancia de tu PS4
    Sleep 1000
    controlSend,,{down up}, Uso a distancia de tu PS4
}
Return


t1:
controlSend,,{enter down}, Uso a distancia de tu PS4
Sleep 400
controlSend,,{enter up}, Uso a distancia de tu PS4
Return


F2::
i := true
SetTimer, t1, Off
Return
El problema es que me afecta al teclado: Muchas veces no me funciona el Shift para poner letras en mayúsculas. Lo mismo con las tildes. Realmente creo que el problema es que el teclado se cambia al idioma "en" mientras AHK ejecuta el script.

Hay alguna manera de arreglarlo, es un bug, es normal?

Gracias!

Re: Evitar que falle el teclado

Posted: 28 Sep 2017, 16:36
by Flipeador
He probado el código con Notepad y me hace lo mismo, interfiere cuando estas escribiendo en otra ventana. He encontrado un tema al respecto pero no parece ser el caso, diría que este comportamiento es normal.
Una 'solución' sería detener el Script cuando detecte que el teclado está siendo utilizado, por ejemplo:
(nota: cambiar el título de la ventana, puse el bloc de notas para probar)

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

settitlematchmode,2

F1::
Gosub t1
SetTimer, t1, 500
SetTimer, t2, 500

i := false
While (!i)
{
    controlSend,,{left down}, Bloc de notas
    Sleep 1000
    controlSend,,{left up}, Bloc de notas

    controlSend,,{down down}, Bloc de notas
    Sleep 1000
    controlSend,,{down up}, Bloc de notas
}
Return

t1:
controlSend,,{enter down}, Bloc de notas
Sleep 400
controlSend,,{enter up}, Bloc de notas
Return

F2::
i := true
SetTimer, t1, Off
SetTimer, t2, Off
Return

t2:
SetTimer, t2, Off
If (!i)
{
    Input, Str, B I L1 V * E
    If (ErrorLevel == "Max")
    {
        Gosub F2
        SetTimer, F1, -1000
    }
    SetTimer, t2, On
}
Return