Últimas noticias

¡Hola a todos!
Faltan un par de semanas para que NVDA 2018.2 vea la luz, y sin embargo nadie ha parado de hablar de los cambios que trae desde hace ya un tiempo. Uno de los más importantes es el nuevo diálogo de preferencias organizado en categorías, al que hemos hecho referencia ya en varias entradas al hablar de complementos que se actualizan. En este tutorial veremos qué hay que hacer para que el diálogo de preferencias de nuestro complemento se integre en el nuevo diálogo de opciones de NVDA. Nos apoyaremos en el complemento Enhanced Aria, ya que su código es bastante simple, está en un único módulo y los cambios realizados son relativamente sencillos de entender. ¡Comencemos!
Nota: este es un artículo avanzado de desarrollo. Se asume que el lector sabe hacer complementos sencillos, y conoce el lenguaje Python con todo lo que ello conlleva.

Creación de ajustes sensibles a cambios de perfil

NVDA nos da mucha flexibilidad a la hora de crear diálogos para nuestros complementos. De hecho, nos da tanta que nos podemos perder, hacernos un lío, y programar todo con wx para luego darnos cuenta de que existen módulos que nos abstraen de un montón de detalles complejos. Con la configuración pasa exactamente lo mismo, podemos saber que existe configobj, pero ignorar que hay una capa por encima que nos facilita la vida. Definir una especificación de configuración es tan sencillo como crear una variable global en el módulo de nuestro complemento, indicando de qué tipo son los valores y el valor por defecto de cada uno. Esta es la configuración de Enhanced Aria:
confspec={
 "reportBanner":"boolean(default=true)",
 "reportMain":"boolean(default=true)",
 "reportContentinfo":"boolean(default=true)",
 "reportNavigation":"boolean(default=true)",
 "reportComplementary":"boolean(default=true)",
...}
En el caso de Enhanced Aria, todo lo que se configura es booleano, casillas que se marcan o desmarcan. Una vez definida la especificación, hay que decirle a NVDA que la añada al conjunto de especificaciones. Una variable global definida por sí sola en un módulo no va a hacer nada: config.conf.spec['aria']=confspec
Después de este inciso, breve pero necesario para entender todo lo demás, vamos a los diálogos en sí.

El diálogo tradicional de ajustes

Un diálogo tradicional de ajustes es una clase que hereda de gui.settingsDialogs.SettingsDialog. ¡Cuidado con las mayúsculas al programar, nos pueden hacer pasar un mal rato! Todos los diálogos de preferencias de NVDA heredan de esta clase, y los complementos también suelen hacerlo. La clase SettingsDialog nos ofrece varios métodos y propiedades que podemos redefinir:

  • title: propiedad que define el título del diálogo. Debe ser una cadena de caracteres.
  • makeSettings(self, sizer): este método se usa para rellenar el sizer que se recibe como parámetro con los controles que queramos. Enseguida vemos un ejemplo.
  • postInit(self): se ejecuta tras crear y mostrar el diálogo en pantalla. Sirve para llevar el foco por defecto a un control que nos interese, por ejemplo.
  • onOk(self, evt): NVDA llama a este método cuando se pulse el botón aceptar. Los botones Aceptar y Cancelar vienen ya en la clase padre, no tenemos que añadirlos en makeSettings. Aquí se hacen cosas tales como guardar la configuración. Importante llamar al método de la clase padre cuando terminemos.
  • onCancel(self, evt): método que se ejecuta al pulsar el botón cancelar. Importante llamar al método de la clase padre si lo redefinimos.

NVDA 2018.2 extiende este diálogo añadiendo un botón de aplicar, el evento asociado (onApply), y la posibilidad de que el diálogo pueda abrirse varias veces simultáneamente. Todas estas novedades son opcionales para conservar la compatibilidad con complementos que no se adapten a ellas.
Veamos algunos ejemplos. El título de Enhanced Aria es traducible a otros idiomas, y quedaría así: title=(u"Enhanced Aria settings")
El método makeSettings sería el siguiente. Para no hacer muy pesada la lectura, se pondrá sólo una parte:
 def makeSettings(self, sizer):
  #TRANSLATORS: report banners checkbox
  self.bannerenabled=wx.CheckBox(self, wx.NewId(), label=
(u"Report banners"))
  self.bannerenabled.SetValue(config.conf['aria']['reportBanner'])
  sizer.Add(self.bannerenabled,border=10,flag=wx.BOTTOM)
  #TRANSLATORS: report main content checkbox
  self.mainenabled=wx.CheckBox(self, wx.NewId(), label=(u"Report main content"))
  self.mainenabled.SetValue(config.conf['aria']['reportMain'])
  sizer.Add(self.mainenabled,border=10,flag=wx.BOTTOM)
#TRANSLATORS: report search forms checkbox
  self.searchenabled=wx.CheckBox(self, wx.NewId(), label=
(u"Report search forms"))
  self.searchenabled.SetValue(config.conf['aria']['reportSearch'])
  sizer.Add(self.searchenabled,border=10,flag=wx.BOTTOM)
...

Como se puede ver, no sólo creamos, etiquetamos y añadimos casillas de verificación, sino que establecemos su valor basándonos en la configuración actual. Una vez creadas, postInit hace lo siguiente:
 def postInit(self):
  self.bannerenabled.SetFocus()

Nuestro diálogo ya está listo. Como se puede intuir, no se ha redefinido el método onCancel, que simplemente descarta todo y no tiene que hacer nada más. Sin embargo, el método onOk sí tiene trabajo.
def onOk(self, evt):
  config.conf['aria']['reportBanner']=self.bannerenabled.GetValue()
  config.conf['aria']['reportMain']=self.mainenabled.GetValue()
  config.conf['aria']['reportSearch']=self.searchenabled.GetValue()
  config.conf['aria']['reportForm']=self.formenabled.GetValue()
  ...
  applyConfig()
  super(enhancedAriaSettings, self).onOk(evt) # Importante, llamada al padre!

Y ahora, ¿qué hacemos para poder llegar a este diálogo?
Como bien se ha dicho antes, la magia no existe. En el método init de la clase GlobalPlugin, hay que crear un elemento de menú y asociarlo al submenú preferencias de NVDA.
  self.prefsMenu = gui.mainFrame.sysTrayIcon.menu.GetMenuItems()[0]
  #TRANSLATORS: The configuration option in NVDA Preferences menu
  self.enhancedAriaSettingsItem = self.prefsMenu.Append(wx.ID_ANY, _(u"Enhanced aria settings..."), _(u"Change enhanced Aria settings"))
  gui.mainFrame.sysTrayIcon.Bind(wx.EVT_MENU, self.onEnhancedAriaMenu, self.enhancedAriaSettingsItem) # Asociamos abrir el menú a activar el diálogo

No debemos olvidarnos de eliminar el elemento de menú en el método terminate, de lo contrario aparecerá duplicado al recargar las extensiones: self.prefsMenu.RemoveItem(self.enhancedAriaSettingsItem)
Para activar el diálogo, hacemos algo como esto: gui.mainFrame._popupSettingsDialog(enhancedAriaSettings)
Esta es la clase que contiene nuestro diálogo, enhancedAriaSettings. Pero lo hará por poco tiempo, ¡es hora de dar el salto al diálogo de categorías!

El panel de configuración en el diálogo de categorías

Para añadir paneles de configuración al diálogo de opciones, simplemente debemos crear una clase que herede de gui.settingsDialogs.SettingsPanel, y añadir nuestro panel al diálogo de opciones de NVDA, que está definido como variable global en el módulo gui. Esta clase nos ofrece los siguientes métodos y propiedades:

  • title: el título del panel de configuración.
  • makeSettings(self, sizer): al igual que antes, se nos pasa un sizer que rellenaremos con controles.
  • onSave(self): código que se ejecuta al pulsar los botones aceptar o aplicar del diálogo. Ya no es necesario llamar al método padre, como sí pasaba en onOk.
  • onPanelActivated(self): código que se ejecuta cuando se selecciona este panel. Aquí sí se debería llamar al método padre. Sin embargo, no deberíamos mover el foco como se hacía en postInit.
  • onPanelDeactivated(self): código que se ejecuta al abandonar el panel. Se debe llamar al método padre si lo redefinimos.
  • onDiscard(self): método que se llama al salir del diálogo de opciones sin guardar los cambios.

Una vez definido nuestro panel, debemos agregarlo al diálogo de opciones de NVDA. Por ejemplo, en el método init de la clase GlobalPlugin: NVDASettingsDialog.categoryClasses.append(enhancedAriaPanel)
Y por supuesto, eliminarlo en el método terminate, de lo contrario nos arriesgamos a que se duplique: NVDASettingsDialog.categoryClasses.remove(enhancedAriaPanel)
El código queda más simple, ¿verdad? Es muy sencillo hacer un complemento con preferencias que se adapte a NVDA 2018.2. Y como a mí no me gusta lo fácil, vamos a complicarlo un poco: vamos a añadir compatibilidad entre versiones. Puede haber gente que no quiera actualizar NVDA, y no debemos olvidarnos de ellos.

Soporte para todas las versiones de NVDA posibles

Llegados a este punto, podríamos tener dos clases: una con el diálogo y otra con el panel. Podríamos añadir el panel al diálogo de opciones y crear un elemento de menú en el submenú preferencias, y no pasaría nada. Como ya se ha dicho, NVDA nos da flexibilidad. ¿Permitiría esto que nuestro complemento adaptado funcionase con versiones antiguas? La respuesta ya te la puedes imaginar, si fuera afirmativa no existiría este apartado en el tutorial.
Por un lado, tal y como está, nuestro complemento muere estrepitosamente en NVDA 2018.1.1, diciendo que hay módulos que no encuentra. Por otro, queremos que el elemento de menú aparezca en versiones antiguas, y el panel del diálogo de opciones en las nuevas. Para lo último, en los métodos init y terminate de GlobalPlugin, podemos hacer algo como esto.
Método init:
  if hasattr(settingsDialogs, 'SettingsPanel'): # Es el nuevo NVDA
   NVDASettingsDialog.categoryClasses.append(enhancedAriaPanel)
  else:
   self.prefsMenu = gui.mainFrame.sysTrayIcon.menu.GetMenuItems()[0].GetSubMenu()
   #TRANSLATORS: The configuration option in NVDA Preferences menu
   self.enhancedAriaSettingsItem = self.prefsMenu.Append(wx.ID_ANY, _(u"Enhanced aria settings..."), _(u"Change enhanced Aria settings"))
   gui.mainFrame.sysTrayIcon.Bind(wx.EVT_MENU, self.onEnhancedAriaMenu, self.enhancedAriaSettingsItem)

Método terminate:
   if hasattr(settingsDialogs, 'SettingsPanel'):
    NVDASettingsDialog.categoryClasses.remove(enhancedAriaPanel)
 else: # Es el antiguo
    self.prefsMenu.RemoveItem(self.enhancedAriaSettingsItem)

Como se puede comprobar, miramos si existen atributos que sólo podrían existir en NVDA 2018.2.
De cara a la importación de módulos, podríamos hacer algo como esto:
import gui
from gui import settingsDialogs
try:
 from gui import NVDASettingsDialog
 from gui.settingsDialogs import SettingsPanel
except:
 pass # No hacer nada si falla

El planteamiento está muy bien. Si falla al importar las clases es porque no existen, ya que estamos en un NVDA antiguo. Por lo tanto, nos olvidamos del panel y usamos el elemento de menú y el diálogo clásico. ¿Todos estamos deacuerdo? Sí, excepto el intérprete Python.
Cuando Python lea nuestro archivo de complemento, verá que intentamos definir la clase del panel, y que indicamos un padre que no existe porque no lo hemos importado. Por suerte, Python es tan flexible como NVDA: cualquier variable se puede asignar a cualquier cosa, sin importar el tipo e incluso sin que importe que sea una clase o función. Lo único que nos pide es algo de lo que pueda heredar el panel, así que vamos a darle el objeto base del lenguaje: object. En la cláusula except, en vez de poner pass para que no haga nada, hacemos: SettingsPanel=object

Optimización de código

Es tentador copiar y pegar código de unos métodos a otros. En el caso de EnhancedAria, siempre define las mismas casillas, y siempre guarda la misma configuración. Sin embargo, no es una buena práctica, ya que si tenemos un fallo este también se duplica, y hay que corregirlo tantas veces como se haya hecho el copia-pega. Por lo tanto, se ha sacado el código repetido y se ha metido en funciones globales del módulo:

  • addonSettingsTitle: título del diálogo y del panel. Es el mismo en ambos casos. Si lo dejamos duplicado, un traductor tendría que modificarlo dos veces.
  • createSettings(obj, sizer): obj es una referencia al objeto que llama a la función. Es como el self que vimos antes. Esta función crea las casillas.
  • storeSettings(obj): almacena los ajustes al pulsar el botón aceptar.

Haciendo estos cambios, el tamaño de las clases se reduce. Así quedaría el método onSave:
 def onSave(self):
  storeSettings(self)

Conclusión

Existen muchas formas de adaptar nuestros complementos para que aprovechen las nuevas características introducidas en NVDA 2018.2. Podemos modificarlos, o podemos dejarlos como están. Sin embargo, para proporcionar una experiencia de usuario consistente, se recomienda lo primero más que lo segundo. En este tutorial se ha visto sólo una de las muchísimas alternativas existentes. Tanto Python como NVDA son flexibles, permitiendo que cada desarrollador haga las cosas a su manera y optimice el código como le parezca oportuno. Por ejemplo, la simplificación de código vista anteriormente podría haberse hecho definiendo una clase y aplicando herencia múltiple, si bien es cierto que este enfoque podría complicar un poco las cosas. Espero que hayáis disfrutado leyendo este tutorial tanto como yo al escribirlo, y que os sirva para poner vuestros complementos al día. Para cualquier pregunta o sugerencia, no dudéis en dejarnos un comentario debajo.
¡Hasta la próxima!

El complemento Emoticons se actualiza a la versión 6.4. En esta nueva versión se incluyen traducciones actualizadas, y un cambio en una línea de código que lo hará compatible con NVDA 2018.2. Si tienes pensado actualizar tu copia de NVDA cuando llegue el momento, cosa que desde esta web te recomendamos, es importante que instales la nueva versión de este complemento.
Más información y descarga de Emoticons
Muchos complementos se están actualizando estos días para funcionar con NVDA 2018.2 y utilizar el nuevo diálogo multicategoría. Te recomendamos que estés atento para instalarlos, nosotros intentaremos informarte lo antes posible cada vez que alguno se actualice.

El complemento Focus Highlight, que ayuda a educadores y personas con discapacidad visual leve o moderada a saber dónde están los cursores de NVDA dibujando rectángulos en pantalla, se actualiza a la versión 5.0. Entre sus novedades destacan el uso de la tecnología GDI Plus para dibujar, el soporte para varios monitores y un cambio en los indicadores del foco y el navegador de objetos.
Más información y descarga de Focus Highlight
Como siempre, te recomendamos que mantengas tus complementos actualizados para beneficiarte de las últimas mejoras en seguridad, estabilidad y funcionamiento en general.
Si te gusta la información que te ofrecemos sobre NVDA, plantéate hacer una donación para contribuir al mantenimiento de esta web. ¡Te lo agradeceremos!

El complemento Place Markers, creado por Noelia Ruiz y Chris Leo, se actualiza a la versión 9.0. Esta versión incluye traducciones actualizadas, mejoras en la documentación y la ayuda, y dos nuevas características solicitadas por un usuario: la posibilidad de borrar marcas desde el diálogo que se abre al pulsar NVDA+alt+k, y la de crear y desplazarse a una marca temporal para cada documento. Para guardar o desplazarse a marcas temporales es necesario asignar gestos, por ejemplo una combinación de teclas, en el diálogo Gestos de entrada. Por defecto vienen sin asignar.
Como siempre, te recordamos que es muy importante mantener actualizados tus complementos para que disfrutes de una experiencia de usuario óptima con NVDA. Si quieres más información sobre el diálogo de gestos de entrada, puedes consultar la guía de usuario.

Este complemento permite obtener información según el texto
seleccionado. Simplemente selecciona algo y usa un atajo de teclado para
obtener información. Con suerte, se debería presentar algo que encaje con el
contexto.

Nota: este paquete se distribuye bajo los términos de la GNU General Public
License, versión 2 o posterior. Por favor, consulta el archivo copying.txt
para más detalles.

Atajos de teclado

Nota: estos atajos de teclado asumen que usas la distribución de teclado en
inglés, y podrían no funcionar en otros casos. Si hay un problema, intenta
cambiarlos primero en el diálogo de gestos de entrada.

  • NVDA+; (punto y coma): proporciona información basada en el texto
    seleccionado
  • NVDA+shift+; (punto y coma): proporciona información basada en el
    contenido del portapapeles
  • NVDA+ctrl+; (punto y coma): verbaliza la última información que se
    recibió. Pulsa este atajo dos veces para mostrarla en un diálogo.

Servicios soportados

Actualmente, se soportan las siguientes funciones:

  • Información de una dirección ip usando la API de IPInfoDB. Se proporciona
    una clave de API. Sin embargo, no se puede garantizar que vaya a funcionar
    siempre. Puedes generar la tuya propia, e introducirla en la parte
    superior de init.py, reemplazando la antigua.
  • Definiciones de diccionario en inglés de la Princeton Wordnetweb. Nota:
    estas definiciones no son las mejores, y la base de datos carece de
    definiciones para palabras simples, como could, you, etc.
  • Búsqueda de ISBN mediante la API de libros de Google
  • Verificación del tipo de tarjeta de crédito

Nota: se emplean expresiones regulares para verificar los datos. Hay algunas
que en este momento no se usan, como las de correos electrónicos o números
de teléfono. Esto podría cambiar en el futuro.

Cómo contribuir

Las contribuciones son muy bienvenidas. Puedes enviar una solicitud de
cambios, o contactar con el autor mediante las siguientes vías:

Twitter: @cartertemm

Correo electrónico: [email protected]

El complemento Clip Contents Designer, que permite copiar texto al portapapeles sin eliminar el que ya se haya copiado previamente, se actualiza a la versión 7.1 con traducciones mejoradas. Su autora también ha liberado una versión de desarrollo, la 8.0-dev, que añade compatibilidad con el nuevo diálogo multicategoría de preferencias presente en las versiones de desarrollo de NVDA. La versión 8.0-dev de este complemento no es compatible con NVDA 2018.1 o 2018.1.1 y versiones anteriores, y fallará al intentar instalarla en estas versiones.
Como siempre, te recordamos la importancia de mantener tus complementos al día. Al actualizarlos, garantizas que tu copia de NVDA es segura y estable.

En el día de ayer el complemento para el famoso programa de lectura Calibre se ha actualizado a la versión 1.0-dev4. Ahora reporta la cantidad de elementos de la lista de libroscuando cambie (al realizar búsquedas, por ejemplo) y también debería informar del estado de selección de los libros.
Por otro lado se ha lanzado una actualización de Windows 10 App Essentials, a la versión 18.05.1, que corrige un error que hacía que pareciese que NVDA no estaba haciendo nada o que reproduciese un sonido de error cuando se empezaba a dictar texto (windows+H) en las versiones más recientes de Windows10. Podremos actualizar este complemento automáticamente.
Si te gusta nuestro trabajo, plantéate hacer una donación.

¡Hola a todos!

Hoy seguimos hablando sobre nuevas funciones que vendrán con NVDA 2018.2. En este caso traemos una muy buena noticia para todos aquellos que no se aclaraban con el famoso tutorial del problema de la verbalización de desconocido.
Y es que, en caso de que NVDA diga muchas veces desconocido debido a problemas con librerías de accesibilidad, ahora lo podremos solucionar directamente desde NVDA, a partir de la versión 2018.2.
Ésto es útil sobre todo para usuarios no familiarizados con los correspondientes comandos para solucionar este problema usando el símbolo del sistema.
Esta función ya se incluyó en la última compilación Master, lo que significa que probablemente se integrará en las próximas RC y, en consecuencia, en NVDA 2018.2.
Si pruebas la última versión Master (en las últimas Next también debería estar esta función) puedes ir al menú NVDA, herramientas, Run COM Registration Fixing tool… Que significa herramienta de solución de errores con el registro de COM, para abrir este nuevo módulo.
Al pulsar Enter sobre dicho elemento de menú te dirá que esta operación solucionará que el contenido sea inaccesible en Internet Explorer, Firefox y otros programas, y que requiere pribilegios de administrador (ya que se modifica el registro), por lo cual también te pregunta si realmente quieres proceder. Al darle a sí, si aparece el control de cuentas de usuario (UAC) bastará con elegir «Sí» (o pulsar la combinación correspondiente, que en el caso de tener Windows en español será Alt+S) para que la operación se realice, egecutando los comandos correspondientes automáticamente. Cuando termine, informará si se completó o enviará los errores al registro de NVDA en caso contrario.
Además, al finalizar la instalación o actualización de NVDA, se intentará registrar las librerías de accesibilidad automáticamente.
Si quieres ir probando esta nueva función y muchas otras que posiblemente vayan incluidas en NVDA 2018.2, no dudes en descargar una versión de desarrollo desde Aquí. Recuerda, eso sí, que contienen una mayor cantidad de errores y que el soporte no es necesariamente el mismo que para las versiones estables.

¡Saludos!

Se acerca el mes de mayo, y con él se actualizan dos de los complementos de Joseph Lee.
El primero es Windows 10 App Essentials. El principal cambio que trae esta versión es la posibilidad de verbalizar el escritorio virtual en el que nos encontramos, bien sea al abrirlo (ctrl+win+d), al cerrarlo (ctrl+win+f4) o al cambiar de un escritorio a otro (ctrl+win+flechas izquierda y derecha). Si esta nueva función no presenta errores, se intentará integrar en el núcleo de NVDA para la versión 2018.3.
El segundo es StationPlaylist Studio, que tampoco deja de sorprendernos con nuevas funciones y características. Esta versión introduce las transcripciones de lista de reproducción, una función que nos permite tomar una instantánea de la lista de reproducción actual y visualizarla en varios formatos. Eventualmente, esta función te permitirá copiar la información al portapapeles o guardarla en archivos. Además, la versión 18.05 también da la posibilidad de tomar una instantánea sólo con parte de la lista de reproducción.
Te recordamos, como siempre, la importancia de mantener tus complementos actualizados. En este caso no te costará mucho, ya que llevan incorporado un mecanismo de actualización automática.
Si te gusta la información que te ofrecemos en nuestra web, plantéate hacer una donación. ¡Te lo agradeceremos!

¡Hola a todos!
Ya llevábamos tiempo sin escribir una entrada como esta, y ya tocaba, especialmente después de lo que ha publicado NV Access en su blog. Para más señas, esta es la entrada de la que hablamos (en inglés). ¡Comencemos!

Nuevas funciones en las versiones de desarrollo

NVDA evoluciona continuamente. En alguna entrada de actualización de complementos ya os hemos hablado de que habrá un nuevo diálogo multi-categoría que agrupará todas las preferencias, algo parecido a lo que hace hoy en día el complemento no oficial Rapid Settings. Este diálogo ya está disponible en las versiones de desarrollo next, ¡y viene acompañado! Estos son algunos cambios que merece la pena destacar:

  • Notificaciones de aplicaciones de Windows, tales como la calculadora o la tienda. Esta función ya la añade el complemento Windows 10 App Essentials, pero va a integrarse en el núcleo.
  • Nuevas tablas braille: lituano de 8 puntos, ucraniano y mongol grado 2.
  • Información de formato del texto de una celda braille específica
  • Es posible aplazar la instalación de las actualizaciones de NVDA
  • Posibilidad de conmutar las teclas control, alt, shift, NVDA y Windows desde el teclado braille. Estos modificadores pueden combinarse con entrada braille (por ejemplo, se puede pulsar ctrl+s).
  • Se restaura el soporte para las pantallas braille Handy Tech Braillino y Modular con firmware antiguos.

Para probar todos estos cambios, simplemente utiliza las versiones next de NVDA. Si no hay errores y todos estos cambios funcionan, pasarán a la rama master, y posteriormente acabarán en la próxima versión estable de NVDA.

Un problema bastante serio con Excel

Recientemente se ha encontrado un problema al editar texto en Excel, y se ha debatido intensamente tanto en GitHub como en la lista internacional. En algunos casos, al pulsar f2 en una celda para editarla, NVDA dirá «desconocido». No se leerá ningún texto de la celda. Parece que Microsoft ha roto algo en una de sus últimas actualizaciones para Office. Si experimentas este problema, puedes hacer lo siguiente desde Excel:

  • Pulsa alt+a para abrir la pestaña archivo, y pulsa la o para ir a las opciones de Excel.
  • Pulsa ctrl+tab hasta llegar a la página «avanzadas».
  • Pulsa alt+e para ir a la casilla «Permitir editar directamente en las celdas», y pulsa espacio para desmarcarla.
  • Pulsa intro para aceptar.

Ten en cuenta que desmarcar esta opción tiene un ligero impacto visual en la aplicación:

  • Cuando está activada la posibilidad de editar directamente en las celdas, al pulsar f2, el cursor aparece en la propia celda. El texto que se sale fuera de la celda lo hace hacia la derecha, y a continuación a las líneas de debajo. Las celdas cubiertas por este texto están ocultas mientras esto ocurre. El texto en la celda editada se colorea para resaltar las referencias y los paréntesis de la celda.
  • Si la posibilidad de editar en las celdas está desactivada, al pulsar f2, el cursor aparece en la barra de fórmulas encima de la hoja. Los elementos se colorean en la barra de fórmulas en vez de hacerlo en la celda mientras se edita. Sólo se ve en la celda el texto que encaja en ella mientras se edita la fórmula.

Firefox va más rápido sin multiproceso

Desde el nacimiento de nuestra web hace poco más de 6 meses, Firefox siempre ha sido un tema recurrente a causa de su versión «quantum» de múltiples procesos que ralentiza la navegación con NVDA y la hace directamente imposible con otros lectores de pantalla. Recientemente hemos descubierto que los múltiples procesos se pueden desactivar, al menos en parte. Las pruebas que hemos hecho con algunos usuarios han determinado que Firefox vuelve a comportarse casi como antes de la versión 57, y no hay efectos secundarios conocidos salvo los que intenta prevenir el modelo Quantum. Si bien es cierto que los procedimientos de más abajo benefician a NVDA, no ayudan a otros lectores de pantalla como Jaws for Windows.

Cómo desactivar los procesos de contenido

Desde Firefox (asumiendo que tienes la última versión), haz lo siguiente:

  • Ve al menú herramientas, submenú Desarrollador web, Workers de servicio.
  • En la pantalla que se muestra, verás una advertencia indicando que los workers de servicio no pueden depurarse si los procesos de contenido están activos. Desactiva dichos procesos pulsando el botón que hay justo debajo, llamado «No optar por múltiples procesos de contenido».
  • Firefox se reiniciará. Deberías notar que va más rápido.

Cómo volver a activar los procesos de contenido

  • Pulsa alt+d para ir a la barra de direcciones. Borra todo lo que haya en ella, escribe about:config y pulsa intro.
  • Acepta el mensaje de advertencia, si se muestra alguno, para entrar a la «zona hostil para manazas»
  • En el cuadro de búsqueda, escribe dom.ipc.multiOptOut y pulsa intro
  • Pulsa tabulador para ir a la tabla de resultados. Debería haber un único resultado, pulsa intro sobre él.
  • Escribe 0 como valor del ajuste y pulsa intro. A continuación, reinicia Firefox.

Esto es todo por el momento, ¡pronto volveremos con más noticias y actualizaciones! Si tienes cualquier pregunta o sugerencia, no dudes en escribirnos un comentario más abajo. ¡Cuéntanos cómo te va Firefox después de quitarle el multiproceso!