Participa en un estudio sobre seguridad online para personas ciegas y con discapacidad visual

Se está realizando un estudio exploratorio para ayudar a detectar y comprender qué problemas tienen las personas ciegas y con discapacidad visual cuando utilizan sistemas de seguridad online.

Este cuestionario es parte de un trabajo de investigación de doctorado que está realizando Suzanna Schmeelk en la Universidad de York, supervisada por la profesora Helen Petrie, y en colaboración con la profesora Lourdes Moreno, de la Universidad Carlos III de Madrid.

En investigaciones posteriores, se profundizará en los problemas encontrados para proponer soluciones más accesibles.

Si eres una persona con discapacidad visual puedes participar rellenando el cuestionario del estudio.

Controlar qué programas se inician al arrancar tu Mac

En MacOS, como en otros sistemas operativos, existen varias formas en las que una aplicación puede solicitar ejecutarse al iniciar sesión.

Un usuario puede controlar qué aplicaciones han solicitado arrancarse junto con el sistema. Para ello sólo debemos ir a las Preferencias del sistema, entrar en el panel de Usuarios y grupos y en el selector de pestaña activar la pestaña llamada Items de inicio. En esa pestaña encontraremos una tabla con todas las aplicaciones que se arrancarán cuando se inicie la sesión de un usuario.

El problema es que este panel sólo da acceso a modificar la configuración de arranque de un usuario en concreto y sólo controla las aplicaciones que hayan solicitado el arranque con la sesión de un usuario. Pero si se han instalado servicios o aplicaciones que afectan a todo el sistema no aparecerán en esa tabla.

Finder al rescate

Lo interesante de utilizar un sistema operativo como MacOS es que todas las configuraciones son ficheros o elementos en carpetas. Sólo hay que conocer en qué carpeta buscar y qué podemos encontrar en esas carpetas.

Para poder examinar esas carpetas simplemente debemos ir a Finder y en la barra de menú buscar el menú Ir a y activar la opción Ir a la carpeta … e introducir la ruta a la carpeta que queremos examinar.

 

Servicios para drivers y servicios de seguridad

En MacOS, como en Unix, existen unos servicios especiales que se denominan daemons. Estos servicios carecen de interfaz de usuario y suelen encargarse de que algo funcione bien. Algunos de estos daemons se encargan de mantener la seguridad en las comunicaciones, que la cámara, el micrófono u otros periféricos multimedia estén siempre disponibles para cuando los necesite el usuario no haya ningún tipo de demora.

Todos estos daemons declaran su arranque al iniciar nuestro equipo en una carpeta determinada. En MacOS, por motivos de seguridad, los daemons incluidos por Apple tienen una carpeta segura y específica y los servicios de terceros utilizan otra carpeta.

Para los daemons de Apple tenemos la carpeta /System/Library/LaunchDaemons.

En esa carpeta encontraremos diversos elementos que lo que hacen es iniciar el daemon para que el sistema mantenga un control. Es recomendable no tocar en esta carpeta sin tener una copia de seguridad previa ya que estos daemons permiten usar bastantes elementos del hardware de nuestro equipo y puede que si rompemos algo tengamos que iniciar una sesión en modo a prueba de fallos y la accesibilidad puede no estar disponible.

Para los daemons de compañías distintas a Apple tenemos la carpeta /Library/LaunchDaemons

En esta carpeta podemos encontrar servicios que arrancan el soporte de análisis de Adobe, los servicios de configuración de auriculares USB, servicios de actualización de software de Microsoft o Google o el servicio de arranque rápido de Zoom.

Para hacer que un servicio deje de arrancar con nuestro equipo simplemente debemos sacarlo de la carpeta /Library/LaunchDaemons

Servicios de arranque de aplicaciones

Puede que un servicio lo que realice es arrancar una aplicación. Esto sucede por ejemplo con las aplicaciones de OneDrive, Dropbox, Amazon Music o Amazon Chime.

Estos servicios de arranque de aplicaciones se localizan en dos carpetas:

La primera afecta a todos los usuarios y su ruta es /Library/LaunchAgents

La segunda carpeta es para cada usuario en concreto y la ruta para el usuario actual es ~/Library/LaunchAgents

Para evitar que un programa arranque simplemente deberemos borrar el servicio que lo arranca de la carpeta de launch-agent correspondiente.

Obtener el listado de voces disponibles para el comando say en MacOS

El comando say se utiliza en MacOS tanto desde la terminal como desde AppleScript para hacer que una de las voces instaladas en el sistema operativo lea una información.

Vimos un ejemplo en la introducción a AppleScript en el que hacíamos hablar a nuestro Mac desde un AppleScript.

Usando say desde la Terminal

Usar el comando say desde la terminal es bastante sencillo. Vamos a ver el típico ejemplo de Hola mundo con la Terminal.

