Kann AppleScript in einer Anwendung automatisch eine Taste für mich drücken?

Ich versuche, ein AppleScript zu erstellen, das automatisch die rechte Pfeiltaste für 1 Sekunde und dann die linke Pfeiltaste für 1 Sekunde drückt und dies in einer Endlosschleife wiederholt, bis ich es unterbreche.

Folgendes habe ich bisher herausgefunden, aber es funktioniert nicht ganz:

tell application "VisualBoyAdvance"
    repeat 100 times
        tell application "VisualBoyAdvance" to keystroke "124"
        delay 1
    end repeat     
end tell 
Können Sie ein Codebeispiel für das hinzufügen, was Sie bisher versucht haben? Sie werden mehr von jemandem lernen, der Feedback zu Ihrem Skript gibt, als nur von jemandem zu kopieren.
Interessante Anfrage. Wofür brauchst du es ?
@Buscar웃 Ich schätze, er braucht es, um sein Pokémon-Ei automatisch auszubrüten ...! Ich bin über diese Frage gestolpert, um dasselbe zu tun ...

Antworten (2)

Sie können Tastencodebefehle wiederholen, bis sich die vorderste Anwendung ändert:

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

Kürzere Verzögerungen (einschließlich 0,2 Sekunden) erschwerten das Stoppen des Skripts. Ich musste ⌥⇧⌘⎋ gedrückt halten, um das Beenden von TextEdit zu erzwingen.

Dies wurde nur einmal nach links verschoben:

delay 1
tell application "System Events"
    key down (character id 28)
    delay 5
    key up (character id 28)
end tell
  • links: 123 / 28
  • rechts: 124 / 29
  • unten: 125 / 31
  • nach oben: 126 / 30

Ich habe gerade einige Tests durchgeführt: AppleScript ist für das, was Sie fragen, nicht gut geeignet, da es Single-Threaded ist. Daher scheint es nicht möglich, die Schleife in einer solchen Situation zu verlassen.

Hier ist ein Code, der tut, was Sie wollen, aber ohne die Schleife zu verlassen.

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

Wenn Sie es ausführen, friert es den Computer ein, indem es zu viele Ereignisse sendet.