Últimas noticias

El complemento Windows 10 App Essentials, que mejora la accesibilidad de muchas aplicaciones en Windows 10, se actualiza a la versión 18.08. Los principales cambios de esta versión son:

  • Se ha añadido soporte para la nueva interfaz IUIAutomation6, garantizando que el complemento se adapte a NVDA 2018.3, donde probablemente este soporte irá ya integrado de serie.
  • En Windows 10 Redstone 5, se mejora el rendimiento de NVDA en algunas situaciones empleando funciones introducidas en IUIAutomation6, particularmente al cambiar entre aplicaciones cuando una tarea de larga duración se está ejecutando en segundo plano.
  • Se han actualizado diversas zonas del código para reflejar los cambios introducidos en 2018.
  • Al rastrear eventos, se registra el objeto que envió el evento.
  • Al rastrear eventos de notificación de UIA, se escuchará un tono con propósitos de depuración si la notificación viene desde otro lugar distinto de la aplicación actual.
  • Se procesan los submenús expandidos en lugares distintos al host de experiencia shell de Windows, ya que Microsoft Edge introduce un menú de este tipo en Redstone 5 (pulsando alt+x).
  • Se elimina el manejador personalizado para ciertos controles de reloj, alarmas y configuración, ya que su accesibilidad mejora en versiones recientes de Windows 10 y ya no es necesario.
  • Se añade soporte para las nuevas versiones de la aplicación Personas (mediante un módulo de aplicación).
  • Teclado moderno: al abrir los elementos del portapapeles en Redstone 5, NVDA ya no anunciará «Portapapeles», el título de la lista en cuestión.
  • Personas: NVDA ya vuelve a verbalizar sugerencias de búsqueda al buscar contactos en versiones recientes de la aplicación.

Después de ver todas estas novedades, actualizar es más que recomendable, ¿no crees? Puedes hacerlo desde el actualizador automático incluido en el complemento, o desde la página de información sobre Windows 10 App Essentials de nuestra web.
Por otro lado, Javi Domínguez ha liberado la versión 2.6-dev del complemento para el reproductor VLC Media Player. Esta es una versión de desarrollo, por lo que podría contener fallos. Sin embargo, en ella se soluciona un fallo que había cuando VLC se ejecutaba en pantalla completa, y se mejora el soporte para los cuadros de edición hechos con el motor de interfaces qt. De momento esta última mejora sólo es perceptible en VLC, pero quién sabe si en el futuro podría llegar a más lugares.
Descargar complemento para VLC 2.6-dev
¡Feliz domingo!

En este episodio, que ya tiene algún tiempo, se hace una introducción y se resuelven dudas comunes a la hora de dar el paso de Jaws a NVDA. No ha cambiado gran cosa desde que se publicó, salvo el nuevo diálogo de opciones. En él participan José María Ortiz, Daniel Montalvo, Juan Buño y José Manuel Delicado.
Visita la entrada con el episodio en la web de José María Ortiz
¡Que lo disfrutes!

Este complemento agrega sonidos a elementos comunes, tales como botones, cuadros de edición, casillas de verificación, ETC, reemplazando el anuncio del rol (tipo) de estos objetos por voz/Braille mediante sonidos. Es decir, en lugar de, por ejemplo, anunciar «botón» al navegar por uno, reemplaza el anuncio de la palabra botón por el sonido correspondiente al botón.
Los sonidos se reproducen en modo 3D, es decir, en sonido estéreo (izquierda/medio/derecha en los altavoces o los auriculares) según dónde esté el objeto en la pantalla.
Una vez instalado el complemento también será posible cambiar los sonidos que vienen de forma predeterminada por otros más personalizados. Esto se hace yendo a la carpeta de configuración de NVDA (%appdata%\NVDA en copias instaladas o UserConfig bajo el directorio de copias portables), luego a Addons>Unspoken>globalPlugins>Unspoken>sounds, y siempre y cuando los sonidos estén en .wav y tengan los mismos nombres de archivo de los sonidos originales.

¡Hola!
Ha pasado ya algún tiempo desde que abrimos la convocatoria para participar en el primer encuentro anual de la comunidad de NVDA en español, y desde entonces no habéis dejado de mostrar vuestro interés por este evento. En primer lugar, lo hemos fijado de manera provisional para los días 19, 20 y 21 de octubre, muy cerca del primer aniversario de esta web. En segundo lugar, hemos tomado la decisión de contaros, poco a poco, un poquito más sobre cada ponente de los que ya están confirmados. Haremos esto una vez a la semana, aproximadamente. Pero antes de empezar, me gustaría deciros que el servidor de Teamtalk vuelve a estar operativo, tras solucionar un insignificante error en la configuración que hacía imposible establecer conexión con él. Dicho esto, ¡allá vamos!
El ponente del que vamos a hablaros hoy es Jordi Montserrat. Desde tierras catalanas, viene con un proyecto con el que pretende hacer llegar la accesibilidad a las personas con discapacidad visual, pero aportando un enfoque distinto. Más concretamente, uno de sus objetivos es ayudar a aquellas personas sin discapacidad que nos acompañan, ya sea de forma puntual o permanente, a comprender bien conceptos tales como qué es un lector de pantalla y cómo funciona. NVDA, como no podía ser menos, tiene dedicada una sección bastante extensa en su web, que aunque mayoritariamente se encuentra en catalán, contiene partes en castellano. Si te apetece visitarla antes de la ponencia, entra a http://to.fundacio.coaatt.org/grup-de-treball-tecnologia-oberta/index/indice-de-paginas-en-castellano/.
Os recordamos que la convocatoria de participación sigue abierta hasta el 15 de septiemmbre.
Ir al formulario de registro

Otros avances

Además del encuentro, en estos últimos meses hemos estado ocupados con otras muchas tareas. La más importante, sin duda alguna, es la traducción del libro de formación básica de NVDA, que pondremos a vuestra disposición tan pronto como NV Access le dé el visto bueno. Para aquellos que conozcan el sitio web de NV Access, se trata de la primera de las «training guides». Los libros de Word, Excel y Outlook (cuando se publique) tampoco se van a quedar sin traducir, ya que nuestro objetivo es traeros todo el material posible en español. Estos libros estarán a la venta tanto en la web de NVAccess como en nuestra tienda.

¿Por qué últimamente no hay tantas actualizaciones de complementos?

Esta es una pregunta que nos habéis hecho mucho, y lo cierto es que no os faltan motivos. La respuesta es que, bien sea por vacaciones u otras razones, la comunidad internacional últimamente se está moviendo un poquito menos. Sin embargo, con la llegada de NVDA 2018.3 y WXPython 4, esperamos otra avalancha de actualizaciones. ¡Estad atentos!

Pronto llegarán más podcasts

Uno de los objetivos cuando creamos esta web era recopilar todos los podcasts en español que hablasen de NVDA, pero con la cantidad de complementos y actualizaciones que había lo fuimos dejando… hasta ahora. Pronto comenzaremos a publicar entradas recopilándolos. Algunos son ya algo antiguos, otros más recientes, pero a pesar de ello todos siguen siendo perfectamente válidos para conocer un poco más a fondo nuestro lector de pantalla. Si conocéis algún podcast que hable de NVDA y a lo mejor no ha tenido la difusión suficiente, no dudéis en contactar con nosotros.
¡Hasta la próxima!

Hoy llega la siguiente versión de Station Playlist Studio, la 18.08. Llega con la gran novedad de que solo será compatible con las versiones de NVDA a partir de la 2018.2, debido a que se cambia el diálogo de preferencias por un panel en el nuevo de Opciones. Además, también se añaden varios cambios y correcciones de fallos menores, como un nuevo botón para configurar las transcripciones de listas de reproducción, donde podrás ordenar las columnas del archivo resultante
Como siempre, puedes actualizar este complemento utilizando el método automático para ello o descargarlo manualmente desde los enlaces de arriba. Recuerda: es necesario que tengas la versión 2018.2.

Ayer se actualizaron tres complementos del sitio web oficial para añadir compatibilidad con WX Python 4. Son Golden Cursor (a la 3.1), Systray List (2.4) y Unicode Braille Input (3.9). Se puede actualizar a estas nuevas versiones sin miedo ya utilicemos el canal estable o el de alguna de las versiones de desarrollo, pues la compatibilidad con WX versión 3 se ha mantenido. Es importante actualizar a estas nuevas versiones ya que, probablemente, NVDA 2018.3 incorpore WX 4, con lo que versiones anteriores de estos complementos podrían no funcionar correctamente con la próxima actualización del lector.
Por otro lado, el autor de Clipspeak ha declarado la versión 1.0 de su complemento como estable, lo que significa que tiene un menor grado de errores y ha sido probada sin fallos significativos durante un tiempo. También ha aprovechado para corregir un error en su nombre de la documentación.
Si te has quedado con dudas, recuerda que estamos activos a través de una gran variedad de canales para que puedas planteárnoslas. En la parte inferior de esta página tienes nuestros perfiles en redes sociales y algunos enlaces a lugares de discusión relevantes en la comunidad, y en el menú principal el enlace a nuestro formulario de contacto por correo electrónico.
Si te gusta nuestro trabajo, plantéate hacer una donación.
Feliz domingo.

A la hora de programar un complemento que tiene algún tipo de interfaz gráfica, o hacer modificaciones a la propia interfaz de NVDA, todos los desarrolladores ciegos nos hacemos la misma pregunta tarde o temprano: ¿cómo se ve en pantalla esto que estoy programando? Podemos probar distintas combinaciones de constantes, posiciones y tamaños para los controles, pero al no poder verlos, probablemente el resultado no sea el que esperamos. En la entrada de hoy vamos a hablar del módulo guiHelper, disponible desde la versión 2016.4 de NVDA. La misión de este módulo es abstraernos un poco de los detalles más visuales del diseño de nuestra interfaz, de tal forma que sólo debamos preocuparnos de añadir controles y funcionalidad. El módulo no hace magia, pero nuestras interfaces quedarán probablemente un poquito mejor que antes. Si quieres conocer este módulo un poco más, sigue leyendo. ¡Allá vamos!
Nota: en este artículo se asume que el lector tiene conocimientos sobre la programación de complementos con interfaz gráfica.

Importar el módulo

El módulo guiHelper se encuentra en el paquete gui. Si nuestro complemento tiene interfaz gráfica, en algún momento seguramente habremos importado los módulos gui y wx, por lo que sólo haría falta escribir esto:
from gui import guiHelper
Una vez hecho esto, ya podremos acceder a sus constantes, funciones y clases.

Constantes de guiHelper

Estas constantes vienen incluidas directamente en el módulo.

  • BORDER_FOR_DIALOGS: es el borde que se encuentra alrededor de cada control dentro de un diálogo.
  • SPACE_BETWEEN_VERTICAL_DIALOG_ITEMS: cuando los elementos de un diálogo se disponen de manera vertical, esta constante se puede emplear para indicar cuánto espacio hay entre cada elemento.
  • SPACE_BETWEEN_BUTTONS_HORIZONTAL: especifica el espacio que hay entre botones dispuestos de manera horizontal.
  • SPACE_BETWEEN_BUTTONS_VERTICAL: igual que en el caso anterior, pero se aplica cuando los botones están dispuestos verticalmente unos sobre otros.
  • SPACE_BETWEEN_ASSOCIATED_CONTROL_HORIZONTAL: es el espacio que separa a dos controles relacionados dispuestos en horizontal.
  • SPACE_BETWEEN_ASSOCIATED_CONTROL_VERTICAL: lo mismo que en el caso anterior, pero en disposiciones verticales.

Funciones de guiHelper

A día de hoy, guiHelper sólo dispone de una función a nivel de módulo: associateElements. Esta función introduce dos controles en un objeto Sizer de wx, situándolos en horizontal o vertical y separándolos adecuadamente según su tipo. Su cabecera es la siguiente:
def associateElements( firstElement, secondElement)
Los controles deben pasarse en el orden en que queremos que se asocien. Las posibles asociaciones son:

  • wx.StaticText y wx.Choice, wx.TextCtrl o wx.Button: asocia una etiqueta con un cuadro combinado, un cuadro de edición o un botón, en disposición horizontal.
  • wx.StaticText y wx.ListCtrl o wx.ListBox o wx.TreeCtrl: asocia una etiqueta con una presentación en lista, un cuadro de lista o una vista en árbol, en disposición vertical.
  • wx.Button y wx.CheckBox: asocia un botón y una casilla de verificación, disposición horizontal.
  • wx.TextCtrl y wx.Button: asocia un cuadro de texto y un botón en posición horizontal.

En todos los casos, los controles deben ser objetos ya instanciados. La función devuelve el objeto Sizer que los contiene, listo para añadirlo a un diálogo u otro Sizer.

Clases de guiHelper

El módulo guiHelper dispone de cuatro clases que nos ayudan a construir nuestra interfaz. Aunque vamos a verlas todas, la que más se usa es BoxSizerHelper. Todas ellas tienen el atributo sizer, empleado al construir el resto de la interfaz.

La clase ButtonHelper

Esta clase sirve para añadir el espacio adecuado entre botones, tanto en horizontal como en vertical. Al instanciar objetos a partir de ella, se debe especificar la orientación del Sizer que va a generar, ya sea wx.VERTICAL o wx.HORIZONTAL. Por ejemplo:
bh=guiHelper.ButtonHelper(wx.VERTICAL)
Una vez construido el objeto, podemos agregar botones llamando al método addButton:
bh.addButton(mydialog, label=_("Test button 1"))
El método addButton construye un nuevo botón con los parámetros que le pasemos, o también puede añadir un botón previamente creado. Es imprescindible indicar en el primer caso el diálogo o ventana padre que contendrá al botón, y una etiqueta por razones de accesibilidad con el parámetro label. Al acabar, se devuelve el botón creado para que podamos hacer cosas con él, como asociarle acciones.

La clase LabeledControlHelper

Esta clase permite crear controles etiquetados y asociar etiqueta y control entre sí en un Sizer. Se apoya en la función associateElements que vimos más arriba. La cabecera de su constructor es:
def __init__(self, parent, labelText, wxCtrlClass, **kwargs)
Por lo tanto, para construir un objeto de tipo LabeledControlHelper necesitamos pasar como parámetros el diálogo o ventana padre, el texto de la etiqueta que acompañará al control, la clase del control (cuidado, aquí no valen controles previamente creados), y cualquier argumento que necesite el control para construirse. Veámoslo de forma más clara con un ejemplo:
lch=guiHelper.LabeledControlHelper(mydialog, "Selecciona una fruta", wx.Choice, choices=['pera', 'manzana', 'fresa'])
En el ejemplo anterior hemos pasado como clase wx.Choice para crear un cuadro combinado, y como parámetros adicionales las opciones que presentará.
La clase LabeledControlHelper dispone de dos atributos para que podamos trabajar cómodamente: sizer, igual que en el resto de clases, y control, que hace referencia al control de wx que hemos creado.

La clase PathSelectionHelper

Esta clase nos permite crear de una forma rápida, sencilla y abstrayéndonos de todos los detalles, un cuadro de edición y un botón «Examinar…» como los que aparecen en muchos programas, con el objetivo de que podamos fabricar un selector de rutas. En el constructor le pasamos el padre, como siempre, el texto del botón Examinar, y el título del diálogo que se desplegará para seleccionar una ruta cuando pulsemos dicho botón. Por ejemplo:
psh=guiHelper.PathSelectionHelper(mydialog, "Examinar...", "Selecciona la carpeta que contiene los documentos")
Como en los casos anteriores, tenemos la propiedad sizer, pero además aquí nos acompaña otra: pathControl, que contiene una referencia al cuadro de texto donde está escrita la ruta.
En caso de que sea necesario, se podría crear una clase que herede de esta y sobreescribir o extender los métodos getDefaultBrowseForDirectoryPath y onBrowseForDirectory. El primero devuelve la ruta por defecto que muestra el diálogo de seleccionar carpeta, y el segundo muestra este diálogo y almacena el resultado en el cuadro de edición.

La clase BoxSizerHelper

Llegamos a la clase más importante de este módulo, la más usada, y la que emplea la funcionalidad expuesta en casi todas las otras. BoxSizerHelper permite configurar la disposición interna de un objeto Sizer. La cabecera de su constructor es:
def __init__(self, parent, orientation=None, sizer=None)
Como siempre, el primer argumento que espera recibir es la ventana padre. Después, podemos pasar una orientación (wx.VERTICAL o wx.HORIZONTAL), en cuyo caso se creará internamente un objeto Sizer, o un Sizer ya creado, a ser posible vacío. Si pasamos ambos parámetros, se produce un error.
Al igual que sucede en los casos anteriores, tenemos un atributo sizer. Esta clase, además, presenta los siguientes métodos:

  • addItem(self, item, **keywordArgs): añade un control wx ya creado y lo sitúa adecuadamente. El último argumento es opcional y sólo se usa en raras ocasiones. El método devuelve el elemento que se pasa como parámetro, para que podamos asociarle acciones y hacer otras cosas con él.
  • addLabeledControl(self, labelText, wxCtrlClass, **kwargs): añade un control etiquetado. El primer parámetro que recibe es el texto con la etiqueta del control, seguido de la clase del control y los parámetros adicionales que se quieran pasar. Fíjate en el ejemplo anterior del cuadro combinado. Este método devuelve el control que se acaba de agregar.
  • addDialogDismissButtons(self, buttons): agrega y alinea los botones Aceptar, Cancelar y Aplicar de los diálogos estándar. Este método debería llamarse cuando ya se han añadido todos los demás controles. Buttons puede ser un objeto wx.Button, un objeto wx.Sizer o un objeto guiHelper.ButtonHelper. Devuelve el mismo objeto que se le pasa como parámetro.

Aplicaciones prácticas

Al igual que en una entrada anterior, vamos a poner como ejemplo el complemento Enhanced Aria (aunque esta vez no vendrá solo), para demostrar lo fácil que es adaptar nuestros complementos para que se apoyen en guiHelper. En la versión 1.3, para agregar la primera casilla de verificación del diálogo de ajustes de aria mejorada, se hacía esto:
self.bannerenabled=wx.CheckBox(self, wx.NewId(), label=(u"Report banners")) # Como self es una clase que hereda de wx.Dialog, se pasa como padre
self.bannerenabled.SetValue(config.conf['aria']['reportBanner']) # Se establece el valor de la casilla

sizer.Add(self.bannerenabled,border=10,flag=wx.BOTTOM) # se añade la casilla sizer
Como se puede comprobar, hay que crear la casilla con su etiqueta correspondiente, asignarle el valor adecuado y añadirla al objeto que va a contenerla, con indicadores de borde y alineación. Sin embargo, en la versión 2.0 basta con hacer esto:
def createSettings(obj, sizer):
helper=guiHelper.BoxSizerHelper(obj, sizer=sizer)
obj.bannerenabled=helper.addItem(wx.CheckBox(obj, wx.NewId(), label=
("Report banners")))
obj.bannerenabled.SetValue(config.conf['aria']['reportBanner'])

Como se puede ver, creamos un BoxSizerHelper pasando como parámetro el Sizer que nos dan en el método makeSettings, y que en el caso particular de esta implementación se pasa a createSettings. A continuación, agregamos una nueva casilla de verificación llamando a addItem, y luego establecemos su valor.
Veamos el diálogo de Windows 10 App Essentials, que también se apoya en este módulo. Lo podemos encontrar en el archivo w10config.py. Se trata de un diálogo completo, una clase que hereda de wx.Dialog. Por lo tanto, construirlo implica más esfuerzo, al no tener a nuestra disposición la clase SettingsDialog de NVDA o la clase SettingsPanel. En lugar del método makeSettings, que ya nos da un Sizer, las operaciones de construcción se hacen en el constructor del diálogo.
En primer lugar, se crea un objeto de tipo BoxSizer:
mainSizer = wx.BoxSizer(wx.VERTICAL)
Y a continuación, se crea un BoxSizerHelper con un Sizer nuevo, que será hijo del que se acaba de crear:
w10Helper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
Teniendo el BoxSizerHelper, ya se pueden añadir controles. Vamos a ver dos de ellos, la casilla de verificación y el cuadro combinado.
self.autoUpdateCheckbox=w10Helper.addItem(wx.CheckBox(self,label=_("Automatically check for add-on &updates"))) # Se crea la casilla
self.autoUpdateCheckbox.SetValue(config.conf["wintenApps"]["autoUpdateCheck"]) # Se establece su valor
labelText = _("&Add-on update channel:") # Etiqueta del cuadro combinado
self.channels=w10Helper.addLabeledControl(labelText, wx.Choice, choices=["development", "stable"]) # Cuadro combinado

Ya para acabar, se añaden los botones Aceptar y cancelar, y se hace de una forma muy particular, ya predefinida en wx:
w10Helper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
En este caso no existe acceso directo a los botones, como sí pasa con el resto de los controles, así que las asociaciones se hacen de esta manera:
self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)
self.Bind(wx.EVT_BUTTON, self.onCancel, id=wx.ID_CANCEL)

El BoxSizerHelper ya está completo, hay que añadirlo al Sizer principal. Una vez más, se pide ayuda a guiHelper, y al propio motor wx para centrarlo y posicionarlo:
mainSizer.Add(w10Helper.sizer, border=gui.guiHelper.BORDER_FOR_DIALOGS, flag=wx.ALL)
mainSizer.Fit(self)
self.Center(wx.BOTH | (wx.CENTER_ON_SCREEN if hasattr(wx, "CENTER_ON_SCREEN") else 2))

Conclusión

Es importante que nuestros complementos e interfaces gráficas en general sean visualmente usables. Aunque NVDA es un lector de pantalla empleado mayoritariamente por personas con discapacidad visual, estas personas suelen estar acompañadas por otras que ven perfectamente, especialmente cuando se introducen en el mundo de la informática. Por tanto, debemos tener en cuenta a todos los posibles usuarios.
En esta entrada hemos conocido el módulo guiHelper, que nos ayuda precisamente en esta tarea. GuiHelper no hace magia, no tiene ningún tipo de «inteligencia artificial» que coloque nuestros controles exactamente como deberían estar para que nuestra interfaz sea atractiva. Sin embargo, nos ayuda un poco a conseguirlo, simplifica nuestro código y por lo tanto facilita el mantenimiento.
Si tus complementos no se apoyan todavía en este módulo, no esperes más para adaptarlos. Tus usuarios lo agradecerán, ¡y tú también!

Esta mañana, NV Access ha anunciado en una publicación que van a producirse cambios en la metodología de desarrollo de NVDA que afectarán tanto a los desarrolladores como a aquellos usuarios que prueban las versiones de desarrollo. Estos cambios se llevan a cabo para aprovechar mejor la infraestructura de Github, y porque existen cada vez más pruebas unitarias que garantizan que el código siempre tendrá cierta calidad. El principal cambio que se llevará pronto a cabo es la descontinuación de la rama next, así como sus versiones de desarrollo. La rama next ya no es necesaria porque las solicitudes de cambios (pull requests) pasan una serie de controles automatizados antes de que los desarrolladores decidan si las mezclan o no. Esto, junto al creciente número de pruebas unitarias automatizadas, hace que ya no sea necesario probar de forma tan exhaustiva el código. Aquellos usuarios que tengan instalada la versión de desarrollo next de NVDA comenzarán a recibir actualizaciones de la versión de desarrollo master. Los que utilicen las versiones de desarrollo master, por su parte, seguirán recibiendo actualizaciones por este canal de desarrollo. Pero cuidado, porque el código que antes llegaba a next ahora se recibe en master, lo que significa que estas versiones dejarán de ser tan estables como hasta ahora.
Pero entonces, ¿qué ocurre con aquellos que quieran ir por delante de las versiones rc y oficiales, pero sin arriesgarse a tener un lector de pantalla lleno de fallos?
Aproximadamente siete semanas antes de la liberación estable de NVDA, comenzarán a ponerse a disposición del público versiones beta. Habrá una rama beta en el repositorio de NVDA. El código de estas versiones de desarrollo será tan estable como el de las versiones master actuales. Para acabar, los traductores y los usuarios de versiones estables no se verán afectados por ninguno de estos cambios.
Hay más cambios específicos para desarrolladores, relacionados con la gestión de solicitudes de cambios. Ya se encuentran disponibles en nuestra traducción del artículo El proceso de liberación de versiones, disponible en inglés en la wiki de NVDA en GitHub.
Por otro lado, NV Access le ha dado un lavado de cara a su sitio web, renovándolo por completo. Ahora, entre otras cosas, ya no es obligatorio introducir una dirección de correo electrónico para descargar NVDA desde allí, los textos de la página de inicio han cambiado para mostrar la filosofía de la organización, y hay nuevas secciones con enlaces para que tengamos todos sus recursos más a mano. ¡Bien hecho!
Esto es todo por el momento. Pronto volveremos con más artículos para desarrolladores, complementos no oficiales descubiertos y detalles sobre nuestro encuentro anual.
¡Hasta la próxima!

El complemento Windows 10 App Essentials, que añade mejoras a nuestra experiencia con aplicaciones nativas de Windows10, se actualiza hoy a la versión 18.07.1A. Esta A tras el número de versión significa que las modificaciones son muy pequeñas, lo cual concuerda en este caso con el registro de cambios: Lo único nuevo es que ahora se omite el texto «encabezado 1» después del resultado en la calculadora. No era un error ya que el sistema informa a NVDA de un encabezado 1 después del resultado, pero igualmente se ha cambiado el comportamiento por comodidad y costumbre.
Como siempre ocurre con los complementos que tienen un actualizador automático, hay dos formas de descargar las nuevas versiones: podemos optar por el mencionado actualizador, o bien podemos pulsar en el enlace de más arriba, que nos llevará a la ficha del complemento en esta web desde la que podremos, además de leer toda la información sobre él, obtener el paquete nvda-addon que nos permitirá instalarlo mediante el método usual.

En el mundo NVDA comenzamos el mes de julio con otra actualización del complemento Windows 10 App Essentials, a la versión 18.07.1. Viene con varios cambios significativos: por un lado, las alertas marcadas como tal mediante aria se anunciarán cuando cambien en Edge y otras aplicaciones que utilicen su motor, y por otro NVDA será menos detallado al explorar emojys mediante el Panel de Emojys en la compilación 17704 y posteriores.
Como siempre, hacerte con esta nueva versión es tan fácil como esperar a que el propio complemento te pregunte. También puedes forzar la verificación de actualizaciones desde el diálogo de configuración del complemento o descargarla manualmente de la forma habitual.

Feliz semana.