Nuevo marco legal en España para la accesibilidad

La Ley 11/2023, de 8 de mayo, que traspone en España la Ley Europea de Accesibilidad, entra en vigor el 28 de junio de 2025.
Esta ley define unos nuevos requisitos de accesibilidad a productos y servicios de uso por parte de la ciudadanía europea.
Esta ley es de obligado cumplimiento para todo tipo de entidades —públicas y privadas que ofrezcan productos y servicios de necesidad, empresas de más de 10 empleados o más de 2 millones de euros de facturación anual. También las pequeñas empresas que ofrezcan servicios al sector público o trabajen con subvenciones europeas o estatales.
El incumplimiento puede suponer multas de hasta un millón de euros. 

Esta ley implica que los productos y servicios digitales deben cumplir WCAG 2.1 nivel AA (a través de la norma UNE‑EN 301 549) proporcionando estructuras semánticas, navegación de teclado, textos alternativos, subtítulos, diseño adaptable y el resto de elementos y criterios de accesibilidad definidos en WCAG. En el caso de dispositivos hardware deben cumplir con otras normas de accesibilidad y ergonomía.

¿Qué es la European Accessibility Act?

La European Accessibility Act (EAA) es la directiva europea 2019/882, adoptada en abril de 2019, cuyo objetivo es armonizar los requisitos de accesibilidad en los Estados miembro, eliminando barreras para productos y servicios esenciales.

Aplica a productos y servicios de uso cotidiano, especialmente útiles para personas con discapacidad o personas mayores.
Esto afecta a páginas web, aplicaciones móviles y de escritorio, servicios digitales, dispositivos móviles, electrodomésticos, cajeros automáticos, máquinas expendedoras de billetes y tickets, publicaciones digitales, libros electrónicos y plataformas de e‑commerce.

Plazos clave

Esta ley define los siguientes plazos para cumplir con los criterios de accesibilidad en productos y servicios:
• 28 de junio de 2025: las empresas deben cumplir con la EAA para productos y servicios nuevos.
• 28 de junio de 2030: finaliza el periodo transitorio para productos y servicios existentes europeos.

Programación táctil para personas ciegas con Code Jumper

Code Jumper es un juguete físico que facilita el aprendizaje de los conceptos de la programación a personas ciegas.
Este proyecto ha sido desarrollado por Microsoft en colaboración con American Printing House for the Blind (APH).
Consiste en un sistema físico de piezas llamadas micro‑pods conectadas entre ellas mediante cables para definir un flujo de programa. Cada micro pod representa una operación o función de programación(Play, Loop, Selection, etc)
Una vez se hayan completado las conexiones entre piezas y cables para construir un programa, luego se puede reproducir mediante sonidos y narraciones auditivas accesibles. En el app, cada conexión genera una línea de código — accesible mediante lectores de pantalla o el botón “leer código” en una consola que acompaña a esta herramienta.

¿Qué son los micro pods?

Un micro‑pod es una pieza física del tamaño aproximado de una pastilla de jabón, diseñada para ser manipulada fácilmente con las manos. Cada Micro pod tiene asociada una función de las posibles para construir un programa.

El micro pod tiene una forma ovalada o circular, con un aspecto aplanado. Fabricado en plástico rígido y con texturas que permiten diferenciarlos. Cada pod tiene conexiones y botones físicos que permiten identificarlo fácilmente. Las conexiones son similares a las clavijas de auriculares y los botones pueden ser selectores de apagado y encendido o diales para seleccionar un valor.

Contenidos y recursos educativos

APH ofrece un currículo de 19 lecciones de unas 25 horas con actividades guiadas, ejercicios, retos y videos.
Los tipos de piezas incluyen:

  • Secuencia y reproducir sonidos (Play pods)
  • Bucles y repeticiones (Loop pods), por ejemplo, tocar una canción infantil  
  • Variables y contadores (Constant, Variable plugs), p. ej. una cuenta atrás
  • Selección / condicionales y azar (Selection, Random plugs), p. ej. historias con desenlaces variables .
  • Bucles anidados, para construir patrones musicales complejos.

Además hay ejercicios más complejos llamados Code Jumper Puzzles donde se requieren soluciones más imaginativas.

Puedes adquirir Code jumper en su página oficial.

Code File Catcher: una herramienta para dar contexto a tus consultas a la IA

Muchas veces, cuando queremos pedir ayuda a una IA para depurar un fallo, revisar una estructura o mejorar un código, necesitamos enviar más que una simple función. Necesitamos compartir el contexto completo del proyecto: otros archivos, dependencias, configuraciones, etc.

Los entornos de desarrollo incluyen un navegador de archivos para moverte entre los distintos ficheros de un proyecto pero, en la mayoría de los casos, el navegador de archivos incluye alguna barrera de dificultad o la cantidad de ficheros es bastante grande lo que dificulta la tarea a los desarrolladores con discapacidad o con poca destreza a la hora de moverse en su entorno de desarrollo. Con Code File Catcher puedes hacer eso fácilmente.

Code File Catcher es una aplicación sencilla pero poderosa que te permite seleccionar una carpeta de tu disco, elegir los tipos de archivos de código que quieres incluir, y obtener automáticamente un texto con todo el contenido de esos archivos perfectamente organizado y listo para copiar o exportar.

