AppleScript per accendere la tastiera di accessibilità in alta montagna

1

Come posso scrivere uno script per attivare la tastiera di accessibilità presente in macOS High Sierra?

Ovviamente è possibile farlo andando su Preferenze di Sistema > Accessibilità > Tastiera > Tastiera accessibilità > "Abilita tastiera Accessibilità", ma richiede un numero di clic. Vorrei uno script che può essere lanciato dal Dock, dal momento che utilizzo spesso la tastiera Accessibility.

Un'idea è usare AppleScript; un'altra idea è trovare il binario Accessibility Keyboard e usare uno script di shell per aprirlo.

Ecco il mio tentativo di un AppleScript:

tell application "System Preferences"
    activate
    reveal (pane id "com.apple.preference.universalaccess")
end tell

tell application "System Events" to tell application process "System Preferences"
    tell window "Accessibility"
        click UI element "Keyboard" of row 16 of table 1 of scroll area 2
        click button "Accessibility Keyboard"
        click checkbox "Enable Accessibility Keyboard"
    end tell
end tell

Questo script ha esito negativo con l'errore: "Gli eventi di sistema hanno ricevuto un errore: impossibile accedere al pulsante" Tastiera accessibilità "della finestra" Accessibilità "del processo di applicazione" Preferenze di sistema "."

Se rimuovo gli ultimi due comandi click , lo script non genera un errore, ma non sembra che faccia clic sull'elemento dell'interfaccia utente "Tastiera".

Che cosa sto sbagliando? Mi scuso se questa è una domanda stupida; questo è il mio primo AppleScript.

O se qualcuno conosce la posizione del binario Accessibility Keyboard, sarebbe utile anche.

    
posta Henry DeYoung 26.02.2018 - 22:22
fonte

2 risposte

1

Il seguente esempio codice AppleScript funziona per me in macOS High Sierra :

if running of application "System Preferences" then
    quit application "System Preferences"
    delay 1
end if
tell application "System Preferences"
    reveal pane id "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events"
        tell window 1 of application process "System Preferences"
            select table 1 of scroll area 2
            delay 0.1
            select row 16 of table 1 of scroll area 2
            delay 0.1
            tell tab group 1
                click radio button "Accessibility Keyboard"
                delay 0.1
                click checkbox "Enable Accessibility Keyboard"
            end tell
        end tell
    end tell
    quit
end tell

In Script Editor , ho salvato example AppleScript code come applicazione , denominato Accessibilità Keyboard.app , nella cartella Applicazioni .

Successivamente, ho aggiunto Accessibility Keyboard.app a: Preferenze di sistema > Sicurezza e amp; Privacy > Privacy > Accessibilità

Ora posso visualizzare facilmente Tastiera per l'accessibilità tramite Spotlight oppure Accessibilità Keyboard.app può essere trascinato su < strong> Dock in modo da essere lanciato lì.

Aggiornamento:

Il mio originale esempio codice AppleScript è stato adattato all'apertura della Tastiera per l'accessibilità , non alla chiusura. In quanto tale, se è aperto e lo script originale viene eseguito di nuovo, viene eliminato. La seguente versione degli account esempio AppleScript codice per indicare se la Tastiera per l'accessibilità è già visualizzata e se è così , lo chiude.

Nota che mentre questo chiude la Tastiera di accessibilità se viene visualizzata, c'è un rimbalzo aggiunto a Riquadro di ancoraggio di Preferenze di sistema e non è ed emette altro quindi una distrazione visiva secondaria.

Esempio AppleScript codice :

if running of application "System Preferences" then
    quit application "System Preferences"
    delay 1
end if
tell application "System Preferences"
    reveal pane id "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events"
        tell window 1 of application process "System Preferences"
            select table 1 of scroll area 2
            delay 0.1
            select row 16 of table 1 of scroll area 2
            delay 0.1
            tell tab group 1
                click radio button "Accessibility Keyboard"
                delay 0.1
                if value of checkbox "Enable Accessibility Keyboard" is 0 then
                    click checkbox "Enable Accessibility Keyboard"
                else
                    click checkbox "Enable Accessibility Keyboard"
                    delay 1
                    my clickOK()
                end if
            end tell
        end tell
    end tell
    quit
end tell

on clickOK()
    tell application "System Events" to click button "OK" of window 1 of application process "System Preferences"
end clickOK

Tieni presente che Preferenze di sistema non deve essere visibile affinché funzioni e perché non ci sia activate comando nell'esempio Codice AppleScript . Inoltre, se Preferenze di sistema è già aperto, viene prima chiuso prima che venga elaborato il resto del codice . Questo viene fatto per un paio di motivi, il primo dei quali è già stato affermato e in secondo luogo vedere gli UI degli eventi elaborati è una distrazione visiva e può essere fastidioso.

Nota anche che il valore dei delay comandi potrebbe dover essere regolato per il tuo sistema, o altri delay comandi potrebbe o non potrebbe essere necessario. Regola valori di e o aggiungi / rimuovi i delay comandi come appropriato.

Ricorda che una volta che l'app è stata aggiunta a Preferenze di sistema > Sicurezza e amp; Privacy > Privacy > Accessibilità e successivamente modificato, dovrai deselezionarlo e ricontrollarlo affinché le nuove modifiche possano essere elaborate.

Nota: il esempio codice AppleScript è proprio questo e non impiega alcuna gestione degli errori e si intende solo per mostrare uno dei molti modi in cui eseguire un compito. L'onere è sempre sull'utente di aggiungere / utilizzare la gestione degli errori appropriata come necessario / voluto.

    
risposta data 27.02.2018 - 17:37
fonte
1

In base al tuo eccellente lavoro precedente, ecco un

Versione 2018 aggiornata

Funzioni

  • Funziona senza ritardi arbitrari
  • Funziona come interruttore (mostra / nasconde in base allo stato della tastiera)
  • Mantiene lo stato dell'app System Preferences
  • Utilizza le mele Enhanced Application Object Model

Sourcecode

(*
 * toggle-macos-accessibility-keyboard
 * applescript
 *
 * description:
 * macOS automation script to toggle the macOS Accessibility Keyboard.
 * Shows and hides the keyboard depending on its current state.
 *
 * author: sidneys
 * homepage: http://sidneys.github.io
 * version: 2.0.1
 * license: MIT
 *)

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

-- Persist start-up state of the "System Preferences" app
set didRunSystemPreferences to (get running of application "System Preferences")

-- Initialize storage for the checkbox value
set initialCheckboxValue to -1
set currentCheckboxValue to -1

-- Show "Keyboard" pane within the Accessibility preferences
tell application "System Preferences"
    reveal anchor 2 of pane id "com.apple.preference.universalaccess"
end tell

-- Start automated interaction
tell application "System Events"

    -- Wait for: System Preferences Window
    repeat until tab group 1 of window 1 of process "System Preferences" exists
    end repeat

    -- Wait for: Settings Pane
    repeat until (name of second radio button of tab group 1 of window 1 of process "System Preferences") is "Accessibility Keyboard"
    end repeat

    -- Select the "Accessibility Keyboard" Segmented Control
    click radio button 2 of tab group 1 of window 1 of process "System Preferences"

    -- Tick the "Enable Accessibility Keyboard" checkbox, remembering its before/after value
    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"

    -- Did the checkbox value change?
    if initialCheckboxValue is currentCheckboxValue then
        -- No - Wait for: confirmation dialog
        repeat until sheet 1 of window 1 of process "System Preferences" exists
        end repeat
        -- Dismiss dialog
        click button 1 of sheet 1 of window 1 of process "System Preferences"
    end if

end tell

-- Did the "System Preferences" app run on start-up?
if not didRunSystemPreferences then
    -- No - Quit
    quit application "System Preferences"
else
    -- Yes - Return to the overview screen
    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

Repository

Forna Gist a GitHub: toggle-accessibility-keyboard-macos

In attesa di feedback, Saluti, S

    
risposta data 26.05.2018 - 16:19
fonte

Leggi altre domande sui tag