¿AppleScript puede presionar automáticamente una tecla en una aplicación?

1

Estoy tratando de crear un AppleScript para dispositivos que presionará automáticamente la tecla de flecha derecha durante 1 segundo, luego la tecla de flecha izquierda durante 1 segundo y repetiré esto en un bucle sin fin hasta que lo interrumpa.

Esto es lo que he encontrado hasta ahora, pero no está funcionando bien:

tell application "VisualBoyAdvance"
    repeat 100 times
        tell application "VisualBoyAdvance" to keystroke "124"
        delay 1
    end repeat     
end tell 
    
pregunta Owen 12.05.2013 - 20:02

2 respuestas

2

Podrías repetir los comandos de código clave hasta que la aplicación principal cambie:

delay 1
activate application "TextEdit"
tell application "System Events"
    repeat while (path to frontmost application) is (path to application "TextEdit")
        repeat 3 times
            key code 123
            delay 0.3
        end repeat
        repeat 3 times
            key code 124
            delay 0.3
        end repeat
    end repeat
end tell

Los retrasos más cortos (incluidos 0,2 segundos) dificultaron la detención del script. Tuve que mantener ⌥⇧⌘⎋ para forzar la salida de TextEdit.

Esto se movió a la izquierda solo una vez:

delay 1
tell application "System Events"
    key down (character id 28)
    delay 5
    key up (character id 28)
end tell
  • izquierda: 123/28
  • derecha: 124/29
  • abajo: 125/31
  • arriba: 126/30
respondido por el user495470 13.05.2013 - 11:14
1

Acabo de hacer algunas pruebas: AppleScript no es adecuado para lo que pides, ya que es Single Threaded. Por lo tanto, salir del bucle en tal situación no parece posible.

Aquí hay un código que hace lo que quiere pero sin salir del bucle.

tell application "VisualBoyAdvance" to activate
repeat while true
    set mydate to current date
    repeat while ((current date) - mydate < 1)
        tell application "System Events" to keystroke (key code 124) -- right
    end repeat
    repeat while ((current date) - mydate < 1)
        tell application "System Events" to keystroke (key code 123) -- left
    end repeat
end repeat

Si lo ejecutas, congelará la computadora enviando muchos eventos.

    
respondido por el Matthieu Riegler 12.05.2013 - 21:36

Lea otras preguntas en las etiquetas