Autor: Joseph Lee Revisión: octubre de 2018

Introducción

Dar soporte a nuevas tecnologías puede ser un reto divertido, especialmente si hablamos de la nueva versión de un sistema operativo que cambia el modo que tiene la gente de realizar ciertas tareas y presenta nuevas formas de mantenerse al día. Este reto es aún mayor cuando se centra en dar soporte a los lectores de pantalla para que funcionen en nuevos sistemas operativos tales como Windows 10, que trae nuevas formas de interactuar con el ordenador, un nuevo conjunto de aplicaciones y tecnologías, y mejoras y retos de accesibilidad. NVDA viene con un soporte sólido para Windows 10, incluyendo Microsoft Edge, el nuevo menú de inicio, navegación en aplicaciones universales y mucho más, todo hecho posible gracias a la colaboración entre los usuarios, Microsoft, NV Access y otros. Parte de este soporte se da gracias al complemento que encontraremos en este artículo. En Complementos de NVDA vistos por dentro: Windows 10 App Essentials, veremos cómo se creó este complemento, cómo funciona, y algunas recomendaciones de su autor (yo) relacionadas con prácticas de accesibilidad. También estudiaremos cómo funciona UI Automation a alto nivel, cómo algunas funciones empiezan en forma de complemento y acaban integradas en NVDA, y mucho más. Para descargar este complemento, visita la sección correspondiente, que encontrarás en el menú superior de nuestra web. El código fuente puede encontrarse en https://github.com/josephsl/wintenApps. Ya que Windows 10 y las aplicaciones universales pertenecen al mundo de UI Automation, es esencial que sepas algunas cosas sobre UIA, que se cubren más adelante. Descargo de responsabilidad: a pesar del texto del artículo y los conocimientos que contiene, yo (Joseph Lee, el creador del complemento) no trabajo para NV Access ni Microsoft. Nota: algunas de las funciones descritas pueden cambiar según progresen el desarrollo de NVDA y Windows 10. En la revisión de octubre del 2018, se han documentado una o dos características de NVDA 2018.3 y las compilaciones de Windows Insider Preview con propósitos de referencia. Además, al referirse a las actualizaciones de Windows 10, se usa el identificador de la versión (aamm) en lugar de la etiqueta de mercado a menos que se especifique (por ejemplo, versión 1709 en vez de actualización Fall Creators). Derechos de copia: Microsoft Windows, Windows 10, Windows API, UI Automation, Microsoft Edge, Universal Windows Platform (UWP) y otras tecnologías relacionadas tienen copyright de Microsoft Corporation. NVDA tiene copyright de NV Access. El complemento Windows 10 App Essentials tiene copyright 2015-2018 de Joseph Lee y otros, y está liberado bajo la GPL versión 2.

Presentación de Windows 10

Windows 10 es la “última” gran versión de Windows previsiblemente para el futuro. Nos presenta una forma completamente nueva de mantener un seguimiento de los cambios a través del Windows Insider Program y Windows como servicio (WAAS, un término fantástico para hablar de entrega continua), un nuevo marco de trabajo de desarrollo de aplicaciones, estrategias de unificación en términos de experiencia de usuario a través de dispositivos y un nuevo explorador web. Además, destacan el regreso del viejo estilo del menú inicio, los escritorios virtuales, el centro de actividades para centralizar las notificaciones, una nueva forma de ejecutar utilidades de consola de Linux, y un renovado narrador que sigue introduciendo mejoras. Windows 10 hizo su vuelo inaugural en octubre de 2014. Antes de eso, era conocido como Windows Technical Preview, y tras varias semanas, su nombre cambió al de programa Windows Insider. Entre octubre de 2014 y julio de 2015, cuando se liberó la versión 1507 (compilación 10240), más de cinco millones de usuarios se convirtieron en insiders, probando nuevas compilaciones y aplicaciones, enviando retroalimentación, etc. Llamo a la beta de octubre de 2014 (compilación 9841) vuelo inaugural por varias razones. En primer lugar, es la primera vez donde Microsoft mostró interés en las opiniones de los usuarios. Aunque existieron betas para versiones anteriores de Windows, como Windows 7 y 8.1, Windows 10 es el primer intento de Microsoft de conectar con los usuarios y tomar los comentarios en serio. En segundo lugar, la compilación 9841 (la primera compilación para insiders) marcó el comienzo de Windows como un servicio, un enfoque completamente diferente para mejorar Windows en el que Microsoft quería ofrecer dos cosas: entrega continua y bucle de realimentación, y una configuración unificada que funcione bien con la mayoría de dispositivos. Hubo contratiempos, como las preocupaciones que se generaron en privacidad debido a la telemetría, pero en la mayoría de los casos Windows 10 fue recibido positivamente. Hay otra razón más personal para llamar a la compilación de octubre de 2014 el vuelo inaugural: yo fui uno de los primeros insiders, y debido a mis trabajos con NVDA, decidí que los usuarios de lectores de pantalla debíamos ser tratados con respeto. Esto incluía enviar retroalimentación relacionada con la accesibilidad, conseguir que otros usuarios de lectores de pantalla subieran a bordo del programa Windows Insider, y liberar versiones de desarrollo de NVDA que resolvieran problemas importantes para los Windows insiders. Esto culminó con la publicación del complemento Windows 10 App Essentials en noviembre de 2015 (justo a tiempo de que se liberara la versión 1511 / compilación 10586) que traía soporte para el centro de Windows Insider (actualmente centro de comentarios) y otras soluciones, que se tradujeron en una experiencia magnífica para los usuarios de NVDA al usar Windows 10 y diversas aplicaciones universales. Mi trabajo de la defensa de la accesibilidad continúa hoy en día, especialmente cuando toca asegurarse de que las aplicaciones de terceros son usables para muchos, dando soporte a características como los conjuntos y demás.

Propósitos de Windows 10 App Essentials

El complemento Windows 10 App Essentials se ha construido sobre cuatro pilares:
  • Soporte de nuevas características: una forma de asegurarse de que los usuarios de lectores de pantalla eran tratados con respeto era adaptando características de Windows 10 según aparecían a través de este complemento. Entre ellas se incluyen un soporte para la antigua aplicación del centro de comentarios, y el panel de emojis en Windows 10 creators update.
  • Características esenciales y verbalización: hasta principios del 2017, NVDA no verbalizaba información importante, como el estado de la instalación de actualizaciones en Windows Update en la aplicación de configuración. Esto está a punto de cambiar (mira las notas del evento de cambio en región activa para más detalles).
  • Solución de problemas de accesibilidad y UI Automation: cada día se añaden nuevas funciones y se solucionan fallos en diversas aplicaciones universales y en el propio Windows 10. Al mismo tiempo, hay al menos una aplicación donde la accesibilidad, particularmente la de UI Automation, se rompe. Parte del código del complemento se destina a solucionar implementaciones defectuosas de UIA.
  • Demostración de compromiso y promoción de la accesibilidad: algunos defensores de la accesibilidad, incluyéndome a mí, hemos subrayado recientemente que la accesibilidad es importante en los diseños de aplicaciones, y que los desarrolladores deberían tomarse los comentarios de accesibilidad en serio. A través de características y solución de errores, el complemento ofrece una forma de demostrar este compromiso y promoción.

