1 votes

AppleScript pour activer le clavier d'accessibilité dans High Sierra

Comment puis-je écrire un script pour activer le clavier d'accessibilité présent dans macOS High Sierra?

Il est bien sûr possible de le faire en allant dans Préférences Système > Accessibilité > Clavier > Clavier d'accessibilité > "Activer le clavier d'accessibilité", mais cela prend un certain nombre de clics. Je voudrais un script qui puisse être lancé depuis le Dock, car j'utilise fréquemment le clavier d'accessibilité.

Une idée est d'utiliser AppleScript; une autre idée est de trouver le binaire du clavier d'accessibilité et d'utiliser un script shell pour l'ouvrir.

Voici ma tentative d'AppleScript:

tell application "Préférences Système"
    activer
    révéler (panneau id "com.apple.preference.universalaccess")
end tell

tell application "Événements Système" to tell application processus "Préférences Système"
    tell fenêtre "Accessibilité"
        cliquer élément UI "Clavier" de rangée 16 de table 1 de zone de défilement 2
        cliquer bouton "Clavier d'accessibilité"
        cliquer case à cocher "Activer le clavier d'accessibilité"
    end tell
end tell

Ce script échoue avec l'erreur : "Événements Système a obtenu une erreur : Impossible d'obtenir le bouton 'Clavier d'accessibilité' de la fenêtre 'Accessibility' du processus d'application 'Préférences Système'."

Si je supprime les deux dernières commandes cliquer, le script ne produit pas d'erreur, mais ne semble pas non plus cliquer sur l'élément UI "Clavier".

Qu'est-ce que je fais de mal? Excusez-moi si c'est une question stupide; c'est mon premier AppleScript.

Ou si quelqu'un connaît l'emplacement du binaire du clavier d'accessibilité, cela serait également utile.

1voto

user3439894 Points 52496

Mise à jour : Cette réponse a été initialement écrite avant la sortie de macOS Mojave et en tant que telle, pour l'utiliser dans macOS Mojave, vous devrez changer trois lignes de code.

Changer :

  • sélectionner table 1 de zone de défilement 2
  • sélectionner ligne 16 de table 1 de zone de défilement 2
  • dire groupe d'onglets 1

À :

  • sélectionner table 1 de zone de défilement 1
  • sélectionner ligne 16 de table 1 de zone de défilement 1
  • dire groupe d'onglets 1 de groupe 1

L'exemple de code AppleScript suivant fonctionne pour moi sous macOS High Sierra :

if running of application "Préférences Système" then
    quitter application "Préférences Système"
    pause 1
end if
dire application "Préférences Système"
    révéler panneau id "com.apple.preference.universalaccess"
    pause 1
    dire application "Événements Système"
        dire fenêtre 1 du processus d'application "Préférences Système"
            sélectionner table 1 de zone de défilement 2
            pause 0.1
            sélectionner ligne 16 de table 1 de zone de défilement 2
            pause 0.1
            dire groupe d'onglets 1
                cliquer radio bouton "Clavier d'accessibilité"
                pause 0.1
                cliquer case à cocher "Activer le clavier d'accessibilité"
            fin dire
        fin dire
    fin dire
    quitter
fin dire

Dans Éditeur de scripts, j'ai enregistré l'exemple de code AppleScript en tant qu'application, nommée Clavier d'accessibilité.app, dans le dossier Applications.

Ensuite, j'ai ajouté Clavier d'accessibilité.app à : Préférences Système > Sécurité et Confidentialité > Confidentialité > Accessibilité

Maintenant, je peux facilement afficher le Clavier d'accessibilité via Spotlight, ou l'application Clavier d'accessibilité peut être glissée-déposée sur le Dock pour être lancée à partir de là.


Mise à jour :

Mon exemple original de code AppleScript était destiné à ouvrir le Clavier d'accessibilité, pas à le fermer. En tant que tel, s'il est ouvert et que le script original est exécuté à nouveau, une erreur se produit. La version suivante de l'exemple de code AppleScript tient compte du fait que le Clavier d'accessibilité est déjà affiché et le ferme le cas échéant.