Abre la Terminal de Mac, está en la carpeta Aplicaciones/Utilidades

Una vez abierta escribe el siguiente comando:

say '¡Hola mundo!'

Al ejecutar el comando el equipo verbalizará el mensaje con la voz por defecto del sistema.

Si queremos usar una voz en concreto tenemos que especificarlo utilizando su nombre precedido del indicador -v. Por ejemplo utilicemos la voz de Monica en el ejemplo anterior:

say -v Monica '¡Hola mundo!'

El problema aparece cuando no conocemos el nombre de la voz concreta que queremos utilizar. Para ello el mismo comando say nos ofrece la solución.

Al usar el comando say de la siguiente forma se mostrará un listado de voces en la Terminal:

say -v \?

El listado será algo como lo siguiente:

  • Alex en_US # Most people recognize me by my voice.
  • Alice it_IT # Salve, mi chiamo Alice e sono una voce italiana.
  • Alva sv_SE # Hej, jag heter Alva. Jag är en svensk röst.
  • Amelie fr_CA # Bonjour, je m’appelle Amelie. Je suis une voix canadienne.
  • Anna de_DE # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
  • Carmit he_IL # שלום. קוראים לי כרמית, ואני קול בשפה העברית.
  • Damayanti id_ID # Halo, nama saya Damayanti. Saya berbahasa Indonesia.
  • Daniel en_GB # Hello, my name is Daniel. I am a British-English voice.
  • Diego es_AR # Hola, me llamo Diego y soy una voz española.
  • Ellen nl_BE # Hallo, mijn naam is Ellen. Ik ben een Belgische stem.
  • Fiona en-scotland # Hello, my name is Fiona. I am a Scottish-English voice.
  • Fred en_US # I sure like being inside this fancy computer
  • Ioana ro_RO # Bună, mă cheamă Ioana . Sunt o voce românească.
  • Joana pt_PT # Olá, chamo-me Joana e dou voz ao português falado em Portugal.
  • Jorge es_ES # Hola, me llamo Jorge y soy una voz española.
  • Juan es_MX # Hola, me llamo Juan y soy una voz mexicana.
  • Kanya th_TH # สวัสดีค่ะ ดิฉันชื่อKanya
  • Karen en_AU # Hello, my name is Karen. I am an Australian-English voice.
  • Kyoko ja_JP # こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
  • Laura sk_SK # Ahoj. Volám sa Laura . Som hlas v slovenskom jazyku.
  • Lekha hi_IN # नमस्कार, मेरा नाम लेखा है. मैं हिन्दी में बोलने वाली आवाज़ हूँ.
  • Luca it_IT # Salve, mi chiamo Luca e sono una voce italiana.
  • Luciana pt_BR # Olá, o meu nome é Luciana e a minha voz corresponde ao português que é falado no Brasil
  • Maged ar_SA # مرحبًا اسمي Maged. أنا عربي من السعودية.
  • Mariska hu_HU # Üdvözlöm! Mariska vagyok. Én vagyok a magyar hang.
  • Mei-Jia zh_TW # 您好,我叫美佳。我說國語。
  • Melina el_GR # Γεια σας, ονομάζομαι Melina. Είμαι μια ελληνική φωνή.
  • Milena ru_RU # Здравствуйте, меня зовут Milena. Я – русский голос системы.
  • Moira en_IE # Hello, my name is Moira. I am an Irish-English voice.
  • Monica es_ES # Hola, me llamo Monica y soy una voz española.
  • Nora nb_NO # Hei, jeg heter Nora. Jeg er en norsk stemme.
  • Paulina es_MX # Hola, me llamo Paulina y soy una voz mexicana.
  • Rishi en_IN # Hello, my name is Rishi. I am an Indian-English voice.
  • Samantha en_US # Hello, my name is Samantha. I am an American-English voice.
  • Sara da_DK # Hej, jeg hedder Sara. Jeg er en dansk stemme.
  • Satu fi_FI # Hei, minun nimeni on Satu. Olen suomalainen ääni.
  • Sin-ji zh_HK # 您好,我叫 Sin-ji。我講廣東話。
  • Tessa en_ZA # Hello, my name is Tessa. I am a South African-English voice.
  • Thomas fr_FR # Bonjour, je m’appelle Thomas. Je suis une voix française.
  • Ting-Ting zh_CN # 您好,我叫Ting-Ting。我讲中文普通话。
  • Veena en_IN # Hello, my name is Veena. I am an Indian-English voice.
  • Victoria en_US # Isn’t it nice to have a computer that will talk to you?
  • Xander nl_NL # Hallo, mijn naam is Xander. Ik ben een Nederlandse stem.
  • Yelda tr_TR # Merhaba, benim adım Yelda. Ben Türkçe bir sesim.
  • Yuna ko_KR # 안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.
  • Yuri ru_RU # Здравствуйте, меня зовут Yuri. Я – русский голос системы.
  • Zosia pl_PL # Witaj. Mam na imię Zosia, jestem głosem kobiecym dla języka polskiego.
  • Zuzana cs_CZ # Dobrý den, jmenuji se Zuzana. Jsem český hlas.

