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

Estoy tratando de dispositivos un AppleScript 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 ciclo sin fin hasta que lo interrumpa.

Esto es lo que he encontrado hasta ahora, pero no funciona del todo:

tell application "VisualBoyAdvance"
    repeat 100 times
        tell application "VisualBoyAdvance" to keystroke "124"
        delay 1
    end repeat     
end tell 
¿Puede agregar una muestra de código de lo que ha intentado hasta ahora? Aprenderá más de alguien que le dé retroalimentación a su guión que simplemente copiándolo de alguien.
Solicitud interesante. Para qué lo necesitas ?
@Buscar웃 ¡Supongo que lo necesita para eclosionar automáticamente su huevo de Pokémon...! Me topé con esta pregunta en la búsqueda de hacer lo mismo...

Respuestas (2)

Puede repetir los comandos del código clave hasta que cambie la aplicación más avanzada:

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

Retrasos más cortos (incluidos 0,2 segundos) dificultaron la detención del guión. Tuve que mantener presionado ⌥⇧⌘⎋ para forzar el cierre 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

Acabo de hacer algunas pruebas: AppleScript no se adapta bien a lo que pides, ya que es de un solo subproceso. Por lo tanto, salir del ciclo 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 ejecuta, congelará la computadora al enviar muchos eventos.