Touché : lire l'arbre d'accessibilité
Touché est l'organe de lecture structurelle : il renvoie les éléments d'une interface (rôle, libellé, position) tels que le système les expose via l'accessibilité, expurgés des contenus sensibles. Les descriptions des outils parlent d'« arbre d'accessibilité macOS ». Les deux outils sont en lecture seule et ne sont pas soumis au plafond des Mains.
| Outil | Rôle | Niveau |
|---|---|---|
touche_tree | Arbre borné et expurgé d'une fenêtre | lecture |
touche_probe | Élément situé sous un point de l'écran | lecture |
Prérequis : l'autorisation Accessibilité du système doit être accordée au processus responsable de Daimon. Sans elle, les deux outils renvoient accessibility_permission_denied. daimon_doctor vérifie cette autorisation sans jamais ouvrir de boîte de dialogue.
Erreurs communes
| Code | Signification |
|---|---|
accessibility_permission_denied | L'autorisation Accessibilité manque |
excluded | La cible appartient à une application protégée par vos exclusions |
snapshot_failed | La lecture de l'arbre a échoué |
touche_tree
Renvoie l'arbre d'accessibilité, borné en profondeur et expurgé.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
max_depth | entier | 4 | non | Profondeur maximale du parcours depuis la racine |
root | objet {x, y} | racine de la fenêtre au premier plan | non | Point désignant la racine du sous-arbre |
roles | liste de chaînes | aucun filtre | non | Filtre par rôle ; vide ou omis, aucun filtre |
prune_empty | booléen | true | non | Élague les nœuds vides ou sans intérêt |
summary | booléen | false | non | Renvoie un résumé texte compact plutôt que l'arbre de nœuds |
window | objet {pid, bundle, title} | fenêtre au premier plan | non | Cible de fenêtre ; chaque champ est optionnel |
Niveau : lecture.
Exemple d'appel
{ "max_depth": 3, "roles": ["AXButton"], "summary": false, "window": { "bundle": "com.apple.finder" } }Retour : l'arbre de nœuds expurgé, ou {summary} (une chaîne) quand summary est vrai, ou une erreur de contrat (voir ci-dessus).
Pièges
- Une profondeur élevée sur une application riche produit une réponse très volumineuse : préférez
summary,rolesou unrootciblé. - Les valeurs de rôle sont celles de l'accessibilité du système ; relevez-les d'abord dans un arbre complet plutôt que de les deviner.
- Un arbre vide ou muet (applications dessinées sur mesure) n'est pas une erreur : utilisez alors
vue_find. - Fournissez le
roleet lelabelainsi obtenus aux outils des Mains afin que Daimon puisse vérifier la réversibilité.
touche_probe
Renvoie le seul élément d'accessibilité situé sous un point de l'écran, expurgé.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
x | entier | aucun | oui | Abscisse du point d'écran |
y | entier | aucun | oui | Ordonnée du point d'écran |
Niveau : lecture.
Exemple d'appel : { "x": 640, "y": 420 }
Retour : le nœud unique expurgé, ou une erreur de contrat (voir ci-dessus).
Pièges : x et y sont des points du bureau global, la même unité que celle de main_click.