Esto resulta especialmente útil si estás trabajando con asistentes de inteligencia artificial como ChatGPT, Gemini o similares, que requieren el contexto completo del código para ofrecer respuestas precisas y útiles.

Entre las distintas operaciones que puede realizar actualmente están: recopila todos los archivos fuente relevantes de un proyecto o carpeta, muestra un texto estructurado con el nombre del archivo y su contenido y puede copiar ese texto al portapapeles o exportarlo como archivo `.txt`.

El proyecto está disponible bajo una licencia libre en GitHub. Puedes consultarlo, usarlo, modificarlo y, si lo deseas, contribuir con mejoras o sugerencias. El proyecto está abierto a colaboraciones, especialmente si pueden ayudar a que la herramienta sea aún más útil para más personas.

Puedes encontrar el código del proyecto y participar en él en el repositorio de Code File Catcher en Github.

Obtener el idioma del sistema en AppleScript

En algunos proyectos con AppleScript puede que queramos dar soporte a varios idiomas. La solución inicial pasa por distribuir nuestro fichero de AppleScript adaptado a cada uno de los idiomas que queramos incluir en el proyecto. Esta solución es poco eficiente e incrementa mucho el coste de mantenimiento.

Pero si nuestro AppleScript pudiese detectar qué idioma necesita el usuario y se pudiera adaptar la selección de cadenas de texto al idioma que necesitemos podríamos utilizar un único fichero de AppleScript para todos los idioma.

Limitaciones y soluciones para identificar el idioma

En principio AppleScript no puede acceder a la información del sistema desde su propia librería de comandos. Pero sí podemos usar otros entornos para acceder a dicha información.

Por ejemplo, con el comando defaults tenemos acceso a mucha de la información del sistema. Si ejecutamos en la Terminal de MacOS el comando defaults read NSGlobalDomain AppleLanguages por la pantalla de la Terminal aparecerá algo como:

(
"es-ES",
"en-ES"
)

Es un array o lista de los idiomas y regiones que tenemos instalado en nuestro sistema. Como buscamos obtener un resultado con el texto es que representa a Español debemos cortar todo el texto sobrante para quedarnos con ese primer elemento de la lista.

Con el comando sed podemos realizar todas estas operaciones. Enlazando el comando defaults con sed podemos obtener lo que buscamos utilizando el comando:

defaults read NSGlobalDomain AppleLanguages | sed -n '2s/[^a-zA-Z-]//gp' | cut -d '-' -f1 

Al ejecutarlo en la Terminal aparecerá:

es

Ahora podemos utilizar un comando de Terminal en un AppleScript.

Función para AppleScript

Nuestra función finalmente quedaría así:

on getSystemLanguage()
    return do shell script "defaults read NSGlobalDomain AppleLanguages | sed -n '2s/[^a-zA-Z-]//gp' | cut -d '-' -f1"
end getSystemLanguage

Cómo escribir matrices con MathML

Una matriz es una tabla de números organizada en filas y columnas. Las matrices se utilizan ampliamente en muchas ramas de las matemáticas y ciencias aplicadas. Se utilizan para resolver sistemas de ecuaciones lineales, representar transformaciones geométricas, modelar datos en inteligencia artificial o describir redes eléctricas o circuitos.

Para las personas ciegas, escribir y leer matrices puede plantear diversas barreras de accesibilidad como la incapacidad de memorizar toda la información contenida en la matriz, incompatibilidad del producto de apoyo con el formato utilizado para mostrar la matriz, limitaciones de los sistemas de formateado de texto y marcado semántico, etc. En el caso de otros perfiles de discapacidad el producto de apoyo puede encontrar problemas para navegar por los datos de la matriz o no existir una semántica suficiente para identificar filas, columnas o celdas concretas por lo que una persona que utilice un sistema de control por voz o un barredor no podrá interactuar de forma apropiada con la matriz.

Utilizando MathML podemos solucionar muchos de estos problemas ya que aporta semántica y compatibilidad con los diversos productos de apoyo. Con MathML, no solo podemos mostrar una matriz, sino también describirla de forma que cualquier persona, con o sin discapacidad, pueda acceder a su contenido.

Cómo escribir una matriz con MathML

En MathML tenemos el elemento mtable para representar matrices. Además podemos encerrarla entre corchetes utilizando el elemento mfenced como se requiere en algunos ejercicios matemáticos o de física.

El siguiente ejemplo muestra una matriz de 2×2 celdas con los valores 1, 2, 3 y 4:

<math>
<mfenced open="[" close="]">
<mtable>
<mtr>
<mtd><mn>1</mn></mtd>
<mtd><mn>2</mn></mtd>
</mtr>
<mtr>
<mtd><mn>3</mn></mtd>
<mtd><mn>4</mn></mtd>
</mtr>
</mtable>
</mfenced>
</math>

Con el elemento mtr marcamos una fila de la matriz y con mtd marcamos una celda concreta.

En el navegador la matriz se mostraría de la siguiente forma:

1 2 3 4

También podemos escribir la matriz con variables para la resolución de problemas de álgebra:

<math>
<mtable>
<mtr>
<mtd><mi>a</mi></mtd>
<mtd><mi>b</mi></mtd>
</mtr>
<mtr>
<mtd><mi>c</mi></mtd>
<mtd><mi>d</mi></mtd>
</mtr>
</mtable>
</math>

En el navegador se mostraría de la siguiente forma:

a b c d