Curso de autoformación en lectura fácil

La lectura fácil es un método por el cual un contenido textual se puede adaptar para que resulte comprensible a todas las personas, en especial aquellas personas con problemas de comprensión del lenguaje escrito.

Esta herramienta de accesibilidad va poco a poco apareciendo cada vez más en las publicaciones digitales y culturales y ha demostrado ser una buena herramienta de accesibilidad.

La gente de Plena inclusión ha puesto a disposición de todas las personas interesadas un curso de autoformación sobre lectura fácil.

Plena inclusión es un movimiento asociativo que lucha en España por los derechos de las personas con discapacidad intelectual o del desarrollo y sus familias.

Datos del curso

Este curso on-line de 10 horas de duración está dirigido a empresas, familias, personas con discapacidad y profesionales de la accesibilidad.

Su objetivo es el de que la persona pueda Adquirir unos conocimientos básicos sobre la lectura fácil y sus normas de aplicación.

Puedes ver la presentación realizada por Susana Gallego en Youtube.

Su temario es el siguiente:

  • Tema 1. Qué es la lectura fácil.
  • Tema 2. Como se hace la lectura fácil.
  • Tema 3. Pautas del texto.
  • Tema 4. Diseño.

Apuntarse al curso

El curso es gratuito y la plataforma de formación es bastante accesible.

Puedes apuntarte en la sección de formación de Plena inclusión.

Conoce el nivel de indentación del texto con VoiceOver de forma automática

VoiceOver para MacOS es incapaz de conocer y notificar el nivel de indentación del texto. Por esa razón en su día desarrollé un script que puede averiguar y verbalizar esta información. 

Este script está disponible en el repositorio de Indentation line for VoiceOver.

Usando el script manual

En este repositorio está el fichero speakIndentationLine que contiene el AppleScript para que VoiceOver verbalice el nivel de indentación del último texto verbalizado por el lector de pantallas.

Este script debía asociarse a un atajo de teclado de VoiceOver para poderlo utilizar de forma cómoda pero incluso así existía la posibilidad de perdernos un cambio de indentación debido a que debíamos revisar manualmente cada línea de un texto para conocer si había algún cambio en el nivel de indentación.

Automatizando la funcionalidad

Para solucionar el problema se ha creado un nuevo script en el repositorio llamado checkIndentationService que ejecuta la función de verificar el nivel de indentación de forma automática y sólo se verbaliza cuando se han producido cambios en el nivel de indentación.

Para que este script se ejecute de forma apropiada es necesario exportar el script como aplicación y asegurarnos que en la conversión esté marcada la opción Permanecer abierto tras el gestor de ejecución. Puedes leer sobre el proceso en el artículo Convertir un AppleScript en una aplicación para MacOS.

Una vez convertido tendremos la opción de abrir la aplicación checkIndentationService y VoiceOver verbalizará cada nuevo cambio de nivel de indentación de un texto.

Recuerda leer el fichero Readme.md del repositorio para saber cómo cambiar la voz que se utiliza para hacer las notificaciones.

Código limpio con comentarios útiles

Un código con buenos comentarios ayuda a su legibilidad como vimos en el artículo sobre cómo escribir código limpio y legible.

Cada bloque de código tiene un propósito, puede recibir parámetros y puede devolver un resultado. Toda esta información debería estar explicada brevemente en un bloque comentado, preferentemente antes de los bloques de ejecución. Por ejemplo:

// Función calculaPrecioFinalDeCarrito

//    Calcula el precio final del carrito ajustando impuestos y conversión de moneda

//

// Entrada:

//    lista de productos, tipo de impuestos, tipo de moneda

// Salida:

//    precio final a pagar por el cliente

function calculaPrecioFinalDeCarrito(listaProductos, tipoDeImpuestos, tipoMoneda) {

    var precioSinImpuestos = calculaPrecioDeListaDeProductos(listaProductos)

    var precioConImpuestos = calculaImpuestos(precioSinImpuestos, tipoDeImpuestos)

    var precioFinal = convierteAMoneda(precioConImpuestos, tipoMoneda)

    return precioFinal

}

Pero se debe ser breve y evitar comentar todo lo que hace el código línea a línea explicando sólo lo esencial.

Se debe explicar el porqué de las cosas y no cómo se hacen. Un buen código se da a entender por sí solo y no necesita extensos comentarios para ello.