Numero 13 del 2020
Titolo: Gli Script di Jaws. Ecco come programmarli da soli.
Autore: Abramo Volpato.
Articolo:
Gli Script di Jaws. Ecco come programmarli da soli.
Di Abramo Volpato.
Nota di redazione:
Cari lettori, quando avvengono incontri fortuiti tra persone che hanno gli stessi intenti e le stesse passioni, si finisce quasi sempre per mettersi a lavorare assieme e a produrre delle cose positive ed utili per tutti.
Questo mio incontro con Abramo mi ha fatto riscoprire un mio vecchio sogno: quello di approfondire con gli script di Jaws che tanti vantaggi ci danno quando il programmatore non si rende conto di programmare i software in maniera non standard, creando problemi a chi utilizza uno screen-reader.
Era nel 2007 quando l'Unione fece tradurre in italiano il manuale degli script di Jaws, e tanti di noi hanno potuto capire di più la struttura di questi script, consentendoci talvolta di modificare o di crearne di nuovi.
Di tanto in tanto ne ho prodotto o modificato qualcuno, ma sempre cose di poco conto e non si è mai trattato di cose indispensabili come possono essere, per esempio, gli script per Skype.
Parlando di queste cose con Abramo che mi aveva chiesto un parere su una sua idea proprio sugli script, si è accesa subito la solita lampadina ed ho proposto a lui questo mio vecchio sogno nel cassetto.
Quando gli ho proposto l'idea di avviare una rubrica sul giornale per spiegare a tutti gli utilizzatori di Jaws come si creano gli script, il suo entusiasmo mi ha caricato ancora di più e sono certo che ha fatto un lavoro utile a tante persone, soprattutto ai giovani che potranno dare concretamente una mano a tutti i disabili visivi che usano Jaws.
Per coloro che usano NVDA, voglio sperare che, tra gli amici più preparati che conoscono la programmazione in Python, qualcuno ci pensi e che si dia inizio a spiegare anche come si effettua la programmazione degli Addons, gli script di questo screen-reader open-source.
A partire da questo numero, saranno pubblicati degli articoli che spiegano nel modo più semplice possibile come si creano degli script, fornendone le indicazioni per rendere facile e semplice a tutti la programmazione, partendo con degli script molto semplici ed approfondendo man mano il discorso.
Non sarà certamente un corso di programmazione vero e proprio, questa non sarebbe la sede adatta, ma solo il voler dare una mano concreta a chi si vuole mettere in gioco e creare degli script con le proprie mani, per se e per gli altri, mettendo a frutto quello che i programmatori di Jaws consentono di fare con questi oggetti misteriosi: gli script.
Buona lettura, ma consentitemi di ringraziare anche a nome vostro Abramo che, con il suo lavoro, a realizzato questa sorta di guida semplificata.
Il Coordinatore Editoriale: Nunziante Esposito.
Premessa:
Sono partito nell'estate di due anni fa per un viaggio, tuttora in corso, negli Script per Jaws. All'epoca non ne sapevo nulla, e a poco mi è servito qualche rudimento di programmazione che conoscevo prima di allora.
Le pagine che vi propongo sono quindi il diario di questo viaggio, intrapreso nel tentativo di creare una configurazione Personale nell'uso di Jaws. L'unica volontà è quella di condividere l'esperienza maturata in questo tempo, senza nessuna pretesa, nella speranza di poter entrare in contatto con altre persone che, come me, amano la programmazione.
Ho cercato tutte le informazioni possibili, mi sono rivolto ad esperti e neofiti, ma la gran parte di quanto qui riportato è frutto di esperienze dirette. Anche per questo, ci saranno sicuramente molti errori e imprecisioni, o anche solo affermazioni non del tutto esatte. Chiedo scusa sin d'ora per questo, ed anzi vi invito a segnalarmi qualsiasi rilievo che possa sembrare opportuno.
Ringrazio prima di tutto Nunziante Esposito, per avermi dato l'idea di realizzare queste pagine, e per aver poi avvalorato il mio sforzo. Ringrazio inoltre tutti coloro che a qualsiasi livello mi abbiano supportato e sopportato: nella prima categoria va sicuramente iscritto Andrea Dessolis, che mi ha fornito alcuni suoi pregevoli script, nell'altra invece soprattutto Franco Mazzon, che mi ha dato una mano per il collaudo della versione Web.
Nella speranza di poter essere utile almeno a qualcuno, vi auguro buona lettura.
L'autore
***
Capitolo 1. Cosa sono gli script di Jaws.
***
1.1. Personalizzare Jaws.
Gli script, in genere, sono delle sequenze di testo, contenenti delle istruzioni che servono ad un programma per agevolarne l'uso all'utente. Tali istruzioni, una volta eseguite, restituiscono quello che all'utente interessa e che il programma non produce in modo automatico.
Nel caso del programma di lettura dello schermo, Jaws per Windows, gli script sono una grande opportunità che gli ideatori del software hanno lasciato per poter ampliare l'uso del programma di "Screen-Reader" , (LettoreDiSchermo), che può così essere integrato ed adattato alle singole necessità di ciascun utente, senza che sia necessaria una particolare competenza nel campo informatico.
Tramite gli script, ad esempio, si può intervenire in tutti quei casi in cui, nell'uso di un qualsiasi software applicativo, le normali funzioni per leggere quel che è presente a video non ci forniscono tutte le informazioni necessarie. In questi casi, di norma, saremmo costretti dapprima ad entrare in modalità esplorazione dello schermo, e da lì eseguire manualmente una serie di comandi di spostamento e di lettura, più o meno lunghi ed elaborati, per ottenere le informazioni che lo Screen-Reader non fornisce direttamente.
Tutta questa serie di operazioni, qualora ci fosse l'esigenza di ripeterle spesso, possono essere inserite in uno script da noi realizzato, ed eseguite automaticamente in un solo gesto, tramite la pressione di una combinazione di tasti apposita che esegue quello stesso script.
In generale, ciascuno di noi ha un proprio modo personale di usare il PC, e ci sono molte configurazioni e situazioni possibili, tra diverse versioni dei software di sintesi vocale e del sistema operativo. Per questo, saper usare gli script offre la possibilità di personalizzare l'uso di Jaws, rendendo più semplice, più veloce e, forse, anche più divertente, il quotidiano utilizzo dei personal computer.
1.1.1. Compatibilità delle informazioni.
A tutte le nozioni espresse in queste pagine si è tentato di dare un carattere che possa risultare il più generale possibile. Nonostante ciò, gli esempi di cui si è dotata la trattazione hanno dovuto per forza entrare nel dettaglio, e quindi non sono compatibili con tutte le versioni del programma di sintesi vocale.
In particolare, i primi due capitoli, esercizi compresi, sono percorribili anche con versioni più vecchie di Jaws. Dal terzo capitolo in avanti, in particolare gli esempi rendono indispensabile disporre di Jaws almeno a partire dalla versione 16, essendo poi comunque compatibili fino alla versione 2020.
1.1.2. Termini in inglese ed altre convenzioni.
I termini e le istruzioni usati per far funzionare gli script sono in inglese, con i nomi che spesso sono composti da due o più parole messe l'una accanto all'altra, ciascuna con le iniziali in maiuscolo per rendere comprensibile la lettura. Il loro nome indica anche molto chiaramente quale sia il compito che svolgono, purché si riesca a comprendere l'inglese almeno nei suoi termini tecnici. In realtà, quello della lingua è un ostacolo oggi più facile da superare, vista la grande diffusione dei traduttori on line, ma è indubbio che, almeno all'inizio, questo è un particolare cui prestare un poco di attenzione in più.
Per questo, lungi dal voler in questa sede tenere lezioni di lingua inglese, per aiutare chi non ne mastica proprio, ci si limiterà a dare sempre una traduzione posta tra parentesi tonde, letterale oppure adattata al contesto informatico, nella prima occorrenza di ogni termine inglese, dandola poi per scontata ed acquisita nelle successive occasioni in cui lo si incontrerà nuovamente. Le uniche due eccezioni sono e rimarranno le due parole principali da cui siamo partiti, Script e Jaws, che ci limitiamo a considerarli dei termini scontati da usare così come sono. Si lascia dunque alla curiosità personale di ciascuno l'onere di andare a verificare cosa significhino letteralmente.
In generale, quando si incontreranno nuove combinazioni di tasti o concetti particolari, nelle prime occorrenze questi risulteranno evidenziati tra virgolette. Quando in seguito saranno posti normalmente nel testo, lo saranno comunque con le iniziali maiuscole.
Sempre parlando di tasti, quando nel testo di queste pagine troverete scritto "TastoJaws", questo può essere sia il tasto "BloccaMaiuscole" oppure il tasto "Insert", a seconda di quale avete impostato come "Layout Tastiera" di Jaws, poiché le funzioni legate a questi due tasti sono sempre disponibili in entrambi gli abbinamenti.
***
1.2. Creare una scelta rapida.
I menu a scomparsa, che sono presenti nella maggior parte degli applicativi, spesso hanno delle combinazioni di tasti che servono per attivarne velocemente i comandi in essi contenuti, denominate "Scelte Rapide da tastiera".
Tali combinazioni, di solito, riguardano già i comandi d'uso più comune, che quindi possiamo utilizzare così come sono. Può capitare, tuttavia, che alcuni comandi che a noi interessano non ne siano dotati, ed è proprio in casi come questo che gli script per Jaws forniscono alcuni utili strumenti.
Sul piano pratico, le azioni per creare una Scelta rapida tramite uno script possono essere quelle elencate di seguito:
1. Riprodurre la combinazione di tasti che visualizza il menu di cui attivare il comando.
2. Simulare la pressione di un carattere, poiché molto spesso i singoli comandi hanno un proprio "tasto caldo", che li fa eseguire o selezionare.
3. Nel caso che il Tasto caldo sia l'unico di quel tipo tra i comandi del menu aperto, il comando sarà eseguito direttamente, oppure si dovrà ripetere la pressione del carattere fino a selezionare il comando desiderato, per poi simulare la pressione del tasto Invio.
4. Può anche capitare che il comando da eseguire non abbia un proprio carattere di selezione rapida. In questi casi, una volta visualizzato il menu, si dovranno eseguire degli spostamenti verso il basso o verso l'alto, simulando la pressione dei tasti freccia, per poi confermare con Invio una volta raggiunta la voce di menu desiderata.
Nel caso della nostra prima esercitazione pratica, ci serviremo del Blocco Note di Windows, se non altro perché un applicativo a disposizione di tutti. In particolare, creeremo una scelta rapida per eseguire il comando "Salva con nome" nel Menu "File", il quale si visualizza con la combinazione "Alt+F". Siccome questo comando è dotato di un tasto caldo univoco in quel menu, la lettera "V", le azioni principali da compiere per eseguirlo corrispondono ai primi due punti elencati in precedenza.
Ora, prima di tutto, prendiamo in esame lo strumento tramite il quale inizieremo il nostro lavoro.
1.2.1. L'Editor di Script.
Come detto all'inizio, i file in cui sono contenuti gli script per JAWS sono dei semplici file di testo, che si potrebbero aprire e modificare anche con un qualsiasi editor testuale. Il software di sintesi vocale, tuttavia, mette a disposizione un programma apposito, denominato "Editor di Script", che ci guida passo passo nella creazione del nostro codice, consentendo di non commettere errori ed impostando nel modo migliore il lavoro da svolgere.
Il metodo più rapido per attivare l'Editor di Script è quello di richiamarlo dall'interno del programma rispetto al quale si vuole creare lo script. In questo caso, aprite il Blocco Note di Windows, ad esempio, premendo dapprima il pulsante "Start", poi digitando "Blocco Note" nella casella di ricerca di Windows, e quindi Invio.
Da dentro questo applicativo, una volta comparsa la sua schermata principale, per richiamare l'Editor di Script di JAWS, sarà sufficiente premere la combinazione "TastoJaws+0", oppure premere "TastoJaws+F2" e cliccare sulla voce "Editor di Script".
In entrambi i casi, comparirà la finestra dell'Editor di Script di JAWS, con caricato un file che avrà un nome riconducibile all'applicazione attiva al momento di premere i tasti di richiamo dell'Editor, e completato dall'estensione "JSS".
Nel nostro caso, l'Editor si aprirà caricando il file "Notepad.JSS", così come pronunciato da JAWS, e come si potrà ricontrollare agendo sul comando di lettura del titolo della finestra, "TastoJaws+T".
Già dalla versione 18 di Jaws anche il Blocco Note di Windows è dotato di propri script. Quindi, a seconda della versione della sintesi vocale che state usando, all'apertura dell'Editor, il file Notepad.JSS potrebbe essere vuoto, oppure avere già degli altri script al suo interno. In quest'ultimo caso la prima riga potrebbe avere un aspetto simile:
; Copyright 2017 by Freedom Scientific, Inc.
L'ambiente di lavoro dell'Editor di Script è totalmente accessibile, con una finestra multi linea dove ci si può spostare in tutte le direzioni con i classici tasti di movimento.
I comandi sono raccolti in una serie di menu, attivabili con la pressione del tasto "Alt" seguito da una lettera, con le singole voci dotate di scelte rapide, almeno nelle funzioni principali.
Tra i menu, accanto ai classici "File", "Modifica", "Visualizza", c'è anche il menu "Script", il quale, così come si può intuire, comprende gran parte dei comandi di cui si farà uso in questa guida.
Esercizio 1.2.2. Lo script SalvaConNome.
Siete quindi dentro alla finestra principale dell'Editor di JAWS, con aperto il file script del Blocco Note, "Notepad.JSS". Sia nel caso che foste dentro ad un file vuoto, sia che vi troviate con del codice già scritto, andate alla fine del file aperto, premendo la combinazione "Control+Fine", quindi premete il tasto Invio per creare una riga vuota, e predisporvi così ad iniziare il lavoro.
Il comando per creare uno script è "Nuovo Script" dal menu Script, attivabile con la combinazione "Alt+S", seguita dalla pressione del tasto Invio, oppure direttamente con la scelta rapida "Control+E".
Si aprirà quindi la finestra Nuovo Script, nella quale si dovranno eseguire questi passaggi:
1. All'ingresso il cursore si trova nel campo "Nome Script", dove dovete digitare un nome a vostro piacimento, che potrete ovviamente scrivere anche in italiano; nel nostro caso, uniamo le tre parole del comando, "SalvaConNome", che dovrete scrivere senza virgolette e senza spazi, anche perché la procedura non ve lo consente, emettendo inoltre un segnale d'errore. Fate però attenzione a scrivere in maiuscolo le iniziali delle singole parole, così la sintesi vi leggerà poi il nome nel modo più corretto.
2. Premete una volta il tasto TAB per spostarvi alla casella di controllo denominata "Può essere assegnato al tasto"; qui premete una volta la barra spazio per attivare l'opzione, e consentire appunto più avanti di poter indicare quale tasto o combinazione di tasti si potrà usare per eseguire lo script.
3. Premete ancora TAB per passare al campo "Sommario"; qui sarà possibile scrivere un testo che poi sarà letto da JAWS quando si ripete la pressione dei tasti di attivazione dello script nell'aiuto tastiera di JAWS; anche in questo caso potete scrivere un testo a vostro piacimento, che potrebbe essere qualcosa come "Esegue Salva con nome nel menu File.". In questo caso si tratta di un testo libero, dove potreste usare tutti i tipi di carattere, ma va chiarito che le virgolette non sono necessarie.
4. Con una nuova pressione di TAB vi sposterete al campo "Descrizione"; qui il testo da inserire è pure in questo caso libero, anche se rivolto ad una spiegazione più dettagliata dello script; sarà letto sempre durante la fase di Aiuto Tastiera, ma premendo due volte velocemente i tasti di attivazione dello script. In questo caso, potreste scrivere un testo come il seguente: "Visualizza il menu File e ne attiva il comando Salva con nome simulando la pressione della lettera V.".
5. Un altro TAB e si sarà nel campo "Categoria"; qui sarà possibile selezionare con le frecce una delle categorie predefinite, oppure digitarne una a piacere. In questo caso, selezionate una di quelle già presenti, "Script".
6. Un ultimo TAB e si sarà nel campo "Assegna a", dove si dovrà premere soltanto un tasto o una combinazione di tasti a piacere. Se tale combinazione fosse già utilizzata dal programma per cui si crea lo script, o dalle altre funzioni di JAWS, la pressione vi sarà impedita, oppure vi sarà chiesta la conferma a sovrascrivere l'eventuale assegnazione precedente. Nel nostro caso, premete il tasto funzione "F12", che è lo standard Microsoft per questo tipo di comando. Se fate degli errori, spostatevi avanti ed indietro con Tab per tornare allo stesso campo, e ripetete l'operazione finché non si memorizza il tasto desiderato. Una volta raggiunto lo scopo, fate attenzione a non premere nessun altro tasto al di fuori del tasto Tab, neppure quelli di lettura di Jaws, altrimenti sarebbero questi ultimi ad essere memorizzati per l'attivazione dello script.
7. A questo punto sono stati compilati tutti i campi necessari, quindi si potrà premere direttamente il tasto Invio per confermare quanto inserito, oppure con una pressione di Tab si andrà sul tasto "Ok", il quale potrà comunque essere poi confermato con Invio.
1.2.3. Completiamo il codice.
Una volta creato lo script, si tornerà nell'area di testo principale dell'Editor di Script.
Qui, il programma avrà già scritto per noi due speciali righe di codice, sulla base dei dati che abbiamo prima specificato nei vari campi della finestra di dialogo.
Il cursore sarà posto in una riga vuota al centro tra queste due righe di codice, che singolarmente chiameremo d'ora in poi anche "Istruzioni".
Nel dettaglio, la prima di queste sarà:
Script SalvaConNome ()
L'altra invece conterrà la parola chiave:
EndScript
Che significa "FineScript".
Nel file aperto, queste due istruzioni risulteranno separate tra loro da tre righe vuote. Voi vi troverete come detto con il cursore al centro di questo spazio, e provate a muovervi con le frecce in modo da controllare che il codice presente nello script corrisponda a quanto indicato.
nella prima riga in alto, che rappresenta la riga d'intestazione dello script, potrete notare come l'Editor abbia aggiunto in automatico il prefisso "Script", al titolo che voi avete inserito nella schermata precedente, proprio per indicare che si tratta di uno script da attivare con una combinazione di tasti. A fine riga c'è anche una coppia di parentesi tonde, aperta e chiusa, anch'esse aggiunte dall'Editor, che in questo caso stanno solo ad indicare la fine della riga d'intestazione dello script.
Ora, resta da dire soltanto che l'altra riga di codice, "EndScript", creata dall'Editor, sta a significare la fine del codice relativo al nostro script. In altre parole, quando si premerà la combinazione di tasti che attiva lo script, Jaws eseguirà le istruzioni contenute tra le due righe citate, l'intestazione dello script e la sua istruzione di fine, in modo sequenziale, dalla prima all'ultima.
1.2.4. Il livello di punteggiatura della sintesi.
Per chi usasse solo la sintesi vocale, si consiglia almeno agli inizi di impostare il livello di punteggiatura su "Tutta", per avere la certezza che Jaws ci legga ogni carattere presente nel codice. Per chi volesse modificare tale impostazione, una semplice via può essere premere "TastoJaws+F2", ed eseguire queste azioni:
1. Selezionare "Impostazioni veloci", premendo l'iniziale "I", e Invio.
2. Premere Tab e portarsi su "Punteggiatura", premendo l'iniziale "P", finché non ci si posizioni sulla voce desiderata.
3. Modificare l'impostazione premendo la barra spazio, e poi Invio.
1.2.5. Istruzioni tra parentesi graffe.
Nel caso del nostro primo script, come anticipato, le azioni principali da far eseguire sono soltanto due, e per il momento saranno due anche le istruzioni da inserire nel nostro script. Questo breve codice ci offre comunque l'occasione di dare un'informazione importante: dentro agli script, tutto quello che viene racchiuso tra una coppia di parentesi graffe, "{" e "}", viene considerato da Jaws come se lo aveste digitato direttamente dalla tastiera all'applicazione, senza quindi passare per il controllo di Jaws.
Per questo, nel nostro caso, portatevi nella riga centrale delle tre vuote poste tra l'intestazione dello script e l'istruzione di chiusura, e digitate, dentro ad una coppia di parentesi graffe, la combinazione che visualizza il menu File, scrivendo la riga seguente:
{Alt+F}
Quindi, a fine riga, premete Invio per ricreare una riga vuota, e poi inserite come seconda istruzione la lettera che corrisponde al tasto caldo del comando Salva con nome, sempre tra parentesi graffe:
{V}
Con questa seconda istruzione abbiamo immesso tutto il codice che per il momento ci serve a far funzionare il nostro script. Prima di proseguire con il nostro lavoro, una precisazione importante: si può inserire tra parentesi graffe un solo elemento alla volta, come una combinazione tasti, anche se composta da più elementi, uniti dal segno "+", oppure un singolo carattere, come nel nostro esempio la lettera V. Se il testo posto tra parentesi graffe non viene riconosciuto da Jaws come un tasto o una combinazione di tasti valida, oppure è presente più di un carattere, o anche solo uno spazio dopo al singolo carattere digitato, il testo viene ignorato da Jaws.
Capiremo più avanti come fare per specificare stringhe più lunghe come se fossero immesse dalla tastiera.
Ricapitolando, se tutto è stato fatto correttamente, il nostro primo script ora dovrebbe avere l'aspetto seguente:
Script SalvaConNome ()
{Alt+F}
{V}
EndScript
1.2.6. Compilare uno script.
Fino a questo momento, noi abbiamo scritto del codice in forma testuale in un file di testo, ma il computer, per poter eseguire il nostro script, ha bisogno di trasformare queste parole in un linguaggio che lo stesso computer sia in grado di elaborare rapidamente, in un formato "binario". Per avviare questa trasformazione, che in termine tecnico si chiama "Compilazione", si deve semplicemente salvare il file aperto nell'Editor di Script, tramite appunto il comando "Salva" nel menu File, che si attiva con "Alt+F, lettera S", oppure con la scelta rapida "Control+S". Una volta premuto il comando, qualora siano impostati i livelli di prolissità standard, Jaws dovrebbe dire "Compilazione completata", pronunciando poi il nome del file script, "Notepad.JSS".
In queste pagine, quando vi sarà chiesto di "salvare e compilare", ove non specificato, s'intenderà di dover premere "Control+S". Per completare l'argomento, va detto che Esiste anche un altro comando del menu File, "Salvare senza compilare", che conviene casomai richiamare con la scelta rapida "Control+W", il quale consente appunto di non sottoporre a compilazione il file script sorgente, pur salvandone le eventuali modifiche apportate.
A questo punto è necessaria un'importante precisazione: quando si crea uno script, questa azione di salvataggio non si limita ad agire sul file script che lo contiene, che ha estensione .JSS. In realtà, la compilazione inizializza e poi aggiorna di volta in volta altri file, con lo stesso nome ma con estensione diversa.
Nel caso degli script per il Blocco Note di Windows, premendo "Control+S"sono stati creati altri tre file, tutti che hanno in comune il nome base "Notepad", e con le estensioni seguenti:
1. "JSD", il file documentazione, che contiene, oltre al nome, il Sommario, la Descrizione e la Categoria immessi al momento di creare gli script.
2. "JKM", il file tasti, che contiene le scelte rapide in grado di attivare gli script.
3. "JSB", il file compilato vero e proprio, quello che dialoga con il sistema operativo.
Tutti e tre questi file, assieme al file sorgente con estensione JSS, vengono di norma salvati nella cartella delle "Impostazioni personali" di JAWS. Questa si può raggiungere tramite il collegamento tra le "Utility", (Utilità), cui ci si arriva partendo dall'elenco dei programmi, e cliccando sulla voce che indica la versione di Jaws in Uso. Ad esempio, se avete a disposizione la versione 2020, bisogna cliccare una dietro l'altra le seguenti voci:
- JAWS 2020.
- strumenti.
- Utility - JAWS 2020.
- Impostazioni personali.
Ovviamente, qualora disponiate di Jaws in una diversa versione, dovrete cercare la voce con il numero della vostra versione al posto di 2020.
Come detto prima, se la compilazione ha avuto un esito positivo, avete finito con il vostro script, e potrete così tornare al Blocco Note per provarlo.
Quando sarete in questa condizione, premete la scelta rapida impostata in fase di creazione dello script, il tasto funzione F12. Se tutto va bene, vi comparirà la schermata di dialogo Salva con nome.
Se volete, entrate nell'"Aiuto Tastiera", tramite la combinazione "TastoJaws+1", e provate a:
1. Premere il tasto F12 una volta, per sentire una descrizione corta della sua funzione, la quale è ciò che avete inserito nel campo "Sommario" durante la creazione dello script;
2. Premere F12 due volte velocemente, per ascoltare le note informative nella loro versione più lunga, che invece corrisponde a quanto si è digitato nel campo "Descrizione".
***
1.3. Script e Funzioni.
Uno script, come quello appena realizzato, è il singolo frammento di codice che parte dall'intestazione, la riga con il nome dello script preceduto dal tipo di elemento, sino alla riga con l'istruzione che ne segna la fine. I file script, invece, come ad esempio Notepad.JSS, in cui abbiamo lavorato sinora, hanno il compito di raccogliere in un unico contenitore tutti i singoli script, creati per l'applicazione da cui il file prende nome.
In realtà, di questi frammenti di codice, come sono stati definiti, ve ne sono due diversi tipi, ben distinti tra loro:
1. Gli script veri e propri, che sono attivati da una combinazione di tasti, così com'è avvenuto nel caso del nostro primo script SalvaConNome.
2. Tutti gli altri, che si chiamano invece "Funzioni", le quali sono attivate direttamente dagli script o da altre funzioni, senza appunto nessuna combinazione tasti diretta.
Per questa caratteristica di non avere dei propri tasti di attivazione, le funzioni sono, si dice, "chiamate" dagli script o dalle altre funzioni. Infatti, proprio "Inserisci chiamata a funzione" è il comando che attiva la procedura guidata per aggiungere una funzione nell'Editor di Script. Almeno all'inizio, si cercherà di citare i riferimenti alle funzioni usando questa formula, più che altro per far capire la particolarità di questi elementi di codice.
Le Funzioni, a loro volta, si dividono in almeno tre grandi categorie:
1. "Funzioni Integrate", quelle che costituiscono la componente fondamentale del pacchetto software acquistato con Jaws, che andrebbero lasciate così come sono.
2. "Funzioni Evento", anch'esse fornite con Jaws, cui non è possibile cambiare nome, ma di cui possono essere utilizzate delle versioni, anche vuote, da poter personalizzare ed inserire nei propri script.
3. "Funzioni Definite dall'Utente", che ciascuno di noi può creare con il nome ed i contenuti dettati dalle proprie necessità o preferenze.
Per il momento ci occuperemo soltanto delle Funzioni Integrate, aggiungendone una al nostro primo script, al fine di migliorarne l'efficacia.
1.3.1. Sospendere l'esecuzione dello script.
Lo script "SalvaConNome ()", nel corso del collaudo effettuato, dovrebbe aver svolto regolarmente il suo compito. Se così non fosse, ciò sarebbe probabilmente dovuto al fatto che nello script le due istruzioni tra parentesi graffe non potevano essere eseguite immediatamente una dietro l'altra.
In casi come questo, possiamo servirci della funzione integrata "Pause", (MettiInPausa), la quale sospende temporaneamente il funzionamento dello script nell'attesa che l'applicazione corrente, o il sistema operativo, concluda il proprio lavoro.
Anche se non si può definire con esattezza il tempo per il quale Jaws darà la precedenza agli altri programmi, è possibile che tale utilizzo rallenti un po' il lavoro dei nostri script, nell'ordine di centesimi o decimi di secondo. Il suo apporto è comunque utile, a volte persino indispensabile, per garantire una buona efficacia dei nostri elementi di codice.
Tornando al nostro script, tale funzione andrà materialmente inserita tra le due istruzioni che compongono l'iniziale contenuto dello stesso script, quella che visualizza il menu e la successiva che ne attiva una sua voce. In tal modo, sarà fornito il tempo necessario all'applicativo per far aprire il menu, per poi successivamente attivarne il comando relativo.
Esercizio 1.3.2. La seconda versione di SalvaConNome ().
Per applicare quanto sin qui appreso, proveremo ora ad inserire la chiamata a funzione "Pause ()"nel nostro primo script, "SalvaConNome ()", cui potrete tornare se avete ancora aperto l'Editor di Script.
Se così non fosse, ritornate nel Blocco Note di Windows, dove potrete richiamare l'Editor di Script con il comando "TastoJaws+0" della tastiera estesa.
Una volta caricatosi il file script, "Notepad.JSS", andate alla fine del codice tramite la combinazione "Control+Fine", quindi risalite di qualche riga fino a tornare all'altezza dell'istruzione:
{Alt+F}
Andate a fine riga e premete Invio per creare una riga vuota. Ora, per iniziare ad inserire delle chiamate a funzione negli script, agite nel modo seguente:
1. Attivate il comando citato in precedenza, "Inserisci chiamata a funzione" nel menu Script, premendo "Alt+S quindi la lettera F", oppure direttamente la scelta rapida"Control+I".
2. Sarà visualizzata la schermata "Inserisci Funzione", ed il cursore sarà posto in un campo dove poter iniziare a scrivere il nome della funzione da aggiungere allo script. Come detto, dobbiamo inserire la chiamata a funzione "Pause". A tale scopo iniziate a digitare le lettere che compongono questa istruzione, prima la "P", poi la "A", e così via.
3. Ad ogni pressione di una lettera, non importa siano maiuscole o minuscole, Jaws potrebbe leggervi la prima funzione che contiene tutte le lettere inserite, assieme a delle brevi note sul compito della funzione, il più delle volte in inglese; quando sentirete casomai leggere la parola Pause, premete una volta il tasto TAB ed il cursore si posizionerà sul lungo elenco delle chiamate a funzione, selezionando in teoria quella da voi prescelta. Qualora così non fosse, ne sareste comunque nelle vicinanze, e si potrà salire o scendere con le frecce per selezionare esattamente l'istruzione desiderata.
4. Per concludere l'inserimento, vi sono più metodi, ma in questa fase limitatevi a cliccare sul pulsante "Fine", azione che si può compiere sia premendo TAB fino al pulsante omonimo, quindi premendo su Invio, oppure con la scelta rapida "Alt+F".
In ogni caso, si tornerà alla finestra dell'Editor, dove la funzione appena scelta sarà inserita all'interno dello script, aggiungendovi la coppia di parentesi aperta e chiusa, ed il cursore sarà posizionato a fine riga.
Lo script dovrebbe ora avere l'aspetto seguente:
Script SalvaConNome ()
{Alt+F}
Pause ()
{V}
EndScript
Ora, completate la modifica salvando, e quindi compilando lo script, tramite "Control+S".
tornate al Blocco Note e riattivate il comando premendo F12. Se prima si erano verificati dei problemi, controllate che si siano risolti, altrimenti fate attenzione a cosa Jaws vi pronuncia dopo aver premuto il tasto funzione. Sulla base delle impostazioni di prolissità, oltre al titolo della schermata "Salva con nome", potreste sentire qualcosa come:
"Menu, sto lasciando il menu."
In ogni caso, lasciate aperto l'Editor, perché apporteremo subito un'ulteriore modifica al nostro script.
***
1.4. Spegnere e riaccendere la sintesi vocale.
Per impedire che i nostri script pronuncino informazioni non necessarie, che ci distraggano o che comunque rallentino il lavoro, è opportuno spegnere la voce di Jaws per il tempo in cui essa non sia indispensabile. Ovviamente, nei casi in cui si ricorre a tale istruzione, è obbligatorio accertarsi che all'interno dello stesso script, prima della sua conclusione, sia posto anche un'istruzione che la riaccenda, la sintesi, pena il fatto che JAWS smetta di parlare e si perda così la possibilità di interagire col PC.
Nel dettaglio, le funzioni da inserire sono "SpeechOff", (SpegniParola), per interrompere temporaneamente la sintesi, e "SpeechOn", (AccendiParola), per riattivarla.
Esercizio 1.4.1. La terza versione di SalvaConNome ().
Dovremmo avere ancora aperto l'Editor di Script, con caricato il file script del Blocco Note, Notepad.JSS. Se così non fosse, aprite di nuovo il Blocco Note e richiamate da lì l'Editor di Jaws, con "TastoJaws+0".
Portatevi all'inizio dello script SalvaConNome, e precisamente nella prima riga vuota sotto all'intestazione. Ora, premete Invio per crearne un'altra, quindi seguite i passi qui riportati:
1. Attivate il comando Inserisci chiamata A Funzione, tramite la scelta rapida "Control+I".
2. Nella schermata Inserisci Funzione, iniziate a digitare il nome della prima funzione nominata in precedenza, "SpeechOff", quella che serve a spegnere la sintesi.
3. Quando la sentirete pronunciare, premete una volta il tasto TAB; fate attenzione perché questa funzione si trova appena prima della sua funzione contraria che, appunto, differisce dalla prima solo per terminare con il suffisso "on" anziché "off". In ogni caso, quando siete certi di averla selezionata, chiudete l'immissione con Alt+F.
4. Tornati all'Editor, scorrete le righe verso il basso fino ad arrivare alla seconda istruzione con le Parentesi graffe, "{V}", portandovi a fine riga e premendo Invio per creare una riga vuota.
5. Premete "Control+I" per inserire una nuova chiamata a funzione. Appena entrati nella schermata, dovreste essere posizionati sull'ultima funzione inserita. Da qui, senza digitare nulla, premete il tasto Tab una volta per portarvi nell'elenco delle funzioni, e scendete di una riga per selezionare il nostro attuale obiettivo, "SpeechOn"; quando siete certi di averla selezionata, premete Alt+F per chiudere l'inserimento.
Se avete seguito tutti i passi descritti, il nostro script dovrebbe contenere ora almeno le seguenti istruzioni:
Script SalvaConNome ()
SpeechOff ()
{Alt+F}
Pause ()
{V}
SpeechOn ()
EndScript
***
1.5. I commenti nel codice
I commenti nel codice degli script sono del testo che si trova prima o a fianco alle normali istruzioni, ma che ha la particolarità di essere posizionato dopo un carattere separatore: il Punto e Virgola, ";". Queste note servono appunto per dare delle informazioni aggiuntive sulle istruzioni di codice alla destra del separatore, o che si trovano nelle righe successive a quella in cui abbiamo posto i commenti. Jaws, infatti, nell'eseguire gli script, ignora tutto quello che si trova dopo il carattere Punto e Virgola sino a fine riga, creando così uno spazio di libero utilizzo dove possiamo porre ogni informazione utile a capire meglio il codice cui i commenti si riferiscono.
Anche se questi commenti possono sembrare ora una perdita di tempo, man mano che aumenteranno le dimensioni dei vostri script, vi accorgerete ben presto invece della loro utilità. Sarà più facile di quanto si pensi, infatti, dimenticarsi il motivo che vi ha spinto a scrivere quella istruzione anziché un'altra, la volta che riaprirete un file script con del codice da voi elaborato anche solo un po' di tempo prima.
I commenti sono indispensabili, a maggior ragione, per poter scambiare con altre persone i propri script, affinché gli altri possano capire correttamente il loro funzionamento. Per quanto riguarda queste pagine, d'ora in poi ogni riga di codice presente nel corpo degli script, ad eccezione quindi dell'intestazione e dell'istruzione di fine, sarà corredata o preceduta da commenti, sia per spiegare o tradurre dei comandi inseriti, sia per consentirvi di copiare il codice posto a video così com'è, assieme alle necessarie spiegazioni.
Esercizio 1.5.1. La versione definitiva di SalvaConNome ().
Quale esempio pratico, mettiamo di seguito l'ultima versione proposta del nostro script, questa volta completata dei commenti. Tali annotazioni, come detto, sono libere, e quelle che vi proporremo di volta in volta potranno essere ovviamente da voi modificate o integrate.
In ogni caso, questa potrebbe essere la forma definitiva del codice:
Script SalvaConNome ()
SpeechOff (); spegne la sintesi
{Alt+F}; richiama il menu File
Pause (); sospende temporaneamente lo script
{V}; esegue il comando
SpeechOn (); riattiva la sintesi
EndScript
Per concludere la sessione di lavoro, salvate e compilate lo script. Se l'esito della compilazione sarà positivo, chiudete l'Editor di Script, e uscite anche dal Blocco Note.
***
1.10. Riepilogo.
In questo primo capitolo si è parlato di cosa siano gli script, della differenza tra script e funzioni, realizzando un primo script di esempio.
Abbiamo poi spiegato come migliorare la funzionalità degli script mettendo una sospensione temporanea nell'eseguire gli script, oltre a come spegnere e riaccendere la sintesi vocale.
Se c'è qualche concetto che non è del tutto chiaro, potete anche rivolgervi ai recapiti posti alla fine. L'importante è proseguire quando si è compreso bene quanto fin qui esposto, perché le nozioni espresse si daranno man mano per acquisite.
Per questo, ad ogni conclusione di capitolo, sarà proposto questo riepilogo, che avrà come numero di sezione il 10, il quale a sua volta comprenderà tre appendici:
1. "Elementi di Codice personale", dove saranno riproposti i nomi, i file script in cui sono inseriti, gli eventuali tasti di attivazione, e comunque una breve descrizione degli elementi di codice da noi prodotti nel capitolo.
2. "Script, Funzioni e Comandi di Jaws", dove si riproporranno invece gli script nativi, le funzioni integrate ed altri comandi del programma di sintesi vocale trattati in questa parte, con la traduzione del nome ed una breve descrizione.
3. "Voci di Glossario", dove saranno elencati alcuni termini di particolare importanza, assieme all'eventuale traduzione ed al loro significato.
Nel prossimo capitolo, inizieremo analizzando come gestire gli script in cui si muovono i cursori di Jaws. In particolare, affronteremo il modo in cui convertire i tasti da noi premuti, durante il suo normale utilizzo, in istruzioni che svolgano il proprio compito all'interno dei nostri script.
Il capitolo si concluderà spiegando cosa sono i parametri, come li si possono aggiungere alle funzioni, e come sia possibile ridurre e semplificare la scrittura del codice tramite il loro utilizzo.
1.10.1. Elementi di Codice Personale.
SalvaConNome. File script: Blocco Note. F12.
- Esegue Salva Con Nome nel menu File.
1.10.2. Script, Funzioni e Comandi di Jaws.
Pause. (MettiInPausa).
- Sospende il funzionamento dello script, per lasciare il modo alle altre applicazioni di completare i loro compiti.
SpeechOff. (SpegniParlato).
- Spegne la sintesi vocale.
SpeechOn. (AccendiParlato).
- Riattiva la sintesi vocale.
1.10.3. Voci di Glossario.
Screen-Reader. (LettoreDiSchermo).
- Nome generico dei programmi di sintesi vocale.
Layout Tastiera.
- Comando di Jaws per scegliere il tipo di configurazione nella tastiera del pc.
Scelte Rapide da tastiera.
- Combinazioni di tasti che servono per attivare velocemente i comandi dei menu.
tasto caldo.
- Altro nome per le scelte rapide, oppure lettera o carattere da premere in un menu per selezionare o eseguire un comando.
Editor di Script.
- Applicativo del programma di sintesi vocale per la creazione e la modifica degli script.
JSS.
- Estensione dei file sorgente degli script in formato testuale.
Script.
- Parola chiave per determinare l'inizio degli script nel codice.
Può essere assegnato al tasto.
- Nella schermata di creazione o modifica degli elementi di codice, controllo da selezionare per poter inserire i tasti di attivazione di uno script. Altrimenti, se non selezionato, consente di impostare i dati di una funzione.
Sommario.
- Nella schermata di creazione o modifica degli elementi di codice, campo in cui inserire un testo con una descrizione sintetica dello script, che sarà letta durante l'Aiuto Tastiera di Jaws quando si premono i tasti di attivazione.
Descrizione.
- Nella schermata di creazione o modifica degli elementi di codice, campo in cui inserire un testo con una descrizione dettagliata dello script, che sarà letta durante l'Aiuto Tastiera di Jaws, quando si premono due volte velocemente i tasti di attivazione.
Categoria.
- Nella schermata di creazione o modifica degli elementi di codice, campo in cui selezionare con le frecce una delle categorie predefinite, oppure digitarne una a piacere.
Assegna a.
- Nella schermata di creazione o modifica degli elementi di codice, campo in cui si può premere un tasto o una combinazione di tasti a piacere che servirà ad eseguire lo script.
EndScript. ((FineScript)).
- Istruzione che definisce la conclusione di uno script.
salvare e compilare.
- Nell'Editor di Script, comando che salva il formato testuale del file sorgente, avviando la compilazione del codice in formato binario.
Salvare senza compilare.
- Nell'Editor di Script, comando che salva il formato testuale del file sorgente, senza avviare la compilazione del codice.
JSD.
- Estensione dei file testuali per la documentazione degli script.
JSB.
- Estensione dei file compilati degli script, in formato binario.
Impostazioni personali.
- Cartella principale dove sono salvati di norma i file creati per gli script.
Funzioni.
- Elementi di codice chiamati da script o altre funzioni, primi di propri tasti di Attivazione .
Inserisci chiamata a funzione.
- Nell'Editor di Script, comando per l'aggiunta di una chiamata a funzione nel codice.
Funzioni Integrate.
- Elementi di codice predisposti dai programmatori di Jaws, senza propri tasti di attivazione.
Funzioni Evento.
- Speciali Elementi di codice predisposti dai programmatori di Jaws, che si attivano in modo automatico al verificarsi di una determinata condizione.
Funzioni Definite dall'Utente.
- Elementi di codice creati dal singolo utente per la configurazione personale.
Per ulteriori spiegazioni, scrivere a: Abramo Volpato, oppure, a: Nunziante Esposito.