Contenidos del complemento

El complemento Windows 10 App Essentials está formado por una extensión global y módulos de aplicación para diversas aplicaciones universales que vienen con Windows 10. Los objetos de Windows 10 (abreviados como WinTenObjs), la porción de extensión global de este complemento, ofrecen soluciones como clases de superposición para controles que se encuentran frecuentemente en Windows 10 y las aplicaciones universales, rastreo de eventos UIA y registro, así como el mecanismo de actualización del complemento. Se puede encontrar más información sobre cómo funciona el actualizador del complemento en el artículo sobre el complemento para Station Playlist Studio, ya que ambos complementos usan el mismo sistema de actualizaciones. En cuanto a los módulos de aplicación, se han incluido para ofrecer solución de errores o mejorar la experiencia de usuario. Por ejemplo, el módulo de aplicación para la aplicación de configuración (systemsettings) permite a NVDA anunciar el progreso de descarga e instalación en Windows Update, y el módulo de aplicación para UWP Frame Host (shellexperiencehost) incluye una solución a un problema de estado de menú expandido en el menú de inicio. Conoceremos estos módulos de aplicación con detalle en las siguientes secciones.

Nota relacionada con la paridad de características en el lector de pantalla NVDA

Algunas características discutidas en este artículo (tales como la reproducción de un sonido de sugerencias y el manejador de evento de notificación de UIA) se han integrado en las últimas versiones de NVDA. Voy a señalar algunas de ellas y explicar cómo se han integrado, incluyendo la planificación involucrada y algunos consejos para modificar las características del complemento para que encajen bien en el código base de NVDA.

Introducción a UI Automation

Antes de pasar a explicar cómo funciona el complemento, es útil entender cómo es UIA y por qué es importante. Sólo entonces el resto del artículo tiene sentido, ya que Windows 10 y las aplicaciones universales se apoyan en UIA. UI Automation (UIA), publicada en 2007, es una api de accesibilidad basada en el modelo de componentes y objetos (COM) que permite a las ayudas técnicas y otros programas comunicarse con los demás transmitiendo información de accesibilidad sobre un control. En algunos ámbitos, esta api reemplaza a Microsoft Active Accessibility (MSAA), a veces llamada IAccessible, y que se publicó en los años 90. Siendo una api basada en COM, permite a los programas y objetos exponer información esencial sin importar el lenguaje de programación que se use, ya que cada objeto expone rutinas documentadas que cualquier otro programa puede usar. En el mundo UIA, un objeto en pantalla se denomina “elemento”. Como en cualquier api de accesibilidad, UIA expone varios elementos a las ayudas técnicas, llamadas “clientes”, siendo el programa que ofrece estos elementos un “servidor”. Estos elementos se organizan en un árbol de interfaz, con la Shell de Windows (Escritorio) como raíz, y con el árbol podado y nuevas hojas brotando constantemente cada vez que las aplicaciones se inician y se cierran, los elementos son creados y destruidos, los controles se muestran y se ocultan en la pantalla y así sucesivamente. Aunque UIA se ha diseñado para reemplazar a MSAA debido a la información de accesibilidad modernizada que puede recuperarse, los fabricantes de lectores de pantalla como NV Access publican solución de errores para implementaciones UIA pobres o defectuosas. Un caso conocido se encuentra en los problemas de UIA en versiones antiguas de Microsoft Office, tales como problemas de etiquetado en algunos cuadros combinados. Ciertas áreas en Windows 10 y las aplicaciones universales todavía tienen problemas con UIA, tales como etiquetas de controles defectuosas o mal aplicadas, etiquetas genéricas de interfaz o de XAML (lenguaje de marcas extensible para aplicaciones), eventos que se esperan y que nunca llegan a dispararse, y así sucesivamente. Esta es una de las razones para crear el complemento Windows 10 App Essentials: ofrecer soluciones para problemas como estos.

ID de automatización y otras interfaces y propiedades

Una pieza clave de información que UIA expone (o intenta exponer) es el ID de automatización, una cadena que identifica unívocamente un elemento. Por ejemplo, algunos campos de búsqueda exponen “SearchEditBox” como ID de automatización, que permite a lectores de pantalla como NVDA detectar estos controles. Aunque la mayoría de los controles exponen identificadores de automatización únicos, algunos utilizan identificadores genéricos o generados automáticamente (como por ejemplo el historial de actualizaciones en la aplicación de configuración). Otra información útil expuesta por los elementos UIA es la siguiente:
  • Nombre de clase: el nombre de la clase para este control, una cadena que identifica la clase de este elemento (no debe confundirse con el ID de automatización, que identifica unívocamente un elemento).
  • Marco de trabajo: el marco de trabajo subyacente usado para crear un control dado, por ejemplo XAML, Direct UI y otros.
  • Tipo de control localizado: un texto con el tipo de rol que debería ser verbalizado por los lectores de pantalla en diferentes idiomas.
  • Controlador para: una lista (array) de controles que este elemento manipula cuando realiza acciones tales como sugerencias de búsqueda (se explica más abajo).
  • Propiedades ARIA: un mapa de propiedades ARIA tales como descripción del rol, situadas mayoritariamente en elementos de Microsoft Edge.

Eventos UIA

Además de los eventos estándar esperados de las apis de accesibilidad, tales como manipulación de foco y cambios en las propiedades de un objeto (como nombre y estado), UIA viene con algunos eventos interesantes, incluyendo controlador para (Controller for), cambios en región viva (live región changed), notificación y muchos otros. Por razones de rendimiento, NVDA ignora ciertos eventos como cambio de estructura y algunos más. Más adelante en este artículo se explica cómo trabajan NVDA y Windows 10 App Essentials con ciertos eventos UIA.

Solución de fallos y características añadidas relacionadas con UIA

El complemento Windows 10 App Essentials incluye los siguientes extras, parches y soluciones para problemas de UIA y controles:
  • Sugerencias de búsqueda: NVDA ahora reproduce un sonido para indicar la aparición de sugerencias de búsqueda. Más detalles sobre esto más adelante.
  • Verbalización de cambio de regiones vivas en diversas aplicaciones. En la parte de extensión global se incluye una forma de definir y rastrear este evento.
  • Sugerencias flotantes como el panel de emojis en la versión 1709 (actualización Fall Creators) y sugerencias del teclado hardware en la versión 1803 (actualización de abril de 2018). Esto se ha incorporado en la versión 2018.3 de NVDA.
  • Soporte para el evento de notificación de UIA introducido en la versión 1709. Esto pasó a formar parte de NVDA en la versión 2018.2.
  • Se ofrecen etiquetas más significativas para ciertos controles, como el historial de actualizaciones en configuración / actualización y seguridad / Windows Update.
  • verbalización de consejos en aplicaciones universales.
  • Procesamiento de cambios de pestaña en los conjuntos en Redstone 5 (compilaciones 17627 a 17692)
  • Reconocimiento de diálogos proporcionados por XAML y diversos marcos de trabajo. En NVDA 2018.3, el propio NVDA se encarga de esto.
Conoceremos varios controles y soluciones a lo largo de este artículo.

Objetos para Windows 10

El complemento Windows 10 App Essentials viene con Objetos para Windows 10, una extensión global que contiene definiciones de controles comunes que se encuentran en Windows 10 y diversas aplicaciones universales. Aquí se incluyen el manejo de sugerencias de búsqueda, repetición para selectores de tiempo y así sucesivamente. También incluye procedimientos de manejo adicionales para UIA, y las características de configuración y actualización del complemento.

Estructura del código fuente

La extensión global está formada por lo siguiente:
  • winTenObjs/init.py: la extensión global básica.
  • winTenObjs/_UIAHandlerEx.py: procedimientos adicionales de UIA para las que NVDA no ofrece soporte nativo (mayoritariamente para versiones antiguas de NVDA).
  • winTenObjs/w10config.py: configuración y actualizaciones. A partir de junio de 2017, lo único que se puede configurar desde el diálogo de ajustes de Windows 10 App Essentials es el sistema de actualizaciones: si deberían buscarse actualizaciones automáticamente o no, el intervalo de búsqueda de actualizaciones y el canal.
El archivo con la extensión global principal se presenta así:
  1. Cabecera típica de cualquier complemento con información de derechos de copia, autor, etc.
  2. Constantes UIA no incluidas en NVDA, incluyendo identificadores de propiedades tales como los del evento controlador para (controller for). La mayoría ya forman parte de NVDA.
  3. Clases que definen diversos controles de Windows 10 y las aplicaciones universales, incluyendo sugerencias de búsqueda, selectores en bucle y así sucesivamente.
  4. La clase real de la extensión global, formada por un buscador de clases de superposición y procedimientos de rastreo para diversos eventos UIA (sólo disponibles si NVDA se reinicia con el registro de depuración habilitado).

Inicio y apagado

Cuando el complemento se carga, hace cuatro cosas:
  1. Activa el rastreo de eventos UIA ausentes. Por ejemplo, hasta mayo de 2017, el controlador para evento (un evento producido por un control que depende de otro control, como un campo de texto con sugerencias de búsqueda) no estaba disponible en el lector de pantalla NVDA, pero la verbalización de sugerencias de búsqueda se hizo posible cuando este complemento añadió este evento.
  2. Extiende o reemplaza el subsistema de soporte UIA de NVDA si NVDA no viene con soporte para las nuevas interfaces UIA. Es el caso del evento de notificación, que NVDA no soporta de forma nativa en versiones anteriores a la 2018.2.
  3. Añade elementos de interfaz de usuario para este complemento, y más concretamente su diálogo de ajustes.
  4. Comprueba actualizaciones del complemento si le hemos indicado que lo haga.
Lo único que se hace al apagarlo es desactivar su sistema de comprobación de actualizaciones y eliminar los elementos de interfaz de usuario.

Objetos de Windows 10 y características destacables

Sonidos para indicar la aparición de sugerencias de búsqueda

En algunos cuadros de edición, como el de búsqueda del menú inicio, aparecerá una lista de sugerencias mientras se escribe texto. En implementaciones más nuevas, se lanza el evento controlador para de UIA si esto ocurre, con los distintos lectores de pantalla reaccionando de forma diferente. Por ejemplo, al escribir texto en el cuadro de búsqueda del menú inicio mientras se usa el narrador, este reproducirá un sonido indicando la aparición de sugerencias, mientras que las versiones viejas de NVDA verbalizarán la sugerencia superior. Ya que sentía que lo mejor era notificar a los usuarios cuando las sugerencias aparecen y desaparecen (y en algunos aspectos seguir los pasos del narrador), he implementado código para manejar las sugerencias de búsqueda. Este código se divide en cuatro componentes:
  • Una o más clases usadas para identificar cuadros de edición que lanzan el evento de UIA controlador para, y formas de identificarlas. El motivo por el que se usan clases para el mismo objeto tiene que ver con la compatibilidad, ya que las versiones antiguas de NVDA no vienen con una clase para los cuadros de búsqueda. Estas clases incluyen dos eventos relacionados con el evento controlador para:
    • event_suggestionsOpened: llamado cuando aparecen sugerencias. Algunos controles, especialmente el cuadro de búsqueda incrustado de Cortana que sale al abrir una nueva pestaña de conjuntos, no disparan este evento adecuadamente.
    • event_suggestionsClosed: llamado cuando desaparecen las sugerencias. Hay controles que no lanzan estos eventos, como la barra de direcciones de Microsoft Edge.
  • Una clase que representa los elementos de sugerencia en sí.
  • Un conjunto de sonidos para indicar la aparición y desaparición de sugerencias.
  • Una capa de compatibilidad para versiones de NVDA antiguas y futuras, tal y como se ha resaltado arriba.
Además, en algunos casos, es útil verbalizar cuántas sugerencias han aparecido, y por ello se ha añadido un procedimiento para hacerlo. Con esto añadido, el cuadro completo es el siguiente:
  1. El usuario escribe texto en un cuadro de búsqueda.
  2. NVDA recibirá el evento controlador para y buscará la lista de sugerencias. Si dicha lista se encuentra, NVDA reproducirá el sonido de sugerencias llamando al evento suggestionsOpened.
  3. Si se encuentran sugerencias, NVDA verbalizará la sugerencia superior o la cantidad de sugerencias. Lo primero se hace en el menú inicio, mientras que lo último se hace en los demás cuadros de búsqueda.
  4. Se pueden usar las flechas arriba y abajo para moverse por las sugerencias, y pulsar intro para seleccionar o escape para cerrar la lista de sugerencias. Al cerrar la lista de sugerencias, NVDA reproducirá el sonido de desaparición de sugerencias.
Desde NVDA 2017.3, la verbalización de sugerencias de búsqueda (y no el total) es parte del lector de pantalla.

Verbalizando notificaciones

La actualización 1709 de Windows 10 (Fall Creators) introduce un nuevo evento para permitir a las aplicaciones enviar texto que sea verbalizado por clientes UIA como NVDA. Una de las tareas de Objetos de Windows 10 es capturarlo y verbalizar notificaciones en versiones de NVDA que no lo soporten de forma nativa. Como NVDA no soporta el nuevo evento de notificación de forma nativa, se incluye una solución con este complemento para permitir a NVDA detectar y procesar notificaciones. Esto se hace extendiendo el subsistema de soporte UIA a través de un módulo interno que tiene prioridad sobre los procedimientos de NVDA. Entre otras cosas, este subsistema extendido incluye definiciones para el manejador del evento de notificación de UIA, y tiene en cuenta si se está ejecutando NVDA 2018.1.x o una versión posterior en Windows 10 Fall Creators y versiones posteriores. El manejador de eventos de notificación recibe cinco argumentos clave:
  • Remitente: el elemento UIA que ha lanzado el evento.
  • Tipo de notificación: el tipo de notificación.
  • Procesado de notificación: cómo debería NVDA procesar la notificación entrante.
  • Cadena a mostrar: texto de la notificación.
  • ID de actividad: el identificador único de la notificación.
Desde octubre de 2018, NVDA verbaliza notificaciones para todas las aplicaciones (especialmente la aplicación activa), excepto una o dos donde esto daría problemas, por lo que el complemento ya no está implicado en el anuncio de muchas notificaciones salvo aquellas que podrían causar problemas.

Rastreo de eventos UIA en controles

La extensión global Objetos de Windows 10 tiene también la capacidad de rastrear eventos UIA para controles y registrar información sobre ellos, ejecutando la función uiaDebugLogging, que recibe el objeto y el nombre del evento. Esta función registra lo siguiente si NVDA se ha iniciado con el registro de depuración habilitado:
  • Qué es realmente el objeto.
  • Nombre del objeto.
  • Nombre del evento que se registra.
  • Aplicación donde puede encontrarse el control (específicamente, el módulo de aplicación).
  • ID de automatización.
  • Nombre de clase UIA.
  • Para el evento controlador para, la lista de objetos de la que depende el control dado.
  • Para el evento de consejo abierto, el motor de interfaz gráfica que proporciona el elemento.
  • Para el evento de estado del elemento, el nuevo texto de estado del elemento.
En caso de que haya eventos de notificación, NVDA registra los parámetros del evento desde el mismo método manejador del evento.

Selectores en bucle

Un selector en bucle es un control similar a un cuadro combinado, donde la selección está en bucle y se repite. Se emplea en lugares como Reloj y alarmas, Configuración / Actualización y seguridad / Windows Update / Horas activas y así sucesivamente. En versiones antiguas de Windows 10 y las aplicaciones universales, al cambiar los valores del selector, no se disparaba el evento UIA elemento seleccionado. Para solucionar esto, el complemento examinará los estados para cada elemento y verbalizará si un elemento tiene el estado seleccionado. Este no es el caso para implementaciones más nuevas, pero se conservan los procedimientos para garantizar compatibilidad hacia atrás.

Eventos de cambio de región viva

Algunos controles son regiones vivas, o lo que es lo mismo: un control cuyo contenido denota texto vivo, como el progreso de algo, alertas y demás. Debido a implementaciones defectuosas del evento de cambio de región viva, las versiones más antiguas de NVDA no soportan este evento de forma nativa, pero en NVDA 2017.3 y versiones posteriores se incluye una implementación trivial donde NVDA verbalizará el texto de la región viva, como el nombre del objeto. Objetos de Windows 10 va un paso más allá registrando instancias de este evento y ofreciendo soluciones para casos específicos. Aquí se incluye la verbalización correcta de texto para las alertas en Edge (mira más abajo), la prevención de verbalizaciones repetidas en algunas aplicaciones, etc.

Reconocimiento de diversos diálogos

Algunas ventanas son realmente diálogos. Estos incluyen los diálogos emergentes para desinstalar aplicaciones, diversos diálogos que se encuentran en la aplicación de configuración y demás. En versiones antiguas del complemento, NVDA habría consultado una lista de nombres de clases conocidas de diálogos con la esperanza de detectar alguno. En las nuevas versiones, especialmente si se ejecutan en Windows 10 versión 1809, la propiedad UIA IsDialog se usa para detectar elementos de diálogo. Una vez se reconocen los diálogos, NVDA leerá su contenido automáticamente tan pronto como aparezcan. Esto se ha simplificado en NVDA 2018.3, ya que el propio NVDA dará lo mejor de sí mismo para reconocer más diálogos, incluyendo aquellos marcados como diálogos mediante UIA en la versión 1809.

Módulos de aplicación para aplicaciones universales

Además de la extensión global Objetos de Windows 10, el complemento viene con módulos de aplicación diseñados para proporcionar soporte extra para diversas aplicaciones universales que vienen con Windows 10. Estos módulos incluyen mejoras y/o solución de problemas, principalmente divididas en cinco categorías:
  1. Añadir funciones extra.
  2. Dar soporte a nuevas tecnologías.
  3. Verbalizar (o, más recientemente, suprimir verbalización sobrante de) información en diversas situaciones.
  4. Solución a problemas de UIA.
  5. Respuesta a cambios en aplicaciones, y en al menos tres ocasiones, añadir algunos alias para aplicaciones con el nombre del ejecutable cambiado.
