4 votes

Exécuter la commande plist toutes les 5 secondes

J'ai le fichier plist suivant dans mon dossier User/Library/LaunchAgents. Il appuie sur la touche "g" toutes les 60 secondes.

Ma question est la suivante : comment puis-je changer cela pour appuyer sur la touche "g" toutes les 5 secondes ?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>-e</string>
        <string>tell application "System Events" to keystroke "g"</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Second</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

0 votes

Voir ma réponse ci-dessous. Mais pourquoi voulez-vous une telle chose ?

3voto

Harald Hanche-Olsen Points 3981

Changez le plist en

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>G-key-pusher</string>
    <key>Program</key>
    <string>/usr/bin/osascript</string>
    <key>Program</key>
    <string>/bin/sh</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>while sleep 5; do /usr/bin/osascript -e 'tell application "System Events" to keystroke "g"'; done</string>
    </array>
    <key>ServiceDescription</key>
    <string>Auto Keypress</string>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Ce qu'il fait, est d'exécuter un shell script qui fait le timer de 5 secondes et appelle osascript. Le plist launchd s'assure juste que le script est redémarré s'il venait à mourir pour une raison quelconque. Veuillez noter que je n'ai pas encore testé ceci, mais je ne vois pas pourquoi cela ne devrait pas fonctionner. Bien que j'ai eu des problèmes dans le passé en changeant les éléments de launchd, que j'ai résolu en changeant l'étiquette. Ce qui me rappelle que vous avez omis la valeur de l'élément Label dans votre plist.

(Edit : Expliquer un peu, et fournir un fichier complet au lieu d'expliquer quelles parties doivent être changées).

0 votes

Merci pour votre réponse. Malheureusement, je n'arrive pas à le faire fonctionner. Il ne veut pas appuyer sur "g" du tout, dans aucune application. J'ai remplacé la clé Programme par le premier tableau de fermeture par votre premier bloc de code. J'ai également remplacé la clé Second et le nombre entier 0 par votre deuxième bloc de code. Lorsque j'exécute le fichier, rien ne se passe. Pourriez-vous jeter un coup d'œil à ce problème et poster un exemple de code complet ?

0 votes

@Ryan : Désolé, j'ai été follement occupé, sinon j'aurais testé et posté un exemple complet. Vous devez remplacer la totalité de la clé StartCalendarInterval et le dict qui l'accompagne par le deuxième bloc de code de ma réponse. Si vous n'arrivez toujours pas à le faire fonctionner, je vous enverrai un exemple complet dès que j'aurai un peu de temps libre.

0 votes

@Ryan : J'ai modifié ma réponse et ajouté quelques commentaires. Toujours pas testé.

3voto

Matthew Du Puy Points 91

Je sais que c'est un très vieux fil de discussion, mais il est apparu dans l'une de mes récentes recherches de conseils sur launchctl, alors je voulais inclure la réponse correcte : lancement toutes les "x" secondes. launchctl peut être utilisé comme cron (seulement mieux). Dans votre script original, vous utilisez la clé "StartCalendarInterval". Vous devriez simplement utiliser la clé "StartInterval" et lui donner le nombre de secondes.

Remplacez vos lignes :

<key>StartCalendarInterval</key> <dict>
    <key>Second</key>
    <integer>0</integer> </dict>

Avec :

<key>StartInterval</key>
<integer>5</integer>
<key>ThrottleInterval</key>
<integer>0</integer>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X