es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Automatizar VoiceOver controlado por AppleScript

Estoy intentando encontrar una forma de automatizar la comprobación de la opción “Permitir que VoiceOver sea controlado con AppleScript” en la aplicación “VoiceOver Utility” para que VoiceOver pueda ser controlado por AppleScript. Específicamente para su uso en flujos de trabajo de GitHub Actions en macOS.

De lo que puedo ver, si esta opción está habilitada o no está determinada por la presencia de un archivo “/private/var/db/Accessibility/.VoiceOverAppleScriptEnabled” (que contiene el carácter único ‘a’ – según lo determinado al analizar “VoiceOver Utility” / “ScreenReaderCore.framework”), pero este directorio tiene SIP, por lo que escribir el archivo no es posible (desactivar SIP no es una opción).

También parece que intentar importar un archivo “.voprefs” con la clave “SCREnableAppleScript” establecida en true simplemente se ignora.

Los intentos de hacer un script de IU para hacer clic en la casilla de verificación parecen no hacer nada en las acciones GitHub para los entornos macOS-11 o macOS-10.15, y las capturas de pantalla del estado final parecen indicar que no ha sucedido nada en absoluto (la casilla de verificación permanece sin marcar, no hay señales de una ventana emergente de SecurityAgent, etc.). Por completitud, aquí está el script que he intentado:

delay 2

log "Starting AppleScript..."

do shell script "mkdir -p ./screenshots"
do shell script "screencapture ./screenshots/starting.png"

log "Activating VoiceOver Utility..."
tell application "VoiceOver Utility" to activate

delay 1

tell application "System Events"
    repeat while not (exists window 1 of application process "VoiceOver Utility")
        delay 0.1
    end repeat

    do shell script "screencapture ./screenshots/activated.png"

    log "Ticking checkbox..."

    tell application process "VoiceOver Utility"
        repeat until (exists checkbox 2 of splitter group 1 of window 1)
            delay 0.1
        end repeat

        click checkbox 2 of splitter group 1 of window 1
    end tell

    delay 2

    do shell script "screencapture ./screenshots/checkbox.png"
end tell

log "Quiting VoiceOver Utility..."
tell application "VoiceOver Utility"
  quit
end tell

¿Alguna idea?!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución podría ser utilizar el comando defaults para habilitar la configuración de VoiceOverAppleScriptEnabled en las preferencias de Accesibilidad. El comando se vería algo así:

    defaults write /Library/Preferences/com.apple.Accessibility VoiceOverAppleScriptEnabled -bool true
    

    Este comando debería habilitar la casilla “Permitir controlar VoiceOver con AppleScript” en la aplicación Utilidad VoiceOver. Puedes agregar este comando a tus flujos de trabajo de GitHub actions en macOS para automatizar el proceso.

    Nota: Es posible que necesites ejecutar este comando como usuario root o con privilegios elevados.

Comments are closed.