Votre AppleScript comporte deux parties essentielles : l'appui sur une touche et l'exécution d'une tâche après une période d'inactivité.
Appuyer sur une touche
Automatisation de l'appui sur une touche dans AppleScript est bien couvert ; la réponse acceptée à la question liée suggère :
tell application "System Events" to key code 36
Performant lorsqu'il est inactif
La deuxième partie, l'exécution d'une tâche lorsque votre Mac est inactif, est plus délicate. Vous pouvez utiliser un logiciel tiers pour programmer votre AppleScript après une période d'inactivité ou vous pouvez utiliser une approche scriptée pour extraire les informations sur le temps d'inactivité du système :
ioreg -c IOHIDSystem | perl -ane 'if(/Idle/) {$idle=(pop @F)/1000000000; print $idle, "\n"; last;}'
En résumé, cela devient un AppleScript :
set inactive_seconds to do shell script "ioreg -c IOHIDSystem | perl -ane 'if(/Idle/) {$idle=(pop @F)/1000000000; print $idle, \"
\"; last;}'"
Où inactive_seconds
contient le nombre de secondes d'inactivité.
Mise en place
L'assemblage dépend de votre approche du bouclage. Envisagez une boucle while qui vérifie si le Terminal.app est en cours d'exécution. L'article de John Gruber vous sera utile à cet égard, Comment déterminer si une certaine application fonctionne à l'aide d'AppleScript et de Perl ? :
tell application "System Events"
count (every process whose name is "Terminal")
end tell
La plus grande boucle while pourrait être :
tell application "System Events"
repeat while ((count (every process whose name is "Terminal")) > 0)
-- check idle time and conditionally perform key press
-- wait n minutes to avoid excessive polling
end repeat
end tell