Notez cependant que même si cela ferme le Clavier d'accessibilité s'il est affiché, il y a un rebond supplémentaire sur la Icône du Dock des Préférences Système et ce n'est pas un problème autre qu'une distraction visuelle secondaire.

Exemple de code AppleScript :

**

if running of application "Préférences Système" then
    quitter application "Préférences Système"
    pause 1
end if
dire application "Préférences Système"
    révéler panneau id "com.apple.preference.universalaccess"
    pause 1
    dire application "Événements Système"
        dire fenêtre 1 du processus d'application "Préférences Système"
            sélectionner table 1 de zone de défilement 2
            pause 0.1
            sélectionner ligne 16 de table 1 de zone de défilement 2
            pause 0.1
            dire groupe d'onglets 1
                cliquer radio bouton "Clavier d'accessibilité"
                pause 0.1
                si la valeur de la case à cocher "Activer le clavier d'accessibilité" est 0 then
                    cliquer case à cocher "Activer le clavier d'accessibilité"
                else
                    cliquer case à cocher "Activer le clavier d'accessibilité"
                    pause 1
                    monCliqueOK()
                fin si
            fin dire
        fin dire
    fin dire
    quitter
fin dire

sur monCliqueOK()
    dire application "Événements Système" pour cliquer sur le bouton "OK" de la fenêtre 1 du processus d'application "Préférences Système"
fin monCliqueOK

Notez que les Préférences Système n'ont pas besoin d'être visibles pour que cela fonctionne, c'est pourquoi il n'y a pas de activer commande dans l'exemple de code AppleScript. De plus, si les Préférences Système sont déjà ouvertes, elles sont d'abord fermées avant que le reste du code ne soit traité. Cela est fait pour quelques raisons, la première ayant déjà été mentionnée et deuxièmement voir les Événements UI traités est une distraction visuelle et peut être agaçante.

Remarquez également que la valeur des pause commandes peut nécessiter des ajustements pour votre système, et/ou des pause supplémentaires peuvent être nécessaires ou non. Ajustez les valeurs des pause et/ou ajoutez/supprimez les pause en conséquence.

Gardez à l'esprit qu'une fois que l'application est ajoutée à Préférences Système > Sécurité et Confidentialité > Confidentialité > Accessibilité et modifiée par la suite, vous devrez la décocher et la rechecker pour que les nouvelles modifications puissent être traitées.


Remarque : L'exemple de code AppleScript est juste cela et n'implique aucune gestion des erreurs et est uniquement destiné à montrer l'une des nombreuses façons d'accomplir une tâche. Il incombe toujours à l'utilisateur d'ajouter/utiliser une gestion des erreurs appropriée au besoin/voulu.

**

0 votes

Merci beaucoup! Cela fonctionne très bien! Pour que je comprenne mieux à l'avenir, ai-je commis une erreur en utilisant click au lieu de select et en ne utilisant pas des délais avec delay? En quoi click et select diffèrent-ils?

0 votes

@Henry DeYoung, pour répondre à votre question dans le commentaire... En général mais pas toujours, avec le Scripting UI, pour qu'un élément soit cliqué, il doit d'abord être sélectionné. Lorsque les Préférences Système sont ouvertes pour la première fois dans Accessibilité, généralement la zone de texte de recherche est sélectionnée. Donc essayer de cliquer sur quelque chose dans le tableau de la zone de défilement qui n'est pas sélectionné échoue et c'est pourquoi vous avez obtenu l'erreur que vous avez eu. Donc en sélectionnant d'abord le tableau dans la zone de défilement puis le clavier (sélectionnez la ligne 16 du tableau 1 de la zone de défilement 2) peut être sélectionné. Suite dans le prochain commentaire...

0 votes

@Henry DeYoung, Maintenant, le bouton du clavier d'accessibilité peut être cliqué et la case Activer le clavier d'accessibilité peut être cochée. Donc, sélectionner met le focus sur un objet tandis que cliquer actionne l'objet. En fin de compte, les différences, telles qu'elles sont applicables et/ou nécessaires dans un scénario d'utilisation particulier, deviennent plus apparentes avec l'expérience de l'utilisation de l'interfaçage utilisateur AppleScript.

