AppleScript può premere automaticamente un tasto per me in un'applicazione?

1

Sto provando a dispositivi AppleScript che preme automaticamente il tasto freccia destra per 1 secondo, quindi il tasto freccia sinistra per 1 secondo e lo ripeto in un ciclo infinito finché non lo interrompo.

Ecco cosa ho scoperto finora, ma non è del tutto funzionante:

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

2 risposte

2

È possibile ripetere i comandi del codice tasto fino a quando l'applicazione in primo piano cambia:

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

Ritardi più brevi (compresi 0,2 secondi) hanno reso difficile interrompere la sceneggiatura. Dovevo tenere premuto ⌥⇧⌘⎋ per forzare l'uscita da TextEdit.

Questo si è spostato a sinistra una sola volta:

delay 1
tell application "System Events"
    key down (character id 28)
    delay 5
    key up (character id 28)
end tell
  • a sinistra: 123/28
  • destra: 124/29
  • in basso: 125/31
  • su: 126/30
risposta data 13.05.2013 - 11:14
fonte
1

Ho appena fatto alcuni test: AppleScript non è adatto per quello che chiedi dato che è Single Threaded. Quindi uscire dal circuito in tale situazione non sembra possibile.

Ecco un codice che fa ciò che vuoi ma senza uscire dal ciclo.

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

Se lo esegui, congela il computer inviando a molti eventi.

    
risposta data 12.05.2013 - 21:36
fonte

Leggi altre domande sui tag