Los módulos, mejoras y soluciones aplicadas son:
  • Calculadora: verbaliza la pantalla de manera selectiva.
  • Calendario: suprime el anunciado del estado de sólo lectura en múltiples controles.
  • Cortana / Menú inicio / cuadro de búsqueda de Cortana en la pantalla de nueva pestaña de conjuntos: suprime la verbalización doble del elemento de sugerencia de resultado en algunos casos, permanece en silencio cuando el usuario dicta a Cortana, y procesa malas implementaciones de UIA.
  • Correo: órdenes de navegación de tablas en la lista de mensajes, elimina la verbalización de sólo lectura en el contenido del correo, alias de aplicación para hxmail.exe y hxoutlook.exe (el más reciente para actualizaciones publicadas después de mayo del 2017).
  • Mapas: reproduce coordenadas de eventos para elementos en el mapa, se suprime la verbalización repetida en el cambio de regiones vivas, alias para dar soporte a versiones viejas y nuevas de la aplicación (el alias viejo, maps_windows, ya no está).
  • Microsoft Edge: verbaliza el texto correcto en alertas, soporta el proceso de Edge y el proceso de contenido (microsoftedgecp.exe).
  • Teclado moderno: soporte para el panel de emojis, las sugerencias de entrada por hardware y pegar elementos desde el portapapeles (versión 1809), parte de NVDA desde la versión 2018.3.
  • El tiempo: usa las flechas arriba o abajo para leer la información meteorológica.
  • Personas: se anuncia la primera sugerencia al buscar un contacto.
  • Sets: verbalización de la pestaña activa actualmente y su posición al cambiar entre pestañas de aplicación.
  • Configuración: verbaliza de forma selectiva diversa información de estado, proporciona etiquetas correctas para ciertos controles.
  • Host de experiencia con la Shell (Shell Experience Host): soluciona pequeñas pérdidas de información de estado de UIA.
  • Skype (moderno): órdenes para moverse a ciertos controles de Skype, órdenes para leer los mensajes recientes, se suprime texto extraño en los nuevos mensajes.
  • Tienda: verbaliza información necesaria cuando se dispara el evento de cambio de región viva en algunos controles, alias para soportar versiones antiguas y nuevas de la tienda (el alias antiguo, winstore_mobile, ya no está).

Añadiendo funciones útiles en aplicaciones

Los siguientes módulos de aplicación añaden funcionalidad específica de NVDA y / o órdenes utilizadas exclusivamente para mejorar la experiencia de usuario al utilizar aplicaciones:
  • Mapas (maps.py): al usar navegación de objetos para examinar un mapa, se reproducirá un tono para indicar dónde se ubican las cosas en el mapa. Esto se hace definiendo un manejador personalizado para event_becomeNavigatorObject que tomará las coordenadas del objeto (en píxeles) y reproducirá un tono, emulando esencialmente los pitidos de coordenadas del ratón de NVDA. El módulo de aplicación también permite a los usuarios oír nuevas ubicaciones al usar la vista de calle para navegar por el mapa, y esto se ha realizado a través de manejadores para el evento de región viva cambiada.
  • Correo (hxmail.py): al tener el foco en la lista de mensajes, se pueden usar órdenes de navegación de tablas (ctrl+alt+flechas) para revisar los encabezados del mensaje. Esto es posible gracias a dos cosas: los encabezados son objetos hijo del elemento del mensaje, y por esto, se puede emplear la clase NVDAObjects.behaviors.RowWithFakeNavigation para añadir esta funcionalidad.
  • El tiempo (Microsoft_msn_weather.py): este módulo de aplicación, aportado por Derek Riemer, permite a los usuarios pulsar las flechas arriba y abajo para leer información meteorológica, llamando a las órdenes correspondientes de movimiento del cursor de revisión para moverse por línea.
  • Skype (Skype_app.py): este módulo de aplicación responde a eventos de cambio de nombre, útil para verbalizar nuevos mensajes, y define procedimientos para verbalizar los mensajes recientes pulsando ctrl+NVDA+números de la fila superior. Más adelante se expone cómo filtra NVDA el texto de los mensajes, en la sección soluciones de UIA.

Una nota sobre el teclado moderno

Teclado moderno (windowsinternal_composableshell_experiences_textinput_inputapp.py) es el nombre de la aplicación que proporciona diversas características, incluyendo el panel de emojis, las sugerencias de entrada por hardware y el listado de elementos que pueden pegarse desde el portapapeles en la nube. No se trata exactamente de una aplicación, sino que está más enfocado hacia una capa flotante, similar a los teclados en pantalla que se muestran en dispositivos táctiles. Para potenciarlos, hay un teclado táctil rediseñado donde se usa el panel táctil basado en XAML (con su propio proceso). En Windows 10 Insider Preview compilación 16215 y posteriores, se da la posibilidad a los usuarios de explorar y seleccionar emojis para insertar en un cuadro de edición. Esto se hace pulsando Windows+punto (.) o Windows+punto y coma (;). Se mostrará un panel flotante con emojis y categorías de emojis. A partir de ahí se pueden usar las flechas para desplazarse entre los emojis, o tab y shift+tab para saltar por las categorías. En la compilación 16226, se pueden teclear descripciones de emojis para acotar el emoji deseado. En la compilación 17666 y posteriores, se ha rediseñado este panel. En vez de usar el tabulador para moverse entre categorías, ahora se pulsa el tabulador para moverse entre las categorías y la cuadrícula de emojis. En el caso de la categoría personas, el tabulador te hará moverte a la lista de tonos de piel, en la que puedes usar las flechas para seleccionar un tono de piel, y luego pulsar tabulador para moverte a la cuadrícula de emojis. Cuando este panel se abre, el panel de emojis dispara un evento de apertura de menú, un evento que NVDA no detecta por razones de rendimiento. Según se van seleccionando elementos, se dispara un evento de elemento seleccionado, al que NVDA responde recorriendo el panel como si fuera un árbol hasta ubicar el elemento seleccionado. La verbalización real de caracteres emoji depende de los sintetizadores; actualmente, Espeak NG y las voces recientes de Sapi 5 y OneCore (Sapi Mobile) vienen con definiciones de caracteres emoji. De manera similar al panel de emojis, en la compilación 17025 y posteriores, el teclado moderno también puede proporcionar sugerencias de entrada. Esto se hace marcando una nueva opción en Configuración / Dispositivos / Escritura, y que se activa también al pulsar flecha arriba mientras se escribe (sólo se soporta la distribución de teclado en inglés de Estados Unidos). Al igual que en el panel de emojis, aparece una ventana flotante, y en este caso se pueden pulsar flechas izquierda y derecha para navegar entre sugerencias y pulsar intro para aceptar el elemento ofrecido. El mecanismo anterior para seleccionar sugerencias de entrada también se emplea al pegar elementos desde el portapapeles en la nube. En la compilación 17666 y posteriores, se pueden copiar textos y pequeñas imágenes al portapapeles para pegarlos más tarde. Windows conservará un historial de elementos copiados al portapapeles. Al pulsar Windows+v, se mostrará una lista de elementos del portapapeles, y en ella se pueden pulsar flechas izquierda y derecha para seleccionar el elemento deseado. En NVDA 2018.3, el soporte para todas estas características (funciones del teclado moderno) ahora forman parte del propio NVDA.

Qué verbalizar, qué callar

En ocasiones es útil hacer que los usuarios sepan qué está pasando anunciando información de diversos estados, mientras que otras veces es igualmente importante no anunciar mensajes extra. El primero era el caso para la mayoría de los siguientes módulos de aplicación en el pasado, pero desde mediados de 2017 se está evolucionando precisamente hacia lo contrario. Los módulos de aplicación (y para uno en particular, más de un módulo de aplicación) en cuestión son:
  • Calculadora (calculator.py): mientras se introducen cálculos, se anuncia la expresión introducida mediante el manejador de evento de cambio de nombre. Como esto puede interferir con la verbalización de caracteres introducidos en NVDA, sólo se verbalizará el contenido de la pantalla de la calculadora cuando aparezcan los resultados reales o cuando se limpie.
  • Personas (peopleapp.py): NVDA anunciará la primera sugerencia al buscar un contacto. A diferencia de otros campos de búsqueda, no hay un controlador para evento. Sin embargo, la sugerencia lanza un evento de elemento seleccionado.
  • Cortana (searchui.py): Cortana usa eventos de cambio de nombre e identificadores de automatización específicos para transmitir mensajes de texto. El evento de cambio de nombre también se emplea cuando Cortana intenta entender el texto dictado por un usuario, lo que en las versiones antiguas del complemento se traducía en que NVDA podía verbalizar galimatías. Esto se ha resuelto en las versiones recientes del complemento.
  • Configuración (systemsettings.py): NVDA verbalizará mensajes tales como las notificaciones de Windows Update, y esto se hace mediante el evento de región viva cambiada (evento de cambio de nombre en versiones del complemento más antiguas).
  • Interfaz de conjuntos (tabexperiencehost.py) en Redstone 5: al cambiar entre pestañas de aplicación, NVDA verbalizará el nombre y posición de la nueva pestaña.
  • Tienda de Microsoft (winstore_app.py): al igual que en la aplicación de configuración, se verbalizan mensajes de estado, en esta ocasión relacionados con la descarga de productos como aplicaciones o contenido multimedia.

Conjuntos

Muchos participantes del programa Windows Insider que ejecutan las compilaciones 17627 a 17692 probaron los conjuntos, una forma de agrupar actividades relacionadas entre sí. Esto se hace permitiendo a las aplicaciones mostrar sus elementos de interfaz dentro de pestañas de Microsoft Edge, de tal forma que al restaurar una pestaña (una aplicación que se ejecuta), las actividades relacionadas se reanudarán junto a ella. Por esta razón, tiendo a llamar a esto “pestañas de aplicación”, pero el nombre de esta característica puede cambiar en el futuro. Las órdenes utilizadas para trabajar con conjuntos son similares a las órdenes de navegación por pestañas en los navegadores web, salvo porque hay que añadir la tecla Windows. Por ejemplo, en los navegadores web, se puede pulsar ctrl+t para abrir una nueva pestaña, y al activar los conjuntos, mientras se usa una aplicación, se puede pulsar ctrl+windows+t para abrir una nueva pestaña de conjuntos. Se puede cambiar entre pestañas de aplicación pulsando ctrl+windows+tab o ctrl+windows+shift+tab, y para cerrar una pestaña de aplicación (y cerrar la aplicación en cuestión), se puede pulsar ctrl+windows+w. Si se conocen las posiciones de las pestañas de aplicación, se puede pasar rápidamente entre aplicaciones pulsando ctrl+windows+teclas de la fila de números. NVDA ya soporta los conjuntos simplemente porque tiene soporte para Microsoft Edge. Sin embargo, debido a los desarrollos en curso, se incluyen diversas mejoras y parches en el complemento. Entre ellos se incluyen:
  • Buscar cosas: al buscar algo desde la nueva pestaña de conjuntos, se dispara el controlador de evento incorrecto. Como consecuencia, los menús de contexto y los resultados de búsqueda no se anunciaban, pero por suerte, los resultados de búsqueda disparan el evento de elemento seleccionado al moverse entre elementos. El resultado es que NVDA será capaz de verbalizar los resultados.
  • Verbalización de pestañas: al cambiar entre pestañas, NVDA verbalizará el nombre y posición de la nueva pestaña. Esto se hace en respuesta a un evento de elemento seleccionado procedente de las entradas de pestaña en sí mismas.

Cazando problemas de implementación de UIA

Como se ha explicado arriba, algunos controles vienen con implementaciones UIA malas o defectuosas, y las aplicaciones universales no son una excepción (al menos para los módulos de aplicación que vienen en el complemento). Por este motivo, los siguientes módulos de aplicación (y en dos casos, la extensión global Objetos de Windows 10) incluyen soluciones para diversos problemas de UIA:
  • Calendario (hxcalendarappimm.py) y Correo (hxoutlook.py): algunos cuadros de edición, como el título de la cita y otros, se muestran como de sólo lectura cuando en realidad no lo son, y eliminando este estado del conjunto de estados para estos controles resolvía este problema.
  • Cortana: algunas sugerencias de búsqueda exponen el mismo texto en su nombre y descripción, lo que resulta en repeticiones del texto con el resultado de la sugerencia. Esto fue corregido comparando nombre y descripción, y anulando la descripción (obj.description=None). Además, al abrir la versión de conjuntos del cuadro de búsqueda de Cortana (compilaciones 17666 y 17692), se dispara el controlador para evento equivocado, lo que evita que NVDA verbalice las sugerencias. Esto ya ha sido corregido.
  • Mapas: a pesar de que no hay cambios en la aplicación, el control con el título del mapa dispara el evento de región viva cambiada, por lo que NVDA incluye una forma de suprimir repeticiones.
  • Microsoft Edge (microsoftedge.py y microsoftedgecp.py): para algunas alertas, el nombre del control que dispara los eventos de región viva cambiada y alerta del sistema es “alert”, siendo su texto real el último hijo o el texto disperso por los hijos, por lo que NVDA buscará el texto real al verbalizar alertas.
  • Configuración y tienda: para algunos controles (como por ejemplo al descargar contenido de la tienda), un control de estado específico dispara el evento de región viva cambiada. Por desgracia, su texto es genérico (por ejemplo, “descargando algo por ciento”, en lugar de verbalizar el producto que se está descargando), por lo que NVDA ubicará información como los nombres de producto cuando esto pase para hacer más fácil el seguimiento. También, en la aplicación de configuración, algunos controles en versiones más antiguas de la aplicación no tienen etiqueta, por lo que se pide a NVDA que busque etiquetas viajando por los objetos hermano (siguiente / anterior).
  • Host de experiencia con la Shell (shellexperiencehost.py): para algunos submenús, NVDA no sabe que está en un submenú, esto se solucionó enseñándole a reconocer el rol y estado adecuados para ellos. Este procedimiento se limitó a esta aplicación en 2018, pero se expandió para cubrir los submenús en el menú de aplicación de Edge en agosto del 2018.
  • Skype: un mensaje típico de Skype incluye nombre del autor, canal del mensaje, el contenido del mensaje, fecha de envío y así sucesivamente. Esto es debido a las implementaciones de vista de lista, donde se recuperan los nombres de los hijos. Por desgracia, al contrario no pasa: aunque algunos elementos exponen el autor del mensaje y su contenido como queremos, otros sólo exponen el contenido al mirar en los objetos hijo. Por tanto, se proporciona una expresión regular para eliminar información innecesaria hasta que se encuentre una solución mejor.

