Introduzione allo Sviluppo di Addon per NVDA

Tempo di lettura: 4 minuti

Gli addon per NVDA (NonVisual Desktop Access) consentono di estendere le funzionalità dello screen reader, adattandolo alle esigenze specifiche degli utenti.

Gli addon ti consentono di personalizzare il modo in cui NVDA si comporta in generale o all’interno di una particolare applicazione. Sono in grado di:

  • Rispondere a eventi particolari come modifiche del focus e delle proprietà dell’oggetto;
  • Implementare comandi associati a particolari pressioni di tasti o altri input;
  • Personalizzare il comportamento e implementare funzionalità aggiuntive per controlli particolari;
  • Personalizzare o aggiungere nuovo supporto per contenuti di testo e documenti complessi.

Esistono due tipi di plugin. Questi sono:

  • Moduli app: codice specifico per una particolare applicazione.
    L’App Module riceve tutti gli eventi per una particolare applicazione, anche se tale applicazione non è attualmente attiva.
    Quando l’applicazione è attiva, tutti i comandi che l’App Module ha associato alla pressione dei tasti o ad altri input possono essere eseguiti dall’utente;
  • Addon globali: codice globale per NVDA, cioè è utilizzato in tutte le applicazioni.
    Negli addon globali Ricevi tutti gli eventi per tutti i controlli nel sistema operativo.
    Qualsiasi comando associato a un addon globale può essere eseguito dall’utente ovunque si trovi nel sistema operativo, indipendentemente dall’applicazione.

Se desideri migliorare l’accesso di NVDA a una particolare applicazione, molto probabilmente vorrai scrivere un modulo app. Al contrario, se desideri aggiungere alcune funzionalità generali a NVDA (ad esempio uno script che annuncia la potenza attuale della rete wireless mentre sei in qualsiasi applicazione), allora un addon globale è ciò che desideri. Sia i moduli dell’app che gli addon globali condividono un aspetto comune. . Sono entrambi file sorgente Python (con estensione .py), entrambi definiscono una classe speciale contenente tutti gli eventi, script e associazioni ed entrambi possono definire classi personalizzate per accedere a controlli, contenuto di testo e documenti complessi. Tuttavia, differiscono in qualche modo. Gli appModule personalizzati e gli addon globali possono essere inseriti nei componenti aggiuntivi di NVDA. Ciò consente una facile distribuzione e fornisce all’utente un modo sicuro per installare e disinstallare il codice personalizzato.

In questo articolo, vedremo come sviluppare un addon utilizzando gli strumenti forniti dalla comunità e come configurare l’ambiente di sviluppo con Visual Studio Code.
Parte di questo articolo contiene sezioni tradotte in italiano, riprese dalla documentazione ufficiale per gli sviluppatori.

Requisiti preliminari

Prerequisito fondamentale è la conoscenza del linguaggio python e dell’uso accessibile di un IDE come VS Code.
Nelle pagine di questo blog abbiamo trattato argomenti come lo sviluppo accessibile con linguaggi come python e java, oltre a dare cenni di sviluppo accessibile con VS Code.
Inoltre, prima di iniziare, è necessario installare i seguenti strumenti e risorse:

  • NVDA: Scarica e installa l’ultima versione dal sito ufficiale.
  • Python: scarica e Installa una versione compatibile con NVDA, in questo articolo abbiamo utilizzato la più recente.
  • Git: Necessario per clonare i repository, lo useremo da riga di comando. Puoi scaricare la versione per windows da questo link.
  • Visual Studio Code: IDE accessibile, consigliato per lo sviluppo degli addon. Scaricalo dal sito ufficiale.
  • Moduli Python richiesti: Installa i moduli scons e markdown, necessari per la compilazione degli addon.
    Puoi farlo direttamente dal terminale, una volta installato python, usando il gestore pacchetti pip. Usa il comando:
    pip install scons markdown
  • gettext per Windows: Scarica e installa gettext da questa pagina. gettext è necessario per la gestione della documentazione multilingua. Ti servirà in seguito, quando il tuo addon verrà distribuito a livello globale.
  • Inoltre è necessario clonare nel proprio sistema dei repository fondamentali per lo sviluppo:
    • Codice sorgente di NVDA dal repo ufficiale di nvaccess, necessario per utilizzare moduli messi a disposizione dallo screen reader e non inclusi nella distribuzione python installata.
    • Un utile template per gli addon dal seguente repo, contenente tutti i file di configurazione, una struttura pronta per la compilazione.

Segnalo inoltre la developer guide ufficiale, in lingua inglese, dove troverete tutte le info aggiornate sulle API messe a disposizione degli sviluppatori, per lo sviluppo di Addon

Clonazione dei repository

Clona i repository necessari utilizzando i seguenti comandi:

git clone https://github.com/nvaccess/nvda.git
git clone https://github.com/nvdaaddons/AddonTemplate.git

Il progetto template include una struttura di base per facilitare lo sviluppo. Potete pensare di sviluppare all’interno di questa cartella, una volta clonata, in modo da avere tutto configurato e ben strutturato.

Configurazione dell’ambiente di sviluppo

Una volta installato VS Code e soddisfatti i prerequisiti, non ti resta che aprire il progetto:

  1. Apri il progetto AddonTemplate in Visual Studio Code.
  2. Installa le estensioni Python suggerite da VS Code.

Struttura di un addon

Un addon è sostanzialmente un file compresso, tipo file zip, dove però l’estensione è “.nvda-addon”, nel caso avessimo scaricato file con questa estensione possiamo aprirli ed esplorarli con un software come “7zip”.
Un file nvda-addon è composto principalmente da:

  • Cartella appModules: Contiene il codice sorgente dell’addon quando ci si riferisce a un’app module.
  • Cartella globalPlugins: Contiene il codice sorgente dell’addon quando ci si riferisce a un addon globale, non specifico per una singola app.
  • File manifest.ini: Specifica i dettagli come nome, versione e autore. Noi non modificheremo direttamente questo file, ma il rispettivo file python che ne permette la generazione: buildVars.py.
  • File readme.md: Documentazione per l’addon.
  • gli altri file presenti sono di configurazione e in una prima fase non vanno modificati. Potete aprirli, leggerli, capirne il contenuto e i commenti, ma al momento non ci servono direttamente.

Esempio: Un addon di tipo app module per il Blocco Note

I file dell’App Module hanno un’estensione .py e nella maggior parte dei casi dovrebbero avere lo stesso nome dell’eseguibile principale dell’applicazione per la quale desideri che vengano utilizzati o del pacchetto all’interno di un eseguibile host. Ad esempio, un modulo app per Blocco note si chiamerebbe notepad.py, poiché l’eseguibile principale di Blocco note si chiama notepad.exe. Il file notepad.py va inserito nella cartella addons\appModules, ipotizzando che come template per l’addon, stiamo utilizzando il progetto clonato da git addon template.
Il seguente modulo app di esempio fa sì che NVDA emetta un segnale acustico ogni volta che il focus cambia all’interno dell’applicazione Blocco note. Questo esempio mostra il layout di base di un modulo app.
Ora segui questi passaggi:

  1. Crea un file notepad.py nella cartella addon\appModules e aggiungi il seguente codice:

  2. import appModuleHandler

    class AppModule(appModuleHandler.AppModule):

    def event_gainFocus(self, obj, nextHandler):
    import tones
    tones.beep(550, 50)
    nextHandler()

Potrai modificare a tuo piacimento il file buildVars.py inserendo così informazioni aggiuntive al tuo addon, come il nome, l’autore e le versioni supportate di NVDA.

Compilazione e Installazione dell’addon

Ora non ci resta che impacchettare l’addon, in modo che sia pronto per l’installazione e la distribuzione.

  1. Compila l’addon eseguendo il comando:
    scons

    Questo genererà un file con estensione .nvda-addon nella directory del progetto.

  2. Per installare l’addon, individua il file .nvda-addon in Esplora Risorse e premi Invio.

Risorse aggiuntive

Conclusioni

Questa è solo una guida introduttiva che nel tempo potrà essere migliorata e ampliata. Consiglio vivamente di seguire la Developer Guide ufficiale per addentrarsi in profondità nell’argomento. Grazie agli strumenti e alle risorse forniti dalla comunità, è possibile sviluppare addon personalizzati per migliorare l’accessibilità con NVDA. Con i passi descritti, sei pronto per iniziare il tuo viaggio nello sviluppo di addon!

Pubblicato da

Alessandro Albano

Analista programmatore, formatore e tiflologo.