1voto

sidneys Points 111

Sur la base de votre excellent travail précédent, voici une

Version mise à jour 2018

Fonctionnalités

  • Fonctionne sans aucun délai arbitraire
  • Fonctionne comme un interrupteur (affiche/masque en fonction de l'état du clavier)
  • Préserve l'état de l'application Préférences Système
  • Utilise le Modèle d'Objet d'Application Amélioré d'Apple

Code source

(*
 * toggle-macos-accessibility-keyboard
 * applescript
 *
 * description:
 * script d'automatisation macOS pour basculer le Clavier d'Accessibilité macOS.
 * Affiche et masque le clavier en fonction de son état actuel.
 *
 * auteur : sidneys
 * page d'accueil : http://sidneys.github.io
 * version : 2.0.1
 * licence : MIT
 *)

-- Initialisation
use AppleScript version "2.7"
use scripting additions

-- Persister l'état de démarrage de l'application "Préférences Système"
set didRunSystemPreferences to (get running of application "System Preferences")

-- Initialiser le stockage de la valeur de la case à cocher
set initialCheckboxValue to -1
set currentCheckboxValue to -1

-- Afficher le panneau "Clavier" dans les préférences d'accessibilité
tell application "System Preferences"
    reveal anchor 2 of pane id "com.apple.preference.universalaccess"
end tell

-- Démarrer l'interaction automatisée
tell application "System Events"

    -- Attendre : Fenêtre Préférences Système
    repeat until tab group 1 of window 1 of process "System Preferences" exists
    end repeat

    -- Attendre : Panneau Paramètres
    repeat until (name of second radio button of tab group 1 of window 1 of process "System Preferences") is "Clavier d'accessibilité"
    end repeat

    -- Sélectionner le Contrôle Segmenté "Clavier d'accessibilité"
    click radio button 2 of tab group 1 of window 1 of process "System Preferences"

    -- Cocher la case "Activer le clavier d'accessibilité", enregistrer sa valeur avant/après
    set initialCheckboxValue to value of checkbox 1 of tab group 1 of window 1 of process "System Preferences"
    click checkbox 1 of tab group 1 of window 1 of process "System Preferences"
    set currentCheckboxValue to value of checkbox 1 of tab group 1 of window 1 of process "System Preferences"

    -- La valeur de la case à cocher a-t-elle changé ?
    if initialCheckboxValue is currentCheckboxValue then
        -- Non - Attendre : boîte de dialogue de confirmation
        repeat until sheet 1 of window 1 of process "System Preferences" exists
        end repeat
        -- Ignorer la boîte de dialogue
        click button 1 of sheet 1 of window 1 of process "System Preferences"
    end if

end tell

-- L'application "Préférences Système" s'est-elle exécutée au démarrage ?
if not didRunSystemPreferences then
    -- Non - Quitter
    quit application "System Preferences"
else
    -- Oui - Retourner à l'écran d'aperçu
    tell application "System Events"
        click menu item 3 of menu 1 of menu bar item 4 of menu bar 1 of process "System Preferences"
    end tell
end if

Dépôt

Forkez le Gist sur GitHub : toggle-accessibility-keyboard-macos

En attente de vos commentaires, À votre santé, S

0 votes

C'est génial, merci! Savez-vous s'il existe un moyen pour votre script de rappeler le clavier des coins chauds lorsqu'il est caché? J'aime beaucoup la fonction des coins chauds, mais je reviens souvent à mon bureau et j'active le script seulement pour réaliser que le clavier avait été précédemment caché à cause d'un événement de coin chaud. Ce serait bien si votre script montrait le clavier caché plutôt que de le fermer. En tout cas, merci beaucoup pour votre aide!

-1voto

Loïc Points 1

Une autre solution simple:

tell application "System Events"
    key code 96 using {option down, command down} -- shift-command-F5
end tell

0 votes

Vous devriez ajouter un code de clic de souris cliclick à un emplacement de pixel approprié et également pour le bouton "terminé". Bonus si la case à cocher du clavier est accessible via AppleScript dans la superposition.

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