2010-03-01 5 views
5

J'essaie d'envoyer des séquences de touches à l'application VisualBoyAdvance en utilisant AppleScript, mais je n'arrive pas à le faire fonctionner.L'application n'accepte pas la frappe

Mon code, à ce jour, est la suivante:

tell application "VisualBoyAdvance" 
    activate 

    tell application "System Events" 
     keystroke "k" 
    end tell 

end tell 

Quand je dis VisualBoyAdvance directement, je reçois cette erreur:

error "VisualBoyAdvance got an error: Can’t get keystroke \"k\"." number -1728 from keystroke "k" 

J'ai essayé dire VisualBoyAdvance directement, et je l'ai aussi essayé en utilisant key code 40, mais je ne peux toujours pas le faire fonctionner. Curieusement, cela fonctionne:

tell application "VisualBoyAdvance" 
    activate 

    tell application "System Events" 
     keystroke "d" using {command down} 
    end tell 

end tell 

Mais c'est un raccourci clavier qui apparaît dans la barre de menu, donc je suppose que ce serait un peu différent. Comment puis-je utiliser AppleScript pour simuler une pression sur une touche et permettre à l'application de répondre? Si je ne peux pas utiliser AppleScript pour cela, que pourrais-je utiliser d'autre?

+0

Avez-vous le soutien de l'appareil d'assistance mis en marche? – alesplin

+0

une chance à ce sujet? –

Répondre

0

C'est le choix du développeur pour rendre une application entièrement compatible Applescript. Les éléments de menu sont Applescriptable du point de vue du Finder, mais d'autres options d'interface utilisateur peuvent être ou ne pas être. Voir UIElementInspector pour examiner cette application pour les éléments scriptables.

+0

Existe-t-il un autre moyen de simuler les frappes sur le système? –

0

Je ne garuntee rien que je n'ai pas cette application, mais voici quelques choses à essayer

tell application "VisualBoyAdvance" 
    activate 
    tell application "System Events" 
     tell application process "VisualBoyAdvance" 
      try 
      keystroke "k" 
       on error 
        try 
        keystroke (ASCII character 75) 
        end try 
       end try 
     end tell 
    end tell 
end tell 
7

Je pense que vous y êtes presque. Voici quelque chose que j'ai utilisé pour Safari; dans cet exemple, j'envoie le code clé 48 (tab).

tell application "Safari" 
    activate 

    tell application "System Events" to tell process "Safari" to key code 48 
end tell 

AFAICS ce devrait être en grande partie le soutien indépendant de AppleScript dans le processus cible que vous demandez des événements du système pour simuler la pression de touche par l'accès universel.

Pour de l'aide avec les codes clés, voir cette application utile: http://manytricks.com/keycodes/

+0

Aussi: 'dire à l'application" System Events "pour dire processus" Safari "à la frappe" d "' – frnhr

+0

Nice @frnhr - c'est encore plus clair :) –