Un cuento sobre los nombres de ejecutables y módulos de aplicación

Uno de los efectos colaterales de la entrega continua es la aparición de cambios no previstos con antelación. Este efecto es más notable cuando una solución para una aplicación se rompe simplemente porque el nombre del ejecutable o la aplicación ha cambiado. Además, algunas aplicaciones vinieron con un ejecutable cuyo nombre rompía los nombres de módulo de Python y los procedimientos de importación. Los problemas específicos que se encontraron fueron:
  • Correo, mapas y tienda: los nombres de los ejecutables han cambiado en los últimos meses. Por ejemplo, en mayo de 2017, las soluciones para la aplicación de correo se rompieron cuando Microsoft cambió el nombre de hxmail a hxoutlook. Microsoft Edge es un caso especial, ya que necesita que se usen dos módulos de aplicación: microsoftedge.exe para la administración del explorador web, y microsoftedgecp.exe (proceso de contenido) para mostrar el contenido de una forma más segura. Por este motivo, es común la creación de alias (un módulo de aplicación que importa todo lo de otro módulo).
  • El tiempo, tienda, teclado moderno y otros: algunos nombres de ejecutable tienen un punto (.) a la mitad, que rompe los procedimientos de importación de módulos. Esto se soluciona reemplazando puntos por guiones bajos (_). Por ejemplo, para Skype, el auténtico nombre del ejecutable es Skype.app.exe, mientras que su módulo de aplicación se llama Skype_app.py. Esta solución ya forma parte de las últimas versiones de NVDA.

Unas pocas notas

Rendimiento de UIA

En la página de GitHub de NVDA se crearon bastantes incidencias relacionadas con problemas de rendimiento de UIA. Aquí se incluyen incidencias de los primeros días en los que se daba soporte a Edge en las que se decía que la navegación por el documento era lenta (resueltas en NVDA 2017.2), problemas en la vista de lista del explorador de archivos mientras se usaba un programa que consumía mucha CPU (GoldWave, por ejemplo) y así sucesivamente. Mientras que algunos son específicos de NVDA, otros pueden reproducirse mientras se usa el narrador, por lo que NV Access y Microsoft están colaborando activamente para identificar y escribir correcciones para problemas de rendimiento e implementación de controles (como los que se han listado arriba).

Narrador es la nueva referencia en lectura de pantalla en Windows 10 y las aplicaciones universales

Hasta hace unos pocos años, cualquier lector de pantalla que quisiera dar soporte a una aplicación o añadir nuevas funciones utilizaba Jaws for Windows como guía. Ese ya no es el caso para Windows 10 y las aplicaciones universales, ya que Narrador proporciona un punto de referencia útil (al menos una implementación base a la que otros fabricantes de lectores de pantalla deberían responder) al leer texto en pantalla, un conjunto de características para dar soporte a las aplicaciones universales, e investigar problemas de UIA. Algunas de las características expuestas arriba, como la notificación de sugerencias de búsqueda, estuvieron inspiradas en la forma que tiene Narrador de manejar diversos eventos de UIA, y gracias a que Narrador lee lo que hay que leer, NVDA viene con soluciones para implementaciones UIA defectuosas para hacer frente a algunos problemas.

Integración de características de este complemento en el lector de pantalla NVDA

Como se ha explicado arriba, algunas funciones del complemento se están (o se han) integrando en NVDA. Aquí se incluyen la notificación de sugerencias de búsqueda, soporte del teclado moderno, rastreo y verbalización del evento de región viva cambiada y así sucesivamente. Normalmente, cuando se integra la función de un complemento en NVDA, sigue el típico ciclo de incidencia-revisión-pruebas-documentación. Para ilustrarlo, vayamos por los pasos implicados en la integración de sugerencias de búsqueda en NVDA:
  1. Incidencia: se creó una incidencia relacionada con las sugerencias de búsqueda en 2016.
  2. Revisión: NV Access y yo iniciamos una fase de revisión donde se discutieron detalles de implementación y se escribieron casos de prueba.
  3. Prueba: en 2017, se estrenó la función de sugerencias de búsqueda en la versión next de desarrollo de NVDA. Esto dio como resultado retroalimentación de los usuarios relacionada con el soporte Braille, sonidos y otros. Después de varias semanas, esta característica se puso a disposición de los usuarios de la versión de desarrollo master, y por tanto estuvo lista para NVDA 2017.3.
  4. Documentación: la característica de sugerencias de búsqueda se documentó en la guía de usuario. La exposición de esta función en este artículo es un caso especial del paso de documentación.
Debido a los cambios del proceso de liberación en 2018, las pruebas se hacen mediante solicitudes de cambio. Además, cuando se considera que se puede incluir en NVDA alguna función de un complemento, modifico el código fuente del complemento para que cumpla las pautas del código fuente de NVDA, como el estilo de comentarios, cabecera de copyright y así sucesivamente.

Cómo dar retroalimentación a los desarrolladores de aplicaciones

La retroalimentación dirige a Windows 10 y las aplicaciones universales. Una de las razones para crear el programa Windows Insider, como han indicado Microsoft y otros, es recopilar comentarios de millones de usuarios, con la esperanza de hacer Windows 10 mejor a largo plazo. Por tanto, enviar retroalimentación sobre Windows 10 y las aplicaciones universales preinstaladas, así como de las aplicaciones de terceros, es crucial en la era del desarrollo dirigido por comentarios. Aquí hay algunos consejos que se pueden poner en práctica a la hora de enviar comentarios a los desarrolladores de aplicaciones:
  1. Compromiso: ten la disposición para comprometerte a usar y probar la aplicación en cuestión.
  2. Documenta: si algo pasa, documenta qué ha pasado, pasos para reproducirlo, y posibles soluciones.
  3. Envía: envía tu retroalimentación a los desarrolladores (centro de comentarios, contacto con desarrolladores de aplicaciones universales de terceros, fabricantes de lectores de pantalla, etc.).
  4. Seguimiento: seguimiento con los desarrolladores para ver si tienen preguntas para ti o para saber qué ocurre con tu retroalimentación.

Buenas prácticas de accesibilidad para aplicaciones universales

Como Windows insider, contribuyente con un lector de pantalla y autor de un complemento para Windows 10 y las aplicaciones universales, me he encontrado numerosos ejemplos donde las aplicaciones eran inaccesibles al principio, o su usabilidad se veía ensombrecida por problemas al trabajar con los controles, la navegación y así sucesivamente. Aquí hay algunos consejos que espero sirvan para hacer las aplicaciones universales verdaderamente accesibles y usables:
  • Escucha la retroalimentación, especialmente los comentarios que vengan de usuarios con discapacidad, como por ejemplo usuarios de lectores de pantalla.
  • No pongas la accesibilidad como un pensamiento de último momento, ni como algo que quieras dejar para trabajar en el futuro (digamos, versión 3). La investigación proactiva de la accesibilidad y sus problemas es algo que los desarrolladores de aplicaciones deberían aprender según las desarrollan.
  • Haz pruebas con lectores de pantalla y otras ayudas técnicas: una forma de validar problemas de accesibilidad reportados por usuarios con discapacidad es usar las ayudas técnicas en la vida real. Usa las herramientas ofrecidas por los lectores de pantalla, como la consola Python de NVDA, el modo desarrollador en Narrador, etc. para localizar dónde se encuentra la raíz del problema.
  • Intenta usar teclados y otros métodos de entrada ofrecidos por diversas ayudas técnicas: la pantalla táctil no es el único método de entrada usado en las aplicaciones universales. Muchos usuarios de lectores de pantalla usan un teclado para interactuar con aplicaciones, y otros usan gestos en sus pantallas táctiles ofrecidos por los lectores de pantalla para navegar por la aplicación y reaccionar a los cambios. Intenta usarlos para asegurarte de que las funciones de la aplicación funcionan como se espera al utilizar teclados y otros métodos de entrada.
  • Usa etiquetas útiles: en caso de que el lector de pantalla te informe de que tu control no tiene etiqueta, asegúrate de ofrecerla. Un buen caso histórico es el centro de seguridad de Windows Defender, donde no había etiquetas para diversos botones en 2016, y que se solucionó en 2017 con la actualización Creators. Además, evita etiquetas XAML genéricas, como clase.otraclase.algo (especialmente en listas y elementos de lista), ya que no proporcionan un cuadro preciso que permita conocer al usuario su ubicación. Un caso clásico es la aplicación del centro de comentarios, donde las etiquetas genéricas para listas estaban presentes en las versiones más antiguas, problema que se ha solucionado en las actualizaciones más recientes.
  • Lanza eventos UIA apropiados: los lectores de pantalla escuchan los eventos UIA para detectar qué está ocurriendo con las aplicaciones. Por ejemplo, si existe la necesidad de verbalizar sugerencias, debería dispararse el evento controlador para. Un ejemplo es la tienda, donde las antiguas versiones no disparaban el evento controlador para cuando aparecían las sugerencias de contenido. Las versiones más recientes ya lanzan este evento.

Conclusión

Con la introducción de Windows 10 y la plataforma Windows Universal ha emergido una nueva forma de conectar a usuarios y desarrolladores: desarrollo dirigido por retroalimentación. Esto permite a los usuarios enviar retroalimentación relacionada con características y fallos, incluyendo los de accesibilidad. Aunque la accesibilidad de Windows 10 y las aplicaciones universales era irregular al principio, esta situación está mejorando, dirigida por el compromiso de Microsoft hacia la accesibilidad, la retroalimentación continuada, y la colaboración entre Microsoft y los fabricantes de ayudas técnicas. Ya centrándonos en NVDA, lo que hizo posible la usabilidad de Windows 10 no fueron solamente los cambios introducidos en Windows y las aplicaciones universales, sino también la investigación proactiva para asegurarse de que los usuarios de NVDA disfrutan de una experiencia fantástica con Windows 10. El complemento Windows 10 App Essentials es parte de ese trabajo, como se ha expuesto en este artículo al hablar sobre las soluciones de UIA, el soporte mejorado de aplicaciones, controles y demás. Sin embargo, hay límites que el complemento no puede superar, y las otras piezas del puzle deben ponerlas los desarrolladores (especialmente los desarrolladores UWP de aplicaciones de terceros) para establecer la accesibilidad como un pilar en sus desarrollos, y los usuarios que envían retroalimentación sobre accesibilidad. Aunque algunas funciones del complemento se están integrando en NVDA, hay algunas áreas donde el complemento es necesario (especialmente al introducir funciones nuevas en las compilaciones de Windows Insider Preview), y mientras no llegue el día en que la accesibilidad esté en todas partes en el ecosistema de Windows 10 y las aplicaciones universales, el complemento seguirá aquí.

Referencias

  • Windows 10 (Wikipedia): https://en.wikipedia.org/wiki/Windows_10
  • Windows Insider Program (Microsoft): https://insider.windows.com/
  • Descripción de Windows como servicio (Microsoft Docs): https://docs.microsoft.com/en-us/windows/deployment/update/waas-overview
  • Qué es una aplicación de la plataforma de Windows universal (UWP) (desarrollador de aplicaciones Microsoft UWP): https://docs.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp
  • Descripción de UI Automation (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee684076(v=vs.85).aspx
  • Descripción de MSAA (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/dd373592(v=vs.85).aspx
  • UI Automation y Active Accessibility (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671585(v=vs.85).aspx
  • Descripción de Component Object Model (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ms680573(v=vs.85).aspx
  • La interfaz IUIAutomationElement (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671425(v=vs.85).aspx
  • cachedAutomationId (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671434(v=vs.85).aspx
  • Descripción de las propiedades de UI Automation (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671594(v=vs.85).aspx
  • Descripción de los eventos de UI Automation (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671221(v=vs.85).aspx
  • Identificadores de eventos en UI Automation (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/ee671223(v=vs.85).aspx
  • Accesibilidad de sugerencias automáticas, parte de los requisitos de textos accesibles (Microsoft Docs): https://docs.microsoft.com/en-us/windows/uwp/accessibility/accessible-text-requirements
  • IUIAutomationNotificationEventHandler::HandleNotificationEvent (MSDN): https://msdn.microsoft.com/en-us/library/windows/desktop/mt814955(v=vs.85).aspx