# NonVisual Desktop Access

NonVisual Desktop Access (NVDA) é um leitor de tela livre, aberto e portátil para a Microsoft Windows. O projeto foi criado em 2006 por Michael Curran.
O NVDA é programado no Python e atualmente trabalha exclusivamente com Interface de Programação de Aplicações (API, na sigle em inglês) acessível como UI Automation, Microsoft Active Accessibility, IAccessible2 e Java Access Bridge, em vez de drives de vídeo para interpretar a informação visual. É licenciado sob a segunda versão da GNU General Public License.

## História

Preocupado com os altos custos dos leitores de tela comercial, em abril de 2006 Michael Curran começou a escrever um leitor de tela em linguagem Python utilizando o Microsoft SAPI como o mecanismo de fala. Ele tinha suporte para Windows 2000 em diante e fornecia recursos de leitura de tela como suportes básicos para alguns softwares de terceiros e navegadores de web. No final de 2006, Curran nomeou seu projeto Nonvisual Desktop Access (NVDA) e lançou a versão 0.5 no ano seguinte. Ao longo de 2008 e 2009, surgiram várias versões 0.6, incluindo navegadores de web aprimorados, suporte para mais programas, saídas para braille e suporte para mais línguas. Para gerenciar o desenvolvimento contínuo do NVDA, Curran juntou–se com James Teh para fundar o NV Acess em 2007.
As características e a popularidade do NVDA continuaram a crescer, com suporte para versões 64–bit do Windows em 2009 e melhor estabilidade de programas em 2010. A principal reestruturação dos códigos para suportar módulos de terceiros, junto com suporte básico para Window 8 foi disponibilizada em 2011. No decorrer de 2012, NVDA passou a contar com melhor suporte para Window 8, habilidade para executar atualizações automáticas, gerenciador de add–ons para gerenciar add–ons de softwares de terceiros, melhor suporte para a entrada de textos do leste asiático e suporte para touchscreen (o primeiro do seu tipo para leitores de tela de terceiros para Windows).
O NVDA passou a contar com suporte para Microsoft Powerpoint em 2013 e foi atualizado em 2014 para ter suporte para Powerpoint 2013. O NVDA também aprimorou o suporte para WAI–ARIA no mesmo ano. O NV Access também introduziu um método reestruturado para revisão do texto da tela e uma facilidade para gerenciar perfis para aplicativos em 2013 e melhorou o acesso ao Microsoft Office e outros programas em 2014.
Em 2015, o NVDA passou a contar com suporte para MathML por meio do MathPlayer juntamente com suporte aprimorado para Mintty e tabelas no Microsoft Excel. A habilidade para abaixar o áudio de fundo foi introduzida em 2016. Também em 2015, o NVDA tornou–se um dos primeiros leitores de tela com suporte para Windows 10 e adicionou suporte para Microsoft Edge de maneira experimental.

## Características e suporte para API acessível

O NVDA utiliza eSpeak como sintetizador de voz integrado. Ele também suporta Microsoft Speech, ETI Eloquence e sintetizadores SAPI. A entrada para braille é oficialmente disponibilizada a partir da versão 0.6p3 em diante.
Além da funcionalidade geral para Windows, o NVDA trabalha com softwares como outros aplicativos da Microsoft, WordPad, Notepad, Internet Explorer, Google Chrome, entre outros. Ele suporte as funções básicas do Outlook Express, Microsoft Word, Microsoft PowerPoint and Microsoft Excel. Os programas livres LibreOffice and OpenOffice.org têm suporte por meio do pacote Java Access Bridge. O NVDA também tem suporte para o Mozilla Firefox a partir da versão 3 em diante.
Desde o início de 2009, o NVDA tem suporte para WAI-ARIA para Accessible Rich Internet Applications para facilitar a melhor acessibilidade dos aplicativos da web para usuários com deficiência visual. O suporte para email é fornecido a partir da versão 3 Mozilla Thunderbird em diante. Entretanto, NVDA geralmente irá trabalhar como a maioria dos provedores de email como Yahoo.

## Características técnicas

O NVDA é organizado em vários subsistemas, incluindo core loop, gerenciador de add–ons, módulos para aplicativos, manipuladores de eventos, manipuladores de entrada e saída, juntamente como módulos com suporte para API acessível como Microsoft Active Accessibility. O NVDA também inclui várias interfaces gráficas de usuário desenvolvidas com wxPython, como várias preferências de diálogo e caixas de diálogo para atualizações e configurações.
O NVDA usa objetos para representar elementos em um aplicativo como barras de menu, barras de status e várias janelas de primeiro plano. Várias informações sobre um objeto como nome, valor e coordenadas de tela estão reunidas pelo NVDA por meio meio da API acessível exposta por um objeto como por meio da User Interface Automation (UIA). A informação unida é passada através de vários subsistemas como manipuladores de voz e apresentado para o usuário oralmente, em braille e janela na tela. NVDA também fornece facilidades para lidar com evento como pressionamento de teclas, mudanças de nome e quando um aplicativo ganha ou perde foco.
O NVDA apresenta facilidade para examinar um objeto de um aplicativo hierarquicamente e implementar maneiras de melhorar a acessibilidade do programa. Ele fornece comando dedicados a mover por entre os objetos hierarquicamente dentro de um aplicativo, bem como um console interativo do python para realizar manipulação de foco, monitorar objetos para eventos e testar o código para melhorar a acessibilidade para que um aplicativo seja empacotado em um módulo de aplicativo.

## Modelo de desenvolvimento

De 2006 a 2013, o código fonte do NVDA era gerenciado via Bazaar, com NV Acess mudando para Git em 2013, citando o progresso de desenvolvimento com a Bazaar. Os desenvolvedores também aproveitaram a oportunidade para modificar a agenda lançada para acontecer em intervalos regular para prevenir atrasos no lançamento de algo oficial para tornar o tempo de lançamento previsível.
Além dos lançamentos oficiais, compilações noturnas instantâneas estavam disponíveis para teste. Similar ao processo de lançamento para o Linux Kernel, as compilações do NVDA são disponibilizadas em master and next branches como special topic branches criados de tempos em tempos. NV Acess descreve o branch principal como um beta ativo, próximo ramo como código de borda de sangramento para possível inclusão na próxima versão, e ramos tópicos para desenvolver um recurso principal ou para se preparar para o lançamento oficial (ramo rc). Alguns desenvolvedores de softares de terceiros também mantém branches específicosm incluindo versões de línguas específicas do NVDA ou para oferecer pré visualização pública para uma característica sob desenvolvimento ativo.
Os desenvolvedores líderes atuais são Michael "Mick" Curran e James "Jamie" Teh, com constribuições para o código e traduções dos usuários e outros desenvolvedores ao redor do mundo.