Caja de herramientas de desarrollo y pruebas para NVDA
- Autor: Cyrille Bougot
- Compatibilidad con NVDA: de 2019.2 en adelante
- Descargar versión estable
Este complemento reúne diversas funciones para depuración y pruebas en NVDA.
Características
- Un diálogo mejorado para reiniciar que permite indicar algunas opciones extra cuando se reinicia NVDA.
- Un script de conmutación y un backport de la función "Reproducir un sonido para los errores registrados" de NVDA.
- Un explorador de propiedades de los objetos.
- Un modo de descripción extendida para los scripts: cuando está activado, el modo ayuda de entrada anuncia información de los scripts que no tienen descripción.
- Órdenes para ayudar con la lectura y el análisis del registro.
- En el espacio de trabajo de la consola Python, una función para abrir el código fuente de un objeto.
- Un script personalizado de inicio para la consola Python
- Una orden para registrar la pila de llamadas de la función speech.speak.
Diálogo reiniciar mejorado
La orden NVDA+shift+q abre un diálogo para indicar algunas opciones extra
antes de reiniciar NVDA. Las opciones que pueden especificarse corresponden
a las opciones de línea de órdenes que se pueden usar con nvda.exe
,
como -c
para la ruta de configuración, --disable-addons
para
deshabilitar los complementos, etc.
Reproducir un sonido para los errores registrados
La opción "Reproducir un sonido para los errores registrados" se introdujo en NVDA 2021.3 y permite especificar si NVDA reproducirá un sonido de error en caso de que se registre un error.
Este complemento proporciona una orden adicional (NVDA+control+alt+e) para conmutar este ajuste. Puedes elegir:
- "Sólo en versiones de prueba de NVDA" (por defecto) para que NVDA reproduzca sonidos de error sólo si la versión actual de NVDA es una versión de prueba (alfa, beta o ejecutada desde el código fuente).
- "Sí" para habilitar los sonidos de error sea cual sea tu versión de NVDA.
En versiones de NVDA anteriores a la 2021.3, este complemento proporciona el backport de esta característica y la posibilidad de controlarla con la orden de teclado. La casilla de verificación del panel de opciones avanzadas, sin embargo, no se incluye.
Explorador de propiedades de los objetos
Esta función permite anunciar algunas propiedades del objeto actual en el navegador de objetos sin abrir el visualizador del registro.
Para enumerar las propiedades de un objeto, mueve el navegador de objetos hacia él y usa las siguientes órdenes:
- Selecciona la propiedad anterior y la anuncia para el navegador de objetos.
- Selecciona la siguiente propiedad y la anuncia para el navegador de objetos.
- Anuncia la propiedad seleccionada actualmente para el navegador de objetos; al pulsar dos veces rápidamente, muestra esta información en un mensaje explorable.
Estas tres órdenes vienen sin asignar por defecto; tendrás que asignarlas desde el diálogo Gestos de entrada para poder usarlas.
La lista de propiedades soportadas es la siguiente: nombre, rol, estado, valor, nombre de clase de la ventana, id de control de la ventana, manejador de la ventana, ubicación, clase Python, orden de resolución de métodos de la clase Python.
Esta función es una mejora de un ejemplo de la guía de desarrollo de NVDA.
Modo de descripción extendida de scripts
Cuando el modo de descripción extendida de scripts está activado, el modo de ayuda de entrada (NVDA+1) se modifica de la siguiente manera. Si un script no tiene descripción, se anuncian su nombre y su clase. Si un script tiene descripción, esta se anuncia como siempre. El gesto para activar o desactivar esta función es NVDA+control+alt+d.
Ejecutar un gesto asociado a un script sin descripción en el modo ayuda de entrada también crea una entrada para este script en el diálogo de administración de gestos. Esta entrada se ubica en una categoría dedicada llamada "Scripts sin descripción (¡Modifica bajo tu responsabilidad!)". Esto permite añadir, eliminar o cambiar fácilmente los gestos nativos de NVDA para estos scripts. Ten en cuenta, sin embargo, que el script puede no tener una descripción intencionadamente para que el usuario no pueda modificarlo. El script puede estar pensado para coincidir con un atajo de una aplicación concreta. Por ejemplo, el script script_toggleItalic en NVDAObjects.window.winword.WordDocument está asignado a control+k, y no debería modificarse, ya que el gesto se pasa a la aplicación para ejecutar realmente ese atajo de teclado.
Ejemplo de uso
Control+shift+k también conmuta la cursiva en Word, incluso si NVDA no lo anuncia de forma nativa. Para que el resultado de pulsar control+shift+k se anuncie como control+k, deberías seguir los siguientes pasos:
- Abre un documento de Word.
- Activa el modo de descripción extendida de scripts con NVDA+control+alt+d.
- Entra en el modo ayuda de entrada con NVDA+1.
- Pulsa control+K para anunciar el script de cursiva y añadirlo al diálogo de gestos.
- Sal del modo ayuda de entrada con NVDA+1.
- Abre el diálogo Gestos de entrada.
- En la categoría "Scripts sin descripción (¡Modifícalos bajo tu responsabilidad!)", selecciona la orden "toggleItalic en NVDAObjects.window.winword.WordDocument".
- Añade el atajo control+shift+k y valida.
- Si quieres, sal del modo de descripción extendida de scripts con NVDA+control+alt+d.
Fallo conocido: Un script añadido para una clase concreta es visible incluso si el administrador de gestos se abre en otro contexto.
Órdenes de lectura y análisis del registro
El modo lector del registro proporciona órdenes facilitar la lectura y el análisis del registro. En la ventana del visualizador del registro, el lector del registro está habilitado por defecto, por lo que los comandos de lectura del registro están disponibles de inmediato. En otras áreas de lectura de texto, tales como un editor (por ejemplo, Notepad++) o una página web (por ejemplo, una incidencia de GitHub), es necesario pulsar NVDA+control+alt+l para activar el modo de lectura del registro y usar sus órdenes. Cuando acabes con las tareas de análisis y lectura del registro, puedes desactivar de nuevo el modo lector del registro con NVDA+control+alt+l.
Las órdenes disponibles en el modo de lectura del registro se describen a continuación.
Órdenes de navegación rápida
Existen órdenes de navegación de una sola letra, similares a las usadas en modo exploración, que permiten moverse por distintos tipos de mensajes en el registro:
- m: cualquier mensaje
- e: ERROR
- i: IO
- d: DEBUG
- f: INFO
- g: DEBUGWARNING
- w: WARNING
Pulsando la letra te moverás a la siguiente coincidencia de ese mensaje. Al combinar la letra con la tecla shift, te desplazarás a la coincidencia anterior.
Abrir un archivo en tu editor
En el registro, alguna línea puede hacer referencia al código fuente:
- Una línea relacionada con una traza contiene la ruta y la línea en el
archivo, por ejemplo:
File "virtualBuffers\__init__.pyc", line 226, in _getStoryLength
- La línea de cabecera de un mensaje registrado contiene la función que ha registrado el mensaje, p.ej.:
INFO - config.ConfigManager._loadConfig (22:45:26.145) - MainThread (16580):
Puedes querer que se abra el archivo que contiene el código para comprender el contexto de la traza o el mensaje registrado. Pulsa la C para abrir el archivo.
Para que esta característica funcione, necesitas configurar el comando de tu editor favorito. Si no estás ejecutando NVDA desde el código fuente, la ubicación del código también debería estar configurada. Para más información sobre la configuración, consulta el párrafo de configuración de la caja de herramientas de desarrollo y pruebas de NVDA.
Extensión de la consola Python
Función openCodeFile
En la consola, puedes llamar a la siguiente función para ver el código fuente que define la variable myVar
:
openCodeFile(myVar)
Para que esta característica funcione, necesitas configurar el comando de tu editor favorito. Si no estás ejecutando NVDA desde el código fuente, la ubicación del código también debería estar configurada. Para más información sobre la configuración, consulta el párrafo de configuración de la caja de herramientas de desarrollo y pruebas de NVDA.
Se puede llamar a la función openCodeFile
en objetos definidos en el
código de NVDA o en objetos definidos por los complementos. No se puede
llamar en objetos cuyo código fuente no está disponible, tales como los
incorporados en Python.
Si todavía no has importado el objeto en la consola, también puedes pasar su
nombre como parámetro a la función openCodeFile
.
A continuación hay ejemplos de llamadas al código de NVDA:
- Ver la definición de la función
speech.speech.speak
:openCodeFile(speech.speech.speak)
o con el nombre pasado como parámetro:
openCodeFile("speech.speech.speak")
- Ver la definición de la clase
TextInfo
:
openCodeFile(textInfos.TextInfo)
- Ver la definición del método
copyToClipboard
de la claseTextInfo
:openCodeFile(textInfos.TextInfo.copyToClipboard)
- Ver la definición de clase del objeto con el foco:
openCodeFile(focus)
- Abrir el archivo
api.py
que define el móduloapi
:openCodeFile(api)
Script de inicio de la consola Python
Puedes definir un script personalizado, que se ejecutará en el espacio de nombres de la consola Python al abrirla por primera vez, o si se recarga el complemento (NVDA+control+f3) después de haber abierto ya la consola.
Por ejemplo, el script te permite ejecutar importaciones y definir alias que podrás usar directamente en la consola, como se muestra a continuación:
# Various import that I want in the console.
import globalVars as gv
import core
import ui
# Aliases
ocf = openCodeFile
El script de la consola Python debería encontrarse en la siguiente ubicación: RutaConfiguraciónNVDA\ndtt\consoleStartup.py
Por ejemplo:
C:\Users\myUserName\AppData\Roaming\nvda\ndtt\consoleStartup.py
Registrar la pila de llamadas de la función de voz
A veces, puedes querer saber qué parte del código es responsable de verbalizar algo. Para ello, puedes habilitar el registro de traza de pila de la función de voz pulsando NVDA+control+alt+s. Cada vez que NVDA hable, se grabará una traza de pila en el registro.
Nota: puedes modificar directamente el archivo del script para parchear otra función. Consulta las instrucciones en el propio archivo para más detalles.
Configuración de herramientas de depuración y pruebas de NVDA
Las órdenes del lector del registro y la extensión de la consola Python pueden requerir una configuración específica. Para usar funciones que permiten visualizar el código fuente en tu editor, primero deberías configurar la línea de órdenes de tu editor. Si es necesario visualizar un archivo de NVDA y no lo ejecutas desde el código fuente, también tienes que configurar la ruta al código fuente de NVDA.
Configuración de la línea de órdenes del editor
Para usar la orden Abrir código fuente
o la orden de consola
openCodeFile
, primero debes configurar el comando al que se llamará para
abrir el archivo en tu editor favorito. Para ello, abre la consola de NVDA
(NVDA+control+Z), teclea la siguiente línea y pulsa intro:
config.conf['ndtt']['sourceFileOpener'] =
r'"C:\path\to\my\editor\editor.exe" "{path}":{line}'
Por supuesto, deberías
modificar esta línea en función de la ubicación y el nombre real de tu
editor, y su sintaxis para abrir archivos. {path}
será sustituida por la
ruta completa del archivo que se abrirá, y {line}
por el número de línea
donde se situará el cursor. Por ejemplo, para configurar Notepad++ habría
que escribir el siguiente comando: config.conf['ndtt']['sourceFileOpener']
= r'"C:\Program Files\Notepad++\notepad++.exe" "{path}" -n{line}'
Configuración de la ruta al código fuente de NVDA
Cuando un archivo relacionado con el núcleo de NVDA aparece en una traza, la
línea tiene este formato: File "config\profileUpgrader.pyc", line 30, in
upgrade
Si no ejecutas NVDA desde el código fuente, puedes indicar una ubicación alternativa donde buscar el archivo de código fuente, como por ejemplo el lugar donde has clonado el repositorio de NVDA. En este caso, debes configurar la ruta donde tengas situados los archivos con el código fuente de NVDA.
Para ello, abre la consola de NVDA (NVDA+control+Z), teclea la siguiente
línea y pulsa intro: config.conf['ndtt']['nvdaSourcePath'] =
r'C:\RutaEjemplo\GIT\nvda\source'
Por supuesto, sustituye la ruta al código
fuente de NVDA con la correcta.
Asegúrate, no obstante, de que la versión de tu archivo fuente (por ejemplo, commit de Git) es la misma que la de la instancia de NVDA en ejecución.
Registro de cambios
Versión 3.0
- En un registro, ahora se puede pulsar la C en una línea de cabecera de mensaje para abrir el módulo o función que lo emitió.
- En la consola, la función
openCodeFile
puede recibir como parámetro el objeto o una cadena que contenga su nombre. - Nueva función: archivo de inicio de la consola de NVDA: si existe, el archivo tuCarpetaDeConfiguraciónDeNVDA\ndtt\consoleStartup.py se ejecutará al abrir la consola Python por primera vez o cuando se recarguen los complementos.
- Diversas correcciones menores para la función de la consola Python
openCodeFile
y la orden para abrir el archivo de código fuente correspondiente a una línea del registro. - Corregido un problema al intentar anunciar roles y estados en el explorador de objetos en versiones antiguas de NVDA.
- El complemento ya no causa problemas con el interceptor de árbol al usar UIA en Edge.
Versión 2.1
- Diversas correcciones de fallos y refactorización y limpieza del código para tener en cuenta todos los casos de uso: todas las versiones soportadas, instalado vs. ejecutado desde el código fuente, etc. (colaboración de Łukasz Golonka)
- Reescritura del módulo compa (colaboración de Łukasz Golonka)
- Ahora, el diálogo para reiniciar se puede abrir sólo una vez.
- Los atajos del explorador de objetos ahora vienen por defecto sin asignar y deben ser asignados por el usuario.
- En el explorador de objetos, una pulsación doble para llamar al script que indica la propiedad del objeto ahora muestra la información indicada en un mensaje explorable.
Versión 2.0
- Nueva función: diálogo de reiniciar mejorado para indicar algunas opciones extra al reiniciar NVDA.
- Nueva función: modo de descripción extendida.
- Función para reproducir sonidos de error armonizada entre las versiones anterior y posterior a la 2021.3 de NVDA.
- Nueva función: las órdenes del lector del registro ahora están disponibles en el visualizador del registro y, opcionalmente, en cualquier cuadro de edición y en páginas web.
- Nueva función: en la consola Python, está disponible una función
openCodeFile
para ver el código fuente de un objeto. - Algunas funciones están ahora deshabilitadas en modo seguro por motivos de seguridad.
- Se ha extendido el rango de compatibilidad del complemento (de 2019.2 a 2021.1).
- Las liberaciones ahora se llevan a cabo con una acción de GitHub en lugar de AppVeyor.
Versión 1.0
- Versión inicial.
https://www.nvaccess.org/files/nvda/documentation/userGuide.html#CommandLineOptions
https://www.nvaccess.org/files/nvda/documentation/userGuide.html#PlayErrorSound
https://www.nvaccess.org/files/nvda/documentation/developerGuide.html#toc22