Script para identificar nivel de indentación con VoiceOver

A la hora de escribir textos para desarrollar aplicaciones en un lenguaje de programación se utilizan una serie de caracteres para indentar el texto separándolo una distancia determinada con respecto al margen izquierdo del documento. Esto se utiliza para estructurar el código del proyecto software y obtener una mejor visualización de las diversas estructuras y áreas del archivo de código. Algunos lenguajes de programación, como Python, utilizan estos caracteres de indentación para definir bucles o subrutinas por lo que la indentación pasa a tomar mayor importancia.

Para indentar un texto se suele utilizar el caracter de espacio o el caracter de tabulación. De esta forma se pueden definir distintos niveles de indentación de forma homogénea.

Los desarrolladores con discapacidad visual que utilizan un lector de pantallas no pueden acceder a esta información de forma habitual. Aunque algunos lectores de pantallas, como las últimas versiones de Jaws, incorporan funciones para identificar cambios en la indentación del texto la mayoría de estos productos de apoyo carecen de herramientas para gestionar este atributo del texto. VoiceOver para OSX carece de esta funcionalidad pero podemos incorporar algo que nos permita consultar el nivel de indentación de una línea de texto gracias a la ampliación de funcionalidad de VoiceOver mediante Apple script.

Script para verificar el nivel de indentación de una línea de texto

Tyflos Accessible Software ha desarrollado un script para VoiceOver el cual devuelve el número de indentación del último texto verbalizado por VoiceOver.

Esta primera versión del script sólo soporta caracteres de tabulación. En futuras versiones se aportará mayor soporte para otros caracteres de indentación.

Puedes descargar el archivo comprimido del script de verificación del nivel de indentación e instalarlo en tu sistema OSX.

Para utilizarlo es necesario activar el soporte de scripts de VoiceOver y añadir un comando para VoiceOver asociado a este script.

Automator, programación simple para usuarios de Mac OSX

Apple en su sistema operativo para ordenadores de escritorio y portátiles, más conocido como Mac OSX, incluye un lenguaje de script para poder realizar operaciones de forma controlada. Este sistema de scripts es conocido como Apple script. Con este sistema se pueden realizar varias operaciones así como ampliar funcionalidades del sistema operativo o algunas aplicaciones. El problema es que es necesario conocer el lenguaje de programación utilizado por Apple script y tener conocimientos de programación.

Apple es cosciente de las limitaciones de muchos usuarios que carecen de los conocimientos necesarios para utilizar Apple script pero conoce la necesidad de proporcionar alguna herramienta que permita a un usuario sin conocimientos en programación crear mecanismos para realizar, de forma automática, tareas monótonas y mecánicas. Por esta razón Apple ha desarrollado Automator.

Automator

Apple describe Automator de la siguiente forma:

Automator es un innovador asistente de procesos de automatización que facilita la automatización de las tareas repetitivas. Con Automator, podrá evitar las tediosas tareas de programar y crear scripts que suelen ser necesarias para crear procesos de automatización. Cada uno de los pasos de un proceso automatizado, denominados acciones, pueden ensamblarse en una tarea completa arrastrando las acciones hasta un flujo de trabajo de Automator. Puede ejecutar los flujos de trabajo finalizados tantas veces como desee e incluso compartirlos con otros usuarios.

De forma resumida podemos decir que Automator es una herramienta de desarrollo para crear macros sencillas utilizando las aplicaciones y servicios del sistema para que el ordenador realice por nosotros las tareas repetitivas y monótonas.

Automator trabaja con acciones y flujos de trabajo simplificando el proceso de crear macros y pequeños scripts.

Flujos de trabajo

Un flujo de trabajo consiste en un conjunto de tareas que deben realizarse en un orden determinado para alcanzar un objetivo. Cada una de estas tareas recibe un elemento, lo manipula, y lo pasa a la siguiente tarea del flujo de trabajo. Un ejemplo de la vida real, por ejemplo, sería el que podemos experimentar a la hora de convertir un documento de texto en un audio que escuchamos en nuestro reproductor MP3. El flujo sería algo similar a lo siguiente: descargamos el documento de texto, lo abrimos con nuestra aplicación de conversión texto a voz, cogemos los archivos MP3 generados y los pasamos a nuestro reproductor MP3 para, posteriormente, comenzar a escuchar el documento donde queramos. En este ejemplo el contenido del documento es el elemento que las distintas tareas manipulan hasta alcanzar el objetivo final.

Acciones

Las acciones son los distintos mecanismos de manipulación que Automator posee. En nuestro ejemplo serían las diversas tareas que realizamos con el contenido del documento. Automator posee una librería de acciones para crear nuestros flujos de trabajo. Esta librería se ve ampliada con cada nueva aplicación instalada en el sistema operativo que incluya compatibilidad con Apple script o Automator. Esto hace que Automator vaya siendo cada vez más potente.

Aprender con un ejemplo

En el ámbito de la programación el camino del aprendizaje suele basarse en la experimentación práctica así que aprendamos Automator con un pequeño ejemplo. Vamos a crear un servicio para el sistema que nos permita convertir ficheros de texto plano en archivos de audio en formato AIF, soportados por el reproductor de MP3 de Apple. De esta forma tendremos un rudimentario sistema para convertir ficheros de texto en audio para escucharlos donde queramos.

Para ayudar a los usuarios con discapacidad visual a seguir este pequeño tutorial se incluirán indicaciones para los usuarios de VoiceOver, el lector de pantallas de Mac OSX para usuarios con discapacidad visual. Aquellos usuarios que no utilicen este producto de apoyo pueden ignorar estas indicaciones.

Primer contacto con Automator

En primer lugar debemos abrir Automator, para ello debemos buscar la aplicación en la carpeta de aplicaciones del sistema.

Una vez abierto nos mostrará un asistente que nos preguntará que tipo de flujo de trabajo queremos crear. La ventana del asistente proporciona una descripción de cada tipo de flujo de trabajo disponible. Si leemos la descripción para el tipo Servicio podremos leer lo siguiente:

Los servicios son flujos de trabajo contextuales disponibles a través de Mac OS X. Aceptan texto o archivos de la aplicación activa o del Finder. Los servicios están disponibles en el menú Servicios

. Esta descripción es la más cercana a lo que necesitamos para nuestro ejemplo por lo que seleccionaremos esta opción y pulsaremos el botón Seleccionar.

El área de trabajo

A continuación nos aparecerá la ventana de trabajo de Automator con el flujo de trabajo Sin título. Ha de recorddarse que Automator es una herramienta de desarrollo por lo que el consumo de recursos para crear flujos de trabajo es grande así que no os asusteis si el equipo empieza a ir lento.

En el centro de la ventana veremos una tabla con las tareas de nuestro flujo de trabajo. Esta tabla es reconocida por voiceOver con el texto Sin título flujo de trabajo. Al profundizar sobre esta tabla encontraremos nuestra primera acción del flujo. Es una tarea de recepción identificada por el texto El servicio recibe la selección de. VoiceOver identificará esta tarea con el texto texto en El servicio recibe la selección de cualquier aplicación Reemplaza el texto seleccionado grupo (1 de 1). Podemos modificar algunos parámetros de esta tarea para ajustarlos a nuestras necesidades. Los usuarios de VoiceOver deberán profundizar en la tarea para cambiar los diversos parámetros que posee.

Ajustando la acción a nuestros requisitos

Para nuestro servicio queremos recibir un documento de texto desde el Finder, que es nuestro explorador de archivos. En el primer parámetro seleccionaremos Documento y para el segundo parámetro seleccionaremos Finder. VoiceOver verbalizará, al leer la tarea, lo siguiente: documentos en El servicio recibe la selección de Finder Reemplaza el texto seleccionado grupo (1 de 1)

Para cambiar el valor de cada parámetro debemos hacer click sobre él y nos aparecerá una lista desplegable con todos los posibles valores.

Añadiendo más acciones

Ahora debemos añadir, a continuación de la acción para recibir el documento, una nueva acción para convertir el fichero de texto plano en un fichero de audio. Mac OSX proporciona un comando del terminal para verbalizar mensajes de voz, es el comando say. Este comando, entre sus parámetros, nos permite crear un fichero de audio en lugar de verbalizar el texto. Es la forma más rápida para convertir un texto a audio. Por esta razón utilizaremos para este ejemplo este comando del terminal.

Para poder añadir comandos del terminal en nuestro flujo de trabajo debemos utilizar una acción de tipo Ejecutar el script Shell. Para ello nos dirigiremos a la biblioteca de acciones, los usuarios de VoiceOver deben profundizar en el elemento vista dividida de descripción de acciones dividir grupo y, posteriormente, profundizar sobre vista dividida de biblioteca de acciones dividir grupo. Encontraremos una tabla de la biblioteca de acciones y una tabla de acciones. En la segunda tabla se mostrarán las acciones asociadas a la categoría que representa la primera tabla. Para nuestra acción debemos elegir la categoría Utilidades en la primera tabla, así podremos seleccionar el elemento Ejecutar el script Shell. Pulsa Enter para añadir esta nueva acción a nuestro flujo de trabajo.

Ahora debemos ajustar la nueva acción para que ejecute un pequeño script del terminal que convierta el documento de texto a un archivo de audio utilizando el comando say. La acción de ejecución del script, identificada por VoiceOver como Ejecutar el script Shell acción (2 de 2), debe recibir algunas modificaciones para que se adapte a nuestros requisitos. El parámetro Pasar datos de entrada:, con valor por defecto a string, debe tener el valor como argumentos. A continuación de dicho parámetro hay un campo de texto donde se ve un pequeño script de consola por defecto. El código por defecto del script es el siguiente:


for f in "$@"
do
echo "$f"
done

Podemos editar el código para modificar el comando echo o sustituir todo el script por el siguiente código:

Nuestro flujo de trabajo está terminado. Ahora debemos guardarlo utilizando la opciem>Guardar del menú Archivo de la barra de menú. Nos preguntará por un nombre para nuestro flujo de trabajo, podemos nombrarla como Convertir a voz

Una vez guardado pertenecerá a los servicios de Finder. Cerremos Automator y busquemos en Finder un archivo de texto plano. Al utilizar el menú contextual del archivo, los usuarios de voiceOver deben utilizar la combinación Control+ALT+Mayúsculas+M y el resto de usuarios hacer click con el botón derecho, nos aparece una opción con el nombre de nuestro flujo de trabajo. Al seleccionar esta opción comenzará a ejecutarse nuestro flujo de trabajo, visualmente se verá una rueda dentada trabajando, los usuarios de VoiceOver no tendrán ningún tipo de feedback. El proceso tardará dependiendo del tamaño del archivo que queramos convertir.

Hay muchas mejoras que se le pueden hacer a este flujo de trabajo: soportar documentos en formato RTF, poder seleccionar otra voz, añadir un feedback para los usuarios de VoiceOver, etc. Pero como iniciación a Automator creo que es suficiente.