AppleScript para activar el teclado de accesibilidad en High Sierra

1

¿Cómo puedo escribir un script para activar el teclado de accesibilidad presente en macOS High Sierra?

Por supuesto, es posible hacerlo al ir a Preferencias del sistema > Accesibilidad > Teclado > Teclado de accesibilidad > "Habilitar el teclado de accesibilidad", pero esto requiere varios clics. Me gustaría un script que se pueda iniciar desde el Dock, ya que con frecuencia uso el teclado de accesibilidad.

Una idea es usar AppleScript; otra idea es encontrar el binario del teclado de accesibilidad y usar un script de shell para abrirlo.

Aquí está mi intento de 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

Este script falla con el error: "Los eventos del sistema obtuvieron un error: no se puede obtener el botón 'Teclado de accesibilidad' de la ventana 'Accesibilidad' del proceso de la aplicación 'Preferencias del sistema'". "

Si elimino los dos últimos comandos click , la secuencia de comandos no produce un error, pero tampoco parece que haga clic en el elemento de la IU "Teclado".

¿Qué estoy haciendo mal? Disculpas si esta es una pregunta estúpida; este es mi primer AppleScript.

O si alguien conoce la ubicación del binario del teclado de accesibilidad, eso también sería útil.

    
pregunta Henry DeYoung 26.02.2018 - 22:22

2 respuestas

1

El siguiente ejemplo AppleScript código funciona para mí bajo 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

En Script Editor , guardé ejemplo AppleScript código como aplicación , llamado Accesibilidad Keyboard.app , en la carpeta Aplicaciones .

A continuación, agregué Accesibilidad Keyboard.app a: Preferencias del sistema > Seguridad & Privacidad > Privacidad > Accesibilidad

Ahora puedo abrir el Teclado de accesibilidad fácilmente a través de Spotlight , o el Teclado de accesibilidad.app se puede arrastrar y soltar en el < fuerte> Dock para ser lanzado para allí.

Actualización:

Mi ejemplo original AppleScript código estaba orientado a abrir el Teclado de accesibilidad , no a cerrarlo. Como tal, si está abierto y el script original se ejecuta nuevamente, se produce un error. La siguiente versión del ejemplo AppleScript código explica si el Teclado de accesibilidad ya se muestra o no. , lo cierra.

Note pensó que si bien esto cierra el Teclado de accesibilidad si se muestra, hay un rebote agregado a Dock Tile de Preferencias del sistema y No es un problema que no sea una distracción visual secundaria.

Ejemplo AppleScript código :

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

Tenga en cuenta que Preferencias del sistema no necesita estar visible para que esto funcione y por qué no hay un comando activate en el ejemplo AppleScript código . Además, si Preferencias del sistema ya está abierto, primero se cierra antes de que se procese el resto del código . Esto se hace por un par de razones, la primera de las cuales ya se mencionó y, en segundo lugar, ver los eventos de IU procesados es una distracción visual y puede ser molesto.

También tenga en cuenta que el valor de los comandos delay puede necesitar un ajuste para su sistema, y / o comandos adicionales delay Puede o no ser necesario. Ajuste valores de y / o agregue / elimine los comandos delay según corresponda.

Ten en cuenta que una vez que se haya agregado aplicación a Preferencias del sistema > Seguridad & Privacidad > Privacidad > Accesibilidad y, posteriormente, modificado, deberá desmarcarlo y volver a marcarlo para que se puedan procesar los nuevos cambios.

Nota: El ejemplo AppleScript código es solo eso y no emplea ningún manejo de errores y está destinado solo a mostrar una de las muchas maneras en que se puede realizar una tarea. La responsabilidad recae siempre sobre el Usuario para agregar / usar el manejo de errores según sea necesario / deseado.

    
respondido por el user3439894 27.02.2018 - 17:37
1

Basado en su excelente trabajo anterior, aquí hay un

Versión actualizada de 2018

Características

  • Funciona sin demoras arbitrarias
  • Funciona como un conmutador (muestra / oculta dependiendo del estado del teclado)
  • Conserva el estado de la aplicación de Preferencias del Sistema
  • utiliza manzanas Enhanced Application Object Model

Código de fuente

(*
 * 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

Repositorio

Fork the Gist en GitHub: toggle-accessibility-keyboard-macos

Esperamos sus comentarios, Aclamaciones, S

    
respondido por el sidneys 26.05.2018 - 16:19

Lea otras preguntas en las etiquetas