¿Cómo puedo escribir un script para activar el teclado de accesibilidad presente en macOS High Sierra?
Por supuesto, es posible hacer esto yendo a Preferencias del sistema> Accesibilidad> Teclado> Teclado de accesibilidad> "Habilitar teclado de accesibilidad", pero esto requiere varios clics. Me gustaría una secuencia de comandos que se pueda iniciar desde el Dock, ya que uso con frecuencia 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 aplicación 'Preferencias del sistema'".
Si elimino los dos últimos click
comandos, la secuencia de comandos no produce un error, pero tampoco parece hacer clic en el elemento de interfaz de usuario "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, también sería útil.
Nota de actualización: esta respuesta se escribió originalmente antes del lanzamiento de macOS Mojave y, como tal, para usarla en macOS Mojave , deberá cambiar tres líneas de código .
Cambiar:
select table 1 of scroll area 2
select row 16 of table 1 of scroll area 2
tell tab group 1
A:
select table 1 of scroll area 1
select row 16 of table 1 of scroll area 1
tell tab group 1 of group 1
El siguiente código AppleScript de ejemplo me funciona en 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é el código AppleScript de ejemplo como una aplicación , denominada Accessibility Keyboard.app , en la carpeta Aplicaciones .
A continuación, agregué Accessibility Keyboard.app a: Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad
Ahora puedo abrir el Teclado de accesibilidad fácilmente a través de Spotlight , o la aplicación Teclado de accesibilidad se puede arrastrar y soltar en el Dock para que se inicie allí.
Mi ejemplo original de código AppleScript 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 código AppleScript de ejemplo explica si el teclado de accesibilidad ya se muestra o no y, de ser así, lo cierra.
Tenga en cuenta que, si bien esto cierra el teclado de accesibilidad si se muestra, hay un rebote adicional en el mosaico de la base de las preferencias del sistema y no es más que una distracción visual secundaria.
Ejemplo de código AppleScript :
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 no es necesario que las Preferencias del sistema estén visibles para que esto funcione y por qué no hay ningún activate
comando en el código AppleScript de ejemplo . Además, si las Preferencias del sistema ya están abiertas, primero se cierran 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 indicó y, en segundo lugar, ver los eventos de la interfaz de usuario procesados es una distracción visual y puede ser molesto.
También tenga en cuenta que es posible que sea necesario ajustar el valor de los delay
comandos para su sistema y que es posible que se necesiten o no delay
comandos adicionales. Ajuste los valores de y o agregue/elimine los delay
comandos según corresponda.
Tenga en cuenta que una vez que la aplicación se agrega a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad y se modifica a partir de entonces, deberá desmarcarla y volver a marcarla para permitir que se procesen los nuevos cambios.
Nota: El código AppleScript de ejemplo es solo eso y no emplea ningún manejo de errores y solo pretende mostrar una de las muchas formas de realizar una tarea. La responsabilidad siempre recae sobre el Usuario para agregar/usar el manejo de errores apropiado según sea necesario/deseable.
Basado en su excelente trabajo anterior, aquí hay un
Características
Enhanced Application Object Model
Código 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: alternar-accesibilidad-teclado-macos
Espero sus comentarios, Saludos, S
Otra solución sencilla:
tell application "System Events"
key code 96 using {option down, command down} -- shift-command-F5
end tell
henry deyoung
click
en lugar deselect
y no usardelay
s? ¿En qué se diferencianclick
y en quéselect
se diferencian?usuario3439894
usuario3439894
select
establece el foco en un objeto mientrasclick
acciona el objeto. La conclusión es que las diferencias, según corresponda o sea necesario en cualquier escenario de caso de uso particular, se vuelven más evidentes con la experiencia en el uso de AppleScript UI Scripting.usuario3439894
delay
comando , esto es necesario en algunos casos de uso y no en otros, obviamente, si algo falla y es un problema de tiempo, entonces es necesario un retraso. A menudo, con UI Scripting, los retrasos son necesarios, pero no siempre.henry deyoung
select
vs.click
tiene sentido. Para no tener que depender siempre de la generosidad de personas como usted, ¿existe algún tutorial/documentación bueno para las secuencias de comandos de la interfaz de usuario de AppleScript que me recomiende?usuario3439894
usuario3439894
select table 1 of scroll area 2
,select row 16 of table 1 of scroll area 2
,tell tab group 1
a lo siguiente:select table 1 of scroll area 1
,select row 16 of table 1 of scroll area 1
,tell tab group 1 of group 1