vendredi, novembre 21, 2008

Applescript: envoyer des touches aux applications

Pour toute aide, touts niveaux en Apple script voir le post rellatif a ce sujet ...

Nous allons voir comment envoyer des touches aux applications via Applescript.
Un exemple simple : vous créez un script en 4 lignes qui vous affiche le Dashboard, ou l'on peut faire taper du texte dans une application et rajoutant certains éléments comme la date du jour ou bien d'autres choses encore.
Pour le tip relatif dashbord, ceci ne sert a rien au premier abord, mais nous verrons en quoi cella peut être utile par la suite.

Tout d'abord il vous faut vérifier que vous avez déverrouillé une fonctionnalité (et oui il ne fraudais pas qu'un script puisse émuler un clavier ou par extension exécuter des commandes "out of the box" ce serais une faille ><)
(.... devinez de qui je parle là ....)

Enfin bon assez de troll pour aujourd'hui Dans les Préférences Système > Système > Accès Universel
Vérifiez dans la première tab (Vue) que "activer l'accès pour les périphériques d'aide" est coché

Ensuite > Spotlight (ou QuickSilver ...) > Éditeur de scripts
pour activer la bibliothèque (command shift L)

le script type est :

on run
try
tell application "System Events" to key code 100
--F11
end try
end run

Ici par exemple la touche f11 est envoyé au système.
le -- permet de mettre de commentaire

Une petite précision, mettons que vous voulez faire un combo de touches.
C'est a dire un (command N) pour un nouveau document par ex ...
Et bien le code ressemblerais à ça:

try
tell application "System Events" to key code {3} using command down
--command n
end try

Pour ce qui est des touches du clavier le code est en fait le code ASCII de la touche ...
mais me diriez vous qu'en est il des touches pomme(command), ctrl, alt, f1 ....

et bien voici la liste a peu près exhaustive pour un clavier QWETRY ...

Key code 0 = a
Key code 11 = b
Key code 8 = c
Key code 2 = d
Key code 14 = e
Key code 3 = f
Key code 5 = g
Key code 4 = h
Key code 34 = i
Key code 38 = j
Key code 40 = k
Key code 37 = l
Key code 46 = m
Key code 45 = n
Key code 31 = o
Key code 35 = p
Key code 12 = q
Key code 15 = r
Key code 1 = s
Key code 17 = t
Key code 32 = u
Key code 9 = v
Key code 13 = w
Key code 7 = x
Key code 16 = y
Key code 6 = z


Key code 122 = F1
Key code 120 = F2
Key code 99 = F3
Key code 118 = F4
Key code 96 = F5
Key code 97 = F6
Key code 98 = F7
Key code 100 = F8
Key code 101 = F9
Key code 109 = F10
Key code 103 = F11
Key code 111 = F12
Key code 105 = F13
Key code 107 = F14
Key code 113 = F15


Key code 49 = Space
Key code 36 = Return
Key code 123 = Left Arrow
Key code 124 = Right Arrow
Key code 126 = Up Arrow
Key code 125 = Down Arrow
Key code 48 = Tab
Key code 54 = Command
Key code 56 = Shift
Key code 58 = Alt
Key code 59 = Ctrl
Key code 51 = delete

Key code 0 = 29
Key code 1 = 18
Key code 2 = 19
Key code 3 = 20
Key code 4 = 21
Key code 5 = 23
Key code 6 = 22
Key code 7 = 26
Key code 8 = 28
Key code 9 = 25

Et pauvre Français que nous sommes comment allons nous bien pouvoir faire ? ...
Merci Yvan KOENIG pour le Vector du clavier mac FR (AZERTY):

set vect to {{"esc", "35"}, {"F1", "7A"}, {"F2", "78"}, {"F3", "63"}, {"F4", "76"}, {"F5", "60"}, {"F6", "61"}, {"F7", "62"}, {"F8", "64"}, {"F9", "65"}, {"F10", "6D"}, {"F11", "67"}, {"F12", "6F"}, ¬
 {"§6", "16"}, {"&1", "12"}, {"é2", "13"}, {(ASCII character 22) & "3", "14"}, {"'4", "15"}, {"5(", "17"}, {"§6", "16"}, {"è7", "1A"}, {"!8", "1C"}, {"ç9", "19"}, {"à0", "1D"}, {")°", "1B"}, {"-_", "18"}, {"backspace", "33"}, ¬
 {"tab", "30"}, {"aA", "0C"}, {"zZ", "0D"}, {"eE", "0E"}, {"rR", "0F"}, {"tT", "11"}, {"yY", "10"}, {"uU", "20"}, {"iI", "22"}, {"oO", "1F"}, {"pP", "23"}, {"^¨", "21"}, {"$*", "1E"}, {"Return", "24"}, ¬
 {"capslock", "39"}, {"qQ", "00"}, {"sS", "01"}, {"dD", "02"}, {"fF", "03"}, {"gG", "05"}, {"hH", "04"}, {"jJ", "26"}, {"kK", "28"}, {"lL", "25"}, {"mM", "29"}, {"ù%", "27"}, {"`£", "2A"}, ¬
 {"shift", "38"}, {"<>", "32"}, {"wW", "06"}, {"xX", "07"}, {"cC", "08"}, {"vV", "09"}, {"bB", "0B"}, {"nN", "2D"}, {",?", "2E"}, {";.", "2B"}, {":" & "/", "2F"}, {"=+", "2C"}, ¬
 {"Fn", "3F"}, {"ctrl", "3B"}, {"opt", "3A"}, {"cmd", "37"}, {" ", "31"}, {"enter", "4C"}, {"leftarrow", "7B"}, {"downarrow", "7D"}, {"uparrow", "7E"}, {"rightarrow", "7C"}}

Pour ceux qui ne connaissent pas l'object Vector pas de panique ...
Vous avec compris que chaque lettre est associé a son code (Keycode) ASCII ...
Un ( F) de la touche recherché et c'est fait ...

Un grep avec les yeux ca marche aussi ^^ (cf BashFr >_<)

Revenons au tip sur la dashboard ...
En envoyans la touche raccourcis de votre dashboard (f12 pour mon vieux MacBook ^^) via un script cella peut paraitre useless mais pour rendre cella un peu plus attrayant copiez votre script dans

~/Library/Speech/Speakable\ Items/ (arborescence UNIX ...)

Ou plus clairement avec le Finder, à partir de "Macintosh HD" > Utilisateurs > {votre nom} >Bibliothèque > Speech > Speakable Items

Bien sur dans le cas où "Macintosh HD" est le mon de votre disque dans lequel est installé mac os .

Puis activez dans "Préférences Système" > Système > Parole
Dans l'onglet (par defaut) "Éléments prononçables" > activez "Éléments prononçables" ^^

Et la vous pouvez parler a votre mac
Par exemple si le nom de votre script est "Dashboard" appuyez sur "esc" et dites "Dashboard" avec l'accent Anglais et la votre script va se lancer et le Dashboard va apparaitre comme par magie ^^

Ceci n'est qu'un exemple de ce que vous pouvez faire. Une quasi infinité de choses sont possibles. On peut imaginer n'importe quel script et le lancer par la voix.
Un vrais truc de Geek ^^.

Un autre post plus détaillé sur les Scripts Apple est a venir du fait de la puissance de ce language (et de sa simplicité : de l'Anglais parlé >< même le VBS de crosoft' n'est pas aussi simple ^^)
Zut j'avais dit que jarretais le Troll ...

Aucun commentaire: