Gli script di Jaws 03. Funzionamento di Jaws.

Programmiamoli da Soli!

Gerarchia nei file script.

In queste pagine noi stiamo cercando di capire come realizzare degli script, con l’obiettivo di personalizzare il nostro modo di usare il PC. In realtà, tutto il programma di sintesi vocale Jaws è costituito da script, grandi e piccoli, i quali gestiscono ogni singolo comando che si può dare manualmente, e tutte le funzioni automatiche che si attivano sulla base di quello che succede nel sistema operativo e nei programmi in cui si opera.

All’avvio di Jaws, quando si accende il PC o quando lo si richiama in un momento successivo, il programma carica un file script Predefinito. Nella sua versione testuale, questo file prende il nome di
Default.JSS
, il quale contiene la gran parte degli script e delle funzioni che servono per far funzionare la sintesi vocale.

Poi, quando si presenta una qualche schermata di Windows o di altri programmi applicativi, Jaws cerca tra i suoi script se ne esiste uno riconducibile a quella finestra del sistema operativo, o a quel programma, e se lo trova, lo carica.

la priorità con la quale Jaws analizza questi file, che si può definire
gerarchia degli script
,è inversa rispetto all’ordine in cui sono caricati. In altre parole, Jaws analizza per primi gli script che sono specifici dell’applicativo o dell’ambiente in cui operano, poi valuta quelli inseriti nel file predefinito.

Ad esempio, se noi premiamo una combinazione di tasti cui è associato uno script con nome uguale sia nel file del singolo applicativo, sia nel file predefinito, verrà eseguito soltanto lo script dell’applicativo, mentre quello nello script predefinito sarà ignorato. In pratica, questa è la sequenza delle azioni:

  1. Noi premiamo una combinazione di tasti, o si genera un evento nell’applicativo o nel sistema.
  2. Jaws cerca nel file script del singolo applicativo aperto, o della schermata di Windows, se esiste uno script collegato a quella combinazione di tasti, o all’evento verificatosi, e, se la trova, la esegue.
  3. Se lo script è stato trovato, l’esecuzione di Jaws si interrompe. Altrimenti, la ricerca di script collegati ai tasti premuti, o agli eventi presentatisi, continua tra quelli elencati all’interno del file
    Default.JSS
    . Anche qui, se Jaws lo trova, lo script viene eseguito, e la procedura si conclude.

Il modo in cui la gerarchia nei file script influisce nella loro gestione, come al solito, sarà molto più chiaro quando avremo svolto l’esercitazione sul tema. Per il momento va evidenziata la sua grande importanza, per il funzionamento del programma di sintesi vocale e, soprattutto, per la nostra possibilità di personalizzarlo al meglio.

***

Uso delle stringhe Standard.

Nel 2007 l’UIC ha fatto tradurre il libro
"Tutto ciò che avreste voluto sapere su come scrivere gli script JAWS, ma che non sapevate a chi chiedere"
, di Kenneth A. Gould.

In questo manuale, tra le molte interessanti informazioni, si affermava che tramite gli script per Jaws si sarebbero potuti attivare e controllare svariati processi informatici,
"… Da cose semplici come inserire stringhe ripetute di dati, a molte delle azioni che il vostro computer compie continuamente come parte del suo operare".

In particolare, il primo esempio citato significa, in concreto, la possibilità di scrivere direttamente dentro al proprio editor, o al programma di elaborazione testi, parole o numeri usati di frequente, servendosi di script attivati da una combinazione tasti a scelta. Una simile funzionalità è particolarmente utile sia quando si opera nel campo della programmazione, dove si devono spesso ripetere parti di codice sempre uguale, sia nello scrivere di tutti i giorni, dove può capitare di dover riprodurre formule di apertura o chiusura standard, ad esempio la firma nelle lettere.

Tale esigenza è in qualche caso soddisfatta dalle cosiddette
macro
, che sono degli speciali comandi posti all’interno di singoli programmi. Ad esempio, in Microsoft Office, le macro sono delle registrazioni delle azioni che l’utente svolge nel programma, le quali possono essere poi richiamate o tramite o una combinazione di scelta rapida, oppure selezionandole da un elenco. A prescindere dal fatto che la loro gestione possa essere più o meno semplice, esse hanno sicuramente il limite di poter essere utilizzate solo nei programmi, o nei pacchetti, per cui sono stati create.

Inserire del testo tramite Jaws, invece, può essere conveniente perché lo si può rendere disponibile teoricamente in tutti gli applicativi, ed in tutti allo stesso modo, specificando un semplice dato testuale. A prescindere dall’utilità di questo metodo, in questo caso esso ci fornisce un esempio che ci possa far meglio comprendere il funzionamento della gerarchia nei file script.

Iniziamo col spiegare che lo scopo della nostra esercitazione è creare due script pressoché identici, con lo stesso nome e con la stessa combinazione di tasti che li attivano, con la differenza sostanziale di essere uno creato in un file script di un programma applicativo, l’altro di essere inserito nel file predefinito,
Default.JSS.

inizieremo col realizzare quello nell’applicativo, con una forma provvisoria, poi lo copieremo e lo incolleremo nel file predefinito, dove vi apporteremo la modifica definitiva. In tal modo, sarà possibile distinguere l’attivazione dell’uno o dell’altro.

Questo primo script lo potremmo creare all’interno di un qualsiasi applicativo, ovunque vi sia almeno una schermata dove poter scrivere. Nel dettaglio, lo useremo per inserire un nome e cognome che costituisca la nostra firma, così come si era ipotizzato in precedenza.

Per l’occasione, torniamo all’applicativo di cui ci siamo serviti nel capitolo scorso, il
Blocco Note
, che si carica come sempre cercandone il nome nella casella di ricerca del sistema operativo.

Una volta dentro al programma, richiamate l’Editor di Script con
TastoJaws+0
, e sarà caricato il suo file script,
Notepad.JSS
. Come al solito, andate alla fine del file, create una riga vuota, quindi premete
Control+E
per generare un nuovo script.

A questo punto, diamo per scontato che siate ormai in grado di creare degli script senza troppi dettagli. Potremo così iniziare a proporvi un nuovo modo per illustrare le singole esercitazioni da svolgere, che ci accompagnerà d’ora in poi nel nostro cammino.

Istruzioni per gli script sotto forma di scheda.

Ad iniziare da questo capitolo, in tutti gli esempi di codice, vi sarà proposto uno schema con un titolo, dove saranno presenti il tipo ed il nome dell’elemento. Tali dati saranno preceduti dalla solita serie di numeri separati da punti, dapprima il numero del capitolo seguito da quello della sezione, quindi dal numero progressivo dei titoli appartenenti ad una stessa sezione.

Saranno poi proposte una serie di annotazioni, contraddistinte da una specifica etichetta. Ciascuna di esse sarà presente solo se contiene informazioni, altrimenti verrà omessa.

Nel dettaglio, nel caso della creazione di script, tali sezioni potranno contenere:

  1. FileScript
    , il nome del file in cui dovrà essere inserito lo script.
  2. Nome
    , il nome da immettere nel campo omonimo della procedura guidata.
  3. Sommario
    , lo scopo dello script, anch’esso da poter inserire nell’omonimo campo.
  4. Descrizione
    , l’azione in dettaglio svolta dallo script, sempre nella forma da poter inserire.
  5. TastiAttivazione
    , la combinazione tasti che si suggerisce debba attivare lo script.
  6. Novità
    , una descrizione di eventuali nuovi concetti o funzioni che lo script contiene.
  7. Fasi
    , le principali fasi del lavoro svolto dallo script, qualora ve ne sia più d’una.
  8. Note
    , eventuali annotazioni suppletive circa il suo funzionamento.
  9. Codice
    , il codice vero e proprio da inserire.
  10. Collaudo
    , eventuali informazioni sulla prova della procedura realizzata.

Se avete notato, si dà per scontato che, trattandosi di uno script, in ogni caso si dovrà effettuare la preliminare pressione della barra spazio nel campo
Può essere assegnato al tasto
. Precisiamo inoltre che, per brevità, saranno omesse anche le indicazioni per il campo
Categoria
, che potreste casomai compilare con un termine da voi inserito.

Esercizio 3.2.2. Lo script InserisceFirma.

FileScript.

Notepad.JSS

Nome.

InserisceFirma

Sommario.

Scrive la firma.

Descrizione.

Immette la firma personale nel documento, quindi legge la riga.

TastiAttivazione.

Shift+Control+1

Novità.
  1. La funzione integrata
    TypeString
    , (ScriveDatoTestuale), che invia all’applicazione il testo che si deve specificare come suo unico parametro. Quando avevamo illustrato l’inserimento di testo tramite le parentesi graffe, se vi ricordate, avevamo segnalato che esso consentiva di specificare solo un elemento, come una combinazione di tasti, o un carattere alla volta. Questa funzione, invece, consente di inserire nel documento, o nel campo di editazione corrente, un qualsiasi testo, a prescindere dalla sua lunghezza.
  2. La funzione integrata
    SayLine ()
    ,una delle funzioni di lettura citate nel precedente capitolo e che, come abbiamo già appreso, serve a leggere il contenuto della riga sul cursore. Non ha parametri.
Note.

Segnaliamo subito che, come tasto di attivazione, per numero 1 si intende quello della tastiera estesa. Una volta creato lo script, il suo contenuto sarà davvero minimale, limitandosi a tre sole righe di codice, ciascuna contenente una funzione. Anche in questo caso, diamo per acquisita la procedura di inserimento, che si attiva con
Control+I
, elencando di seguito le funzioni da inserire in sequenza, seguendo le brevi note esplicative:

  1. TypeString ()
    ,che in questo caso serve ad inserire la firma che noi vogliamo sia riprodotta nel documento aperto. Va quindi specificato come parametro un nome e cognome qualsiasi, come ad esempio
    "Mario Rossi"
    . Ricordatevi solo che vanno inserite nel campo anche le virgolette.
  2. Pause ()
    , per dare il tempo alla precedente istruzione di scrivere materialmente il testo.
  3. SayLine ()
    , per leggerci quanto appena inserito, dandocene così la conferma.

Codice.


Script InserisceFirma ()
TypeString ("Mario Rossi"); immette la firma nel documento
Pause (); sospende temporaneamente lo script
SayLine (); legge la riga
EndScript

Collaudo.

Compilate con
Control+S
. Se tutto va bene, tornate al Blocco Note per provare lo script, in un documento anche vuoto, premendo la combinazione
Shift+Control+1
, dove l’uno è, ricordiamo, quello della tastiera estesa. Lo script dovrebbe scrivere il testo indicato come parametro, che dovrebbe esservi anche pronunciato da Jaws.

Al termine, cancellate la firma appena inserita e lasciate pure aperto il Blocco Note, perché dovremo ritornarci a breve.

Copiare uno Script.

Il contenuto del prossimo script sarà quasi uguale a quello appena creato, e per questo ne approfittiamo per esaminare anche la procedura di copia degli elementi di codice prevista all’interno dell’Editor di Jaws.

Tornate quindi in questo programma, in cui dovrebbe essere aperto il file
Notepad.JSS
. Portatevi in un qualche punto dentro allo script
InserisceFirma ()
, e da lì attivate il comando
Seleziona Script
nel menu Modifica, premendo la scelta rapida
Control+R.

Come spiega il nome, si sarà così selezionato tutto il codice del solo script cui eravate all’interno. Fate però attenzione perché, diversamente dal solito, il testo selezionato potrebbe non esservi letto, sulla base della versione di Jaws che utilizzate. In ogni caso, provando ad eseguire la classica azione di Copia,
Control+C
, il comando dovrebbe riuscire, casomai avvisandovi che la selezione è stata effettivamente copiata

In generale, copiare un elemento di codice da un file ad un altro è conveniente soprattutto in caso di script lunghi, perché il codice viene comunque riconosciuto dall’Editor anche se non digitato direttamente. Per quanto riguarda le informazioni dello script, invece, la cosa è già molto meno conveniente, in quanto sono salvati solo il nome ed il tipo dello script, mentre
Sommario,
Descrizione,
Categoria
e, molto spesso anche la Combinazione Tasti devono essere reinseriti a mano.

Per il momento abbiamo concluso con questa versione dello script creato dentro a
Notepad.JSS
. Non chiudete però l’Editor, e soprattutto non sovrascrivete il contenuto degli appunti con un’altra operazione di copia, perché continueremo subito la nostra esercitazione utilizzando il codice appena salvato negli appunti.

***

Il file script Predefinito Default.JSS.

Abbiamo già citato il file script Predefinito, quello che contiene gran parte del
"motore"
di Jaws. Facciamo ora la conoscenza diretta con questo file script, Default.JSS, che d’ora in poi sarà sempre più spesso coinvolto nel nostro percorso.

Per aprire il file script Predefinito, da dentro l’Editor di Jaws, il comando è
Apri file predefinito
nel menu File, attivabile con
Alt+F, lettera D
, oppure con la scelta rapida
Shift+Control+D.

Una volta aperto, anche qui effettuate il salvataggio preventivo senza aver scritto nulla: attendete qualche istante e, se Jaws vi informa dell’avvenuta compilazione, proseguite, o altrimenti adoperatevi per risolvere eventuali problemi che si fossero verificati.

In ogni caso, vi troverete di fronte ad un file molto complesso, cui dedicheremo più avanti lo spazio necessario per esaminarne la struttura. Proprio per questo, si raccomanda di seguire alla lettera le indicazioni fornite per creare e modificare i nostri script, in modo da evitare che possano sorgere dei problemi in questo file, che è così importante per il funzionamento di Jaws.

Detto questo, recatevi come al solito alla fine del file aperto, ma provate a leggere ora il numero di riga nella Barra di stato, con la combinazione
TastoJaws+PaginaGiù
. Come nel caso del Blocco Note, se agendo sul comando appena citato non fosse letto nulla, mostrate la Barra di stato tramite l’omonimo comando del menu
Visualizza
, che si attiva con
Alt+V, lettera S
, casomai premendo Invio se la pressione del tasto caldo vi portasse solo sulla voce senza attivarla.

Se invece è tutto a posto, o quando visualizzata la barra tornate a premere il comando di lettura, vi sarà letto un numero attorno o superiore alle 20000 righe. Questo valore, se non altro, dovrebbe darvi un’idea sulla mole di codice che serve a svolgere solo una parte, sia pure consistente, del lavoro di Jaws.

Più che altro, quando noi andiamo ad inserire del nostro codice in file script anche di grandi dimensioni come questo, per potersi orientare più facilmente, potrebbe essere utile anteporre all’inizio del nostro codice, o delle nostre eventuali modifiche alla forma originale, una particolare stringa di commento, preceduta ad inizio riga dal carattere Punto e Virgola, cui sia poi facile ritornare utilizzando un comando di ricerca testo.

Il contenuto di tale stringa potrebbe essere lo stesso del tutto personale, una sorta di
"firma informatica"
, anziché quella reale, che contraddistingua lo stesso in modo univoco il vostro codice. Si potrebbe utilizzare, ad esempio, un prefisso particolare,
_Ps
, composto da un acronimo preceduto da un carattere Sottolineato, con le due lettere che possono stare ad indicare sia
Personale
, oppure anche
Programmiamoli da Soli
. Per ridurre le possibilità che una tale stringa sia già presente nel codice originale del file script, potremmo aggiungere proprio la parola
Codice
, separata da uno spazio, e con il tutto preceduto dal carattere Punto e Virgola, così da poterla inserire negli script come un commento.

In tal caso, quella che segue ne sarebbe la forma completa:


; _Ps Codice

A tale scopo ci serviremo dunque di uno script, dalla stessa forma di quello creato nella sua prima versione per il Blocco Note. Con esso, potremo inserire rapidamente in un documento tale etichetta, soltanto premendo la combinazione tasti da noi scelta.

Esercizio 3.3.1. La versione di InserisceFirma () per il file script Predefinito.

FileScript.

Default.JSS

Nome.

InserisceFirma

Sommario.

Segna l’inizio del codice personale.

Descrizione.

Immette l’etichetta di inizio del codice personale nel documento, leggendo poi la riga sul cursore.

TastiAttivazione.

Shift+Control+1

Note.
  1. Se non ci siete già, andate nel file script Predefinito
    Default.JSS
    ,portatevi in fondo al documento, e fate come al solito spazio allo script da inserire, premendo Invio per avere una riga vuota.
  2. Adesso, anziché creare un nuovo script, incollate con il classico comando di Windows,
    Control+V
    , la copia fatta in precedenza dello script InserisceFirma, che dovreste avere ancora in memoria.
  3. Entrate nell’elemento incollato, andate fino alla riga contenente la funzione TypeString. Prestando attenzione a non cancellare le virgolette, sostituite i testo esistente con la stringa analizzata in precedenza, che useremo come etichetta delle nostre modifiche o porzioni di codice,
    ; _Ps Codice.
  4. Aprite la schermata di modifica
    Informazioni Script
    , con la scelta rapida
    Control+D
    . Potete quindi approfittarne per aggiornare i dati descrittivi, e comunque premete
    Alt+A
    , per andare al campo
    Assegna a.
  5. Qui premete la combinazione
    Shift+Control+1
    , ribadendo che il numero 1 è quello della tastiera estesa, poi con Invio concludete la modifica.

Codice.


Script InserisceFirma ()
TypeString ("; _Ps Codice"); immette l’etichetta nel documento
Pause (); sospende temporaneamente lo script
SayLine (); legge la riga
EndScript

Collaudo.

Provate ora a compilare. In caso di errore, ascoltate il messaggio e controllate dove viene posizionato il cursore, ma l’inconveniente più probabile potrebbe essere l’assenza di una o di entrambe le virgolette nel parametro della funzione TypeString.

Quando tutto sarà a posto, iniziamo a servirci del nostro script per porre l’etichetta Personale all’interno del file predefinito, Default.JSS, così da contrassegnare il punto del file in cui inizia il codice da noi realizzato. Nel dettaglio, seguite questi passi:

  1. Dalla fine del file aperto, risalite sino alla riga vuota prima dell’intestazione dello script appena aggiornato,
    InserisceFirma ().
  2. Create un’ulteriore riga vuota, e posizionatevi dentro ad essa.
  3. Premete la combinazione
    Shift+Control+1
    . Jaws dovrebbe scrivere e poi pronunciare:
  4. "; _Ps Codice"

Se adesso tornate dentro al programma Blocco Note, con un qualsiasi documento aperto purché in una riga vuota, premete la stessa combinazione. Nel documento dovrebbe scriversi, e Jaws dovrebbe pronunciare, la firma reale, quella composta da nome e cognome:

"Mario Rossi"

In pratica, premendo la stessa combinazione tasti, gli effetti cambiano dal contesto in cui gli stessi sono premuti, grazie alla gerarchia degli script che assegna la priorità ai file locali rispetto a quello predefinito, così come era stato illustrato all’inizio del capitolo.

In generale, se si tratta di script che possono essere utili per diversi applicativi, sarebbe perciò più conveniente inserirli nel file
Default.JSS
, e poi casomai farne delle versioni per i singoli programmi in cui abbiano un comportamento particolare.

Non è però così semplice aggiungere script al file predefinito poiché, dato il loro raggio d’azione esteso a tutti gli ambienti, è opportuno dotarli di controlli che impediscano che tali script si attivino anche dentro ad applicazioni o finestre indesiderate.

Analizzeremo nel dettaglio questo problema più avanti, quando nei prossimi capitoli avremo acquisito le nozioni necessarie, proponendo un sistema per poterlo in qualche modo risolvere.

Eliminare uno script.

La prova con le due diverse versioni dello script ormai l’abbiamo fatta e, per questo motivo, possiamo eliminare quella che non ci serve più. Dato che quella da mantenere è la versione nel file script Predefinito, cancelliamo quella dello script creata per il Blocco Note, agendo nel modo seguente:

  1. Tornate all’Editor di Jaws, chiudete il file script Predefinito Default.JSS, che dovrebbe essere ancora aperto, usando il comando
    Chiudi
    nel menu File, premendo la sequenza
    Alt+F, lettera H
    , oppure la scelta rapida
    Control+F4.
  2. Se avete seguito l’ordine delle azioni suggerito, dovreste essere tornati al file
    Notepad.JSS
    . Se così non fosse, usate il comando
    Apri
    nel menu File, premendo la sequenza
    Alt+F, lettera A
    , oppure la scelta rapida
    Control+O
    ; sarà visualizzata la finestra di dialogo
    Apri File Utente
    , che consentirà appunto di selezionare i file presenti nella cartella delle
    Impostazioni personali.
  3. All’ingresso, i file selezionabili saranno quelli script, con estensione JSS; premete due volte
    Shift+Tab
    per portarvi nella casella elenco, quindi premete la lettera
    N
    fino a selezionare il file
    Notepad.JSS
    , quindi premete Invio.
  4. Andate alla fine del file aperto e risalite poi in un punto qualsiasi all’interno dello script InserisceFirma, tra l’intestazione e il comando di chiusura.
  5. Qui attivate il comando
    Elimina Script
    del menu Script. Sulla base della versione dell’Editor di cui voi disponiate, potrebbe essere assente una lettera per selezionare il comando, ed in questo caso potrete usare la combinazione di scelta rapida
    Control+Delete
    . se invece disponete delle ultime versioni dell’Editor, potrete agire sulla lettera
    "E"
    per selezionare rapidamente il comando, che poi potrete eseguire con la pressione di Invio.
  6. In ogni caso, con questo comando si cancellano tutti i riferimenti dello script coinvolto nell’operazione: oltre al codice nel file
    Default.JSS
    , anche i suoi riferimenti nel file di documentazione
    Default.JSD
    e quelli eventualmente presenti nel file dei tasti
    Default.JKM
    . Per rendere operativa la modifica, come al solito, salvate con
    Control+S.
  7. Solo adesso, una volta eliminata la versione locale, tornate all’intestazione del nostro primo script creato per il Blocco Note, fate spazio con almeno una riga vuota, quindi premete la combinazione
    Shift+Control+1
    . sarà ovviamente eseguito lo script
    InserisceFirma ()
    del file script Predefinito, l’unico rimasto, il quale scriverà così la nostra etichetta di inizio codice anche nel file script per il Blocco Note.
  8. Salvate nuovamente con
    Control+S
    , quindi premete
    Shift+Control+D
    , per ritornare al file script Predefinito, da dove proseguiremo il nostro lavoro.

***

Muoversi tra gli script.

se siete andati ad esplorare il
Menu Script
dell’Editor di Jaws,è possibile vi siate già accorti che questa applicazione ha alcuni utili comandi per muoversi tra i vari elementi di codice presenti in un file con estensione JSS.

  1. Elenco Script
    , attivabile con
    Alt+S, lettera L
    , oppure con la scelta rapida
    Control+L
    , con il quale viene proposto un elenco in ordine alfabetico di tutti gli elementi di codice presenti nel file corrente, script o funzioni che siano. Scorrendo l’elenco con le frecce, o iniziando a digitare il nome dello script se lo si conosce, si arriverà a selezionare lo script desiderato e, premendo Invio, si verrà posizionati sulla sua intestazione.
  2. Script Successivo
    , attivabile con
    Alt+S, lettera E
    , oppure con il tasto funzione
    F2
    , con il quale ci si sposta all’intestazione di qualsiasi elemento di codice successivo alla posizione corrente del cursore. Nel caso tale elemento non sia trovato entro la fine del file script, lo cerca dall’inizio.
  3. Script Precedente
    , attivabile con
    Alt+S, lettera P
    , oppure con la combinazione
    Shift+F2
    , con il quale viceversa ci si sposta all’intestazione di qualsiasi elemento di codice precedente. Nel caso non ci sia nulla fino all’inizio del file script, la ricerca sarà ripresa dalla sua fine.

Tutto chiaro, quindi, circa i comandi a disposizione, e in apparenza tutto a posto anche sul versante della loro fruibilità, dato che tutti sono dotati pure di scelte rapide o tasti funzione. In realtà, con gli ultimi due comandi, l’utilizzo presenta due aspetti da considerare:

  1. Specialmente nelle ultime versioni di Jaws, una volta giunti sull’intestazione, questa prima riga dello script o della funzione non viene letta automaticamente da Jaws, così da costringere ogni volta ad eseguire, in più, un comando di lettura riga.
  2. Per chi fosse abituato a preferire i comandi attivabili dalla parte bassa della tastiera, il tasto funzione
    F2
    , e soprattutto la combinazione
    Shift+F2
    , non sono certo tra le più comode, specialmente perché è assai probabile un loro uso ripetuto e in sequenza.

La soluzione, come sempre, possiamo tentare di trovarla attraverso due brevi script, che servono a duplicare questi comandi con altri attivabili, appunto, tenendo le mani nelle prime file di tasti in basso. Oltre a replicare i comandi, richiamando il tasto di attivazione originale mettendolo tra parentesi graffe, negli script troveranno posto altre due funzioni:

  1. SayLine ()
    , per leggere l’intestazione dello script.
  2. Refresh
    , (Ricarica), che si utilizza senza parametri, la quale serve a resettare le informazioni a video e, in questo caso, ad evitare il rischio che ad essere letto sia il contenuto della riga di partenza e non di quella d’arrivo. Per questo motivo, nello script tale funzione sarà posta prima dell’istruzione per la lettura della riga.

Ribadiamo che inserire dei controlli negli script, i quali siano in grado di attivarli solo quando serve, è una regola molto importante per determinare quali siano gli script più efficaci ed affidabili. Nel nostro percorso didattico, tuttavia, possiamo anche prenderci delle licenze al riguardo, come nel caso del precedente script,
InserisceFirma ()
, e di quelli che andremo ora a realizzare.

Esercizio 3.4.1. Lo script MuoveElementoSuccessivo.

FileScript.

Default.JSS

Nome.

MuoveElementoSuccessivo

Sommario.

Si muove all’elemento di codice successivo.

Descrizione.

Richiama la scelta rapida del comando Script Successivo nel menu File.

TastiAttivazione.

Windows+FrecciaGiù

Novità.
  1. La funzione integrata
    Refresh ()
    , già descritta nella premessa.

Codice.


Script MuoveElementoSuccessivo ()
{F2}; richiama il comando originale
Refresh (); resetta la schermata
SayLine (); legge la riga corrente
EndScript

Collaudo.

Per il test dello script, rinviamo a quello del prossimo da realizzare, poiché la coppia di script sono complementari nel loro utilizzo.

Esercizio 3.4.2. Lo script MuoveElementoPrecedente.

FileScript.

Default.JSS

Nome.

MuoveElementoPrecedente

Sommario.

Si muove all’elemento di codice precedente.

Descrizione.

Richiama la scelta rapida del comando Script Precedente nel menu File.

TastiAttivazione.

Windows+FrecciaSu

Codice.


Script MuoveElementoPrecedente ()
{Shift+F2}; richiama il comando originale
Refresh (); resetta la schermata
SayLine (); legge la riga corrente
EndScript

Collaudo.

  1. Se la compilazione non dà problemi, c’è solo da provare a premere i tasti di attivazione degli script,
    Windows+FrecciaGiù
    e
    Windows+FrecciaSu
    , e controllare che si passi effettivamente da un elemento di codice all’altro.
  2. Potrà risultare utile la rilettura della riga corrente dopo lo spostamento, che dovrebbe corrispondere all’intestazione del’elemento su cui si muoverà di volta in volta il cursore. Se invece ad essere letta fosse ancora la riga di partenza, nonostante il comando
    Refresh ()
    , al fine di evitare un esito fuorviante, limitatevi a porre un carattere Punto e Virgola, quelli dei commenti, davanti al comando di lettura riga, ottenendo quindi nel codice la seguente istruzione:
  3. 
    ; SayLine ()
    

  4. In tal modo, otterrete appunto almeno di non sentire leggersi la riga errata, mentre la soluzione definitiva ad un tale inconveniente la analizzeremo un po’ più avanti.

***

Selezionare con la Ricerca Testo.

In Microsoft Word, esiste la funzione che si attiva con il tasto funzione F8,
Estendi Selezione
, che serve per far si che da quel momento ogni spostamento con il cursore estenda la selezione nel documento. Questa opzione è particolarmente utile nei casi in cui il cursore si muova in un punto preciso, come con la funzione di ricerca testo. In altre parole, se si vuole selezionare la porzione di documento che parta da un punto e vada sino alla parola
"Pippo"
, quello che si deve fare è:

  1. Premere il tasto F8 nel punto di partenza.
  2. Richiamare il comando di ricerca testo.
  3. Specificare la ricerca della parola
    "Pippo"
    , e poi, se Word la trova, il documento risulterà selezionato dal punto di partenza della ricerca alla parola cercata compresa.

Grazie a Jaws, una funzionalità simile si può provare ad estendere a qualsiasi applicativo dove vi sia la possibilità di selezionare una porzione di documento, oltre ad un comando di ricerca testo. Prendiamo come esempio l’Editor di Script, nel quale questa estensione della selezione non sarebbe possibile, ed in cui noi la realizzeremo come ulteriore esercizio del capitolo.

Prima, però, c’è bisogno di fare un breve approfondimento teorico, per capire meglio il lavoro che ci apprestiamo a svolgere.

Inserirsi nella sequenza dei comandi.

Jaws è uno Screen-Reader, letteralmente Lettore di Schermo, perché è il compito primario che esso svolge. La sua particolarità è che questa azione la effettua mettendosi tra noi, gli utenti, ed il sistema operativo, che gestisce gli applicativi ed il funzionamento del computer.

Come detto ad inizio capitolo, parlando della gerarchia nei file script, quando si premono dei tasti, o si verifica un evento, Jaws dapprima controlla se tale azione trovi delle corrispondenze tra i suoi script. Successivamente, trasmette casomai quanto accaduto all’applicazione, se ne esiste una di aperta, oppure direttamente al sistema operativo.

Facciamo ora un esempio concreto, che ci consenta di capire meglio questo concetto.

Nell’Editor di Script, la ricerca di una stringa di codice si effettua con il comando
Trova
del menu Modifica. Anche questo comando, che si seleziona tramite la sequenza
Alt+M, lettera R
,ha un comportamento diverso sulla base della versione dell’Editor di Script in uso. Per questo conviene attivarlo con la scelta rapida
Control+F
, che funziona allo stesso modo in tutte le versioni.

Quindi, dentro all’Editor, quando noi premiamo questa combinazione, si verificherebbe questa sequenza di eventi:

  1. Jaws intercetta la pressione e controlla se quei tasti sono collegati ad un suo script.
  2. Se esiste uno script collegato, Jaws lo esegue.
  3. Se lo script lo prevede, l’esecuzione si conclude, ed il controllo torna all’applicazione aperta o al sistema operativo senza alcun effetto, come se i tasti non fossero nemmeno stati premuti.
  4. Se invece non esiste uno script collegato, o lo script ci sia e tale eventualità sia prevista, la pressione di
    Control+F
    viene fatta arrivare all’Editor, il quale attiva finalmente la ricerca del testo.

Come si può notare, tutto è sotto il controllo di Jaws, e noi attraverso i suoi script possiamo influire sul flusso degli eventi. Se possiamo creare un comando, come abbiamo fatto nel nostro primo script,
SalvaConNome ()
, possiamo anche reindirizzarne uno di già esistente, come faremo più avanti.

Ancora, potremo semplicemente far sì che, assieme ad un comando valido per un applicativo, si attivi anche una funzione parallela. E proprio di quest’ultimo tipo sarà lo script che realizzeremo ora, il cui funzionamento sarà completato da un secondo script di cui tratteremo subito dopo.

Nel dettaglio, lo scopo del nostro script sarà appunto quello di inserirsi nella sequenza naturale dei comandi, ponendo l’esecuzione di una speciale istruzione di Jaws appena prima il richiamo della ricerca testo.

Tale istruzione riuscirà a salvare la posizione nel punto in cui si trova il cursore al momento di premere la scelta rapida
Control+F
per cercare un testo, creando una sorta di contrassegno temporaneo. Una volta raggiunto il testo desiderato, agendo sul secondo script che creeremo, sarà possibile selezionare il testo dalla posizione registrata, corrispondente al punto da cui si era attivata la ricerca, sino al punto in cui è posizionato il cursore.

Tornando al nostro primo elemento di codice, che potremo chiamare semplicemente
TrovaTesto
, esso avrà soltanto due istruzioni:

  1. La funzione
    SaveCurrentLocation
    , (SalvaPosizioneCorrente), che effettua materialmente La registrazione della posizione del cursore in un contrassegno temporaneo.
  2. La funzione,
    TypeCurrentScriptKey
    , (ScriviTastiDelloScriptCorrente), la quale riproduce i tasti premuti per attivare lo script da cui è stata chiamata.

A proposito della prima funzione, il suo scopo è abbastanza chiaro. Bisogna però avvertire che essa è una di quelle presenti solo a partire dalla versione 16 di Jaws, quindi non è utilizzabile da chi non dispone almeno di tale versione.

Sulla seconda, invece, al suo posto potremo anche limitarci a mettere la scelta rapida
Control+F
tra parentesi graffe, così come abbiamo fatto sinora. Dato che noi dovremmo simulare dentro al nostro script il comando di richiamo della ricerca testo, la funzione proposta ha invece il vantaggio di poter in un secondo momento anche cambiare i tasti di attivazione dello script, direttamente dalla procedura guidata attivabile con
Control+D
, essendo poi certi che la combinazione passata al programma sottostante, o al sistema operativo, sia sempre quella corretta.

Ora, dunque, possiamo occuparci finalmente della scrittura materiale dell’elemento di codice.

Esercizio 3.5.2. Lo script TrovaTesto.

FileScript.

Default.JSS

Nome.

TrovaTesto

Sommario.

Attiva la ricerca di testo.

Descrizione.

Richiama il comando per la ricerca del testo, dopo aver registrato la posizione del cursore nel documento.

TastiAttivazione.

Control+F

Novità.
  1. La funzione integrata
    SaveCurrentLocation ()
    , già descritta nella premessa, che va semplicemente selezionata nell’elenco delle funzioni ed inserita, in quanto non ha parametri.
  2. La funzione integrata
    TypeCurrentScriptKey ()
    , anch’essa già illustrata, e come la precedente non ha parametri da specificare.
Note.

Come detto prima, il contenuto dello script sono unicamente le due funzioni citate, da inserire nel codice nell’ordine proposto tramite il comando
Control+I.

Codice.


Script TrovaTesto ()
SaveCurrentLocation (); registra la posizione del cursore
TypeCurrentScriptKey (); passa i tasti premuti all’applicazione
EndScript

Collaudo.

La compilazione di questo script non dovrebbe dare problemi, vista l’assenza di parametri o virgolette.

Per il collaudo, invece, realizziamo prima il secondo script dell’esercizio, e poi capiremo meglio i loro rispettivi compiti.

Attivare la selezione di un testo.

Come abbiamo già accennato, lo scopo dello script che andremo a realizzare è quello di attivare la selezione del testo, a partire da un punto in precedenza registrato tramite la funzione
SaveCurrentLocation ().

Parlando di progettazione, lo script andrà anche in questo caso realizzato dentro a
Default.JSS
, il file script Predefinito, dato che deve valere per tutti gli applicativi. Il contenuto sarà ancora più stringato del precedente, in quanto costituito da una sola funzione,
SelectFromSavedLocationToCurrent
, (SelezionaDallaPosizioneSalvataAQuellaCorrente), sulla quale la traduzione letterale dice tutto. Così come le ultime due che abbiamo analizzato, anche questa non ha bisogno di alcun parametro per funzionare.

Proprio per l’azione compiuta dalla funzione, la selezione di una porzione di documento, si è evitato di inserire nello script un qualche comando di lettura, che annunci la sua esecuzione. Esso potrebbe infatti risultare un’inutile ripetizione poiché, quando si seleziona in particolare del testo, solitamente Jaws dovrebbe pronunciare qualcosa per avvisarci dell’accaduto.

Esercizio 3.5.4. Lo script SelezionaDalContrassegno.

FileScript.

Default.JSS

Nome.

SelezionaDalContrassegno

Sommario.

Seleziona il testo dal punto registrato.

Descrizione.

Chiama la funzione nativa che seleziona il testo, a partire da un punto nel documento registrato in precedenza.

TastiAttivazione.

Shift+Control+Windows+K

Novità.
  1. La funzione integrata
    SelectFromSavedLocationToCurrent ()
    , già illustrata, che ricordiamo non avere parametri, e che in questo caso va inserita come unica istruzione dello script. Così come quella per salvare il punto iniziale, anche questa funzione è presente solo a partire da Jaws 16.
Note.
  1. Per quanto riguarda i tasti proposti per l’attivazione dello script, si è scelta una combinazione che, per quanto strana, dovrebbe essere libera nella maggior parte delle configurazioni, e soprattutto avrà un richiamo ad un altro elemento di codice che realizzeremo più avanti.

Codice.


Script SelezionaDalContrassegno ()
SelectFromSavedLocationToCurrent (); attiva la selezione
EndScript

Collaudo.

Compilate, e se tutto è a posto, restate nell’Editor di Script, posizionandovi in un punto a vostra scelta che abbia del testo, per esempio nella riga d’intestazione di uno script. Poi, provate a seguire questi passi:

  1. Premete la scelta rapida
    Control+F
    , eseguendo il nostro script
    TrovaTesto ()
    che, dopo aver contrassegnato il punto nel documento, farà visualizzare la finestra di dialogo per la ricerca.
  2. Cercate una parola che esista nel documento, ad esempio il comando di chiusura
    EndScript
    ;se non viene prodotto alcun segnale acustico, significa che il testo è stato trovato, quindi premete Escape per uscire dalla finestra di dialogo.
  3. Tornati all’Editor, dovreste essere posizionati sulla stringa che avete cercato. Se volete, andate sino a fine riga, o in quella sottostante, ed eseguite lo script
    SelezionaDalContrassegno ()
    , premendo
    Shift+Control+Windows+K.
  4. Se tutto funziona, il testo dal punto in cui avete premuto
    Control+F
    sino alla posizione corrente dovrebbe selezionarsi.

***

Selezionare il testo tra due punti.

Quella che abbiamo appena realizzato è, in pratica, una selezione da un punto ad un altro

La selezione di un testo è tra le prime azioni che si imparano quando si inizia ad usare il computer, ed in genere è una di quelle tra le più effettuate nella pratica quotidiana. Per questo, sia in Windows, sia in Jaws, molti sono i comandi dedicati a questa funzione, per selezionare parole, righe, frasi, da un punto nel documento al suo inizio o alla sua fine, eccetera. Spesso, questi comandi di selezione sono costituiti dai tasti di movimento, come i
tasti Freccia,
Home,
End,
PaginaGiù
e
PaginaSu
, cui viene aggiunto il tasto
Shift.

Per chi volesse invece segnare un punto preciso in un documento aperto, e poi da un altro punto attivare la selezione tra i due punti, a partire dalla versione 2018 Jaws ha una coppia di comandi, valida per tutti gli applicativi, che svolge proprio questo compito. Nel dettaglio, le due combinazioni di tasti, sono le seguenti:

  1. Control+Windows+K
    , per contrassegnare il punto d’inizio del testo da selezionare.
  2. TastoJaws+BarraSpazio, lettera M
    , per attivare la selezione dal punto registrato a quello in cui si preme il comando.

Come potete notare, anche la funzione inserita nello script
TrovaTesto (),
SaveCurrentLocation ()
, svolge un compito in apparenza identico alla prima che abbiamo qui citato, mentre la seconda è del tutto analoga a quanto fa il nostro script
SelezionaDalContrassegno ()
. In realtà, le due procedure non sono interscambiabili e quindi, per la selezione di un testo tra due punti, conviene certamente usare quelle appena illustrate.

Questo discorso vale, come avevamo detto, per chi usa le ultime versioni di Jaws. Per chi sta usando quelle fino alla 18, invece, la situazione è diversa.

Per questo tipo di utenti, infatti, la selezione del testo tra due punti è già ora possibile, usando le stesse combinazioni di tasti, ma soltanto dentro a Microsoft Word, nel
Visualizzatore Virtuale
di Jaws, quello per intenderci delle schermate della guida, e nella gran parte delle pagine web. Negli altri applicativi, come ad esempio l’Editor di Script, il Blocco Note o Wordpad, questa funzione non è però ancora attiva.

Poiché nell’utilizzo di tutti i giorni tale funzione appare invece davvero utile, possiamo spiegare come poter in qualche modo estenderla a tutti gli utenti, anche a quelli delle versioni precedenti di Jaws, iniziando subito da quello che fissa il possibile punto d’inizio di una selezione.

Nel dettaglio, la progettazione di questo script è molto semplice, in quanto esso ricalca la funzionalità realizzata tramite in nostro precedente script ,
TrovaTesto ()
. Per prima cosa, dato che dobbiamo farlo funzionare in tutti gli applicativi in cui si può scrivere, dobbiamo anche in questo caso inserirlo dentro al file script Predefinito, Default.JSS.

Come contenuto, invece, esso avrà solo due istruzioni:

  1. La funzione
    SayString ()
    , che annuncia l’esecuzione del comando.
  2. La funzione
    SaveCurrentLocation ()
    , che abbiamo utilizzato prima, la quale registra la posizione del cursore.

Questo è un altro dei casi che si citavano in precedenza, in cui ci permettiamo di realizzare lo script senza controlli di contesto, i quali sarebbero invece indispensabili quando si realizzano degli script per il file Predefinito. Esso, infatti, non modifica nulla nell’applicativo o nella finestra di dialogo in cui venisse premuto, e quindi può essere eseguito senza alcun danno anche in ambienti non opportuni.

Pur essendo riservato agli utenti di Jaws che usano una versione sino alla 18, invitiamo anche gli altri a seguire l’esercizio proposto, anche perché subito dopo riprenderemo le spiegazioni rivolte a tutti.

Esercizio 3.6.1. Lo script SalvaContrassegno.

FileScript.

Default.JSS

Nome.

SalvaContrassegno

Sommario.

Contrassegna il punto desiderato.

Descrizione.

Utilizza la funzione nativa per registrare in un contrassegno la posizione del cursore, avvisando dell’azione.

TastiAttivazione.

Control+Windows+K

Note.
  1. Alla prima funzione da inserire,
    SayString
    , bisogna aggiungere come parametro il testo tra virgolette
    "Punto memorizzato"
    , il quale è un messaggio pronunciato dall’analogo script nella versione 2020 di Jaws.
  2. La seconda funzione nativa,
    SaveCurrentLocation ()
    , va invece inserita senza parametri.

Codice.


Script SalvaContrassegno ()
SayString ("Punto memorizzato"); annuncia il comando
SaveCurrentLocation (); registra la posizione del cursore
EndScript

Collaudo.

Provate adesso a compilare. In caso di esito positivo, per testare il vostro lavoro, restate nell’Editor di Script, seguendo questi passi:

  1. Posizionatevi sul punto dal quale volete iniziare la selezione, e premete
    Control+Windows+K
    , per attivare lo script appena creato, il quale dovrebbe farvi sentire il messaggio di avvenuta registrazione.
  2. Spostatevi poi verso il basso nel punto in cui volete terminare la selezione, e qui premete
    Shift+Control+Windows+K
    , eseguendo lo script creato in precedenza,
    SelezionaDalContrassegno ().
  3. Se tutto funziona, Jaws dovrebbe leggervi il testo selezionato tra i due punti.

Va detto subito che questa soluzione non è perfetta come quella approntata da Jaws nelle ultime versioni, e non ha comunque efficacia nel
Visualizzatore Virtuale
e nelle pagine web. In ogni caso, funziona dentro all’Editor di Script, a Wordpad, ed anche nel Blocco Note, in quest’ultimo caso almeno nei file di piccole dimensioni. Sempre circa il Blocco Note, va inoltre precisato che dentro ad esso non funziona la procedura realizzata prima, quella che fissa il punto d’inizio della selezione tramite la ricerca di testo, la quale invece agisce dentro a Wordpad e, dove abbiamo già provato, nell’Editor di Script.

Una curiosità, per finire: aprite un editor qualsiasi, ad esempio il Blocco Note, e richiamate lo script di registrazione, premendo
Control+Windows+K
. Jaws dovrebbe leggervi:

"Punto memorizzato".

Ora, qualora aveste la possibilità di aprire un documento non vuoto in Microsoft Word, scendete anche solo di una riga, e anche qui premete
Control+Windows+K
. In questo caso dovreste sentire Jaws pronunciare:

"Sto Marcando il punto".

La differenza nei messaggi sta nel fatto che nel primo caso Jaws non aveva trovato alcun script nel file per il Blocco Note, e quindi aveva richiamato quello che avete creato dentro al file script Predefinito. Nel secondo caso, dentro a Word, Jaws ha invece attivato uno script diverso, quello fornito per tale applicativo, che è appunto dotato di un messaggio differente.

A proposito di Word, abbiamo già detto che in tale applicativo sono presenti entrambi i comandi, per fissare il punto d’inizio e poi attivare la selezione. Mentre per il primo ci siamo serviti degli stessi tasti di Attivazione originali, nel secondo caso abbiamo preferito definire una nostra combinazione, aggiungendo il tasto
Shift
a quella che fissa il punto d’inizio.

Per chi volesse usare anche dentro a Word i tasti di attivazione da noi proposti,
Shift+Control+Windows+K
, è possibile produrre un semplicissimo script che esegua quello originario, pur garantendo una continuità di gesti con la nostra procedura

La stessa cosa si può fare per gli utenti delle ultime versioni di Jaws, che abbiamo detto disporre già di entrambi i comandi per tutti gli applicativi, realizzando,e aggiornando, una versione a loro dedicata dei nostri script
SalvaContrassegno ()
e
SelezionaDalContrassegno ()
. Prima, tuttavia, è necessaria una breve informazione teorica sull’importante comando di cui ci serviremo sia per predisporre questa coppia di script, sia per omologare il funzionamento della nostra procedura anche dentro a Word per gli utenti di Jaws fino alla versione 18.

Eseguire uno script dal codice.

Con Jaws, gli script veri e propri possono essere attivati principalmente in due modi:

  1. In modo diretto, premendo la combinazione tasti ad essi abbinata.
  2. Ponendo all’interno del codice l’istruzione
    PerformScript
    , (EseguiScript), che come dice la traduzione esegue uno script semplicemente scrivendone il nome, comprensivo della coppia di parentesi aperta e chiusa, dopo l’istruzione; tale nome deve essere posto così com’è, specificandolo senza alcuna coppia di virgolette, e nemmeno tra parentesi tonde come fosse un parametro.

nell’Editor di Jaws, per inserire un’istruzione
PerformScript
, il comando da utilizzare è
Inserisci Esegui Script
nel menu Script, attivabile con
Alt+S, lettera S
, oppure con la scelta rapida
Shift+Control+I
. Sarà proposto un lungo elenco di tutti gli script a disposizione, compresi quelli che avete scritto voi nel file script corrente e in quello predefinito.

Tale elenco si può scorrere con i tasti di movimento oppure, se ne conoscete il nome, potete iniziare a digitarlo sino ad arrivarci sopra, o almeno il più possibile vicino, in modo analogo a quanto si fa nell’inserimento delle funzioni. Una volta selezionato, una pressione di Invio inserirà nel codice l’istruzione che lo richiama.

Gli script di cui ora ci occuperemo si possono definire di
Reindirizzamento
,in quanto servono soltanto a far eseguire da dentro a dei nostri script le stesse istruzioni che usa Jaws. In questi elementi, quindi, useremo proprio l’istruzione
PerformScript
, per far eseguire lo script originale di Jaws che corrisponde a quelli che abbiamo usato per la nostra procedura.

Nell’ordine, gli script originali di Jaws che andremo a richiamare, sono i seguenti:

  1. DefineATempPlaceMarker
    , (DefinisceUnSegnapostoTemporaneo), il cui richiamo andrà inserito dentro al nostro script chiamato
    SalvaContrassegno ().
  2. SelectTextBetweenMarkedPlaceAndCurrentPosition
    , (SelezionaTestoFraSegnapostoEPosizioneCorrente), il quale sarà richiamato dal nostro script
    SelezionaDalContrassegno ().

Nel primo caso, per gli utenti dalla versione 2018 lo script sarà da creare, ed andrà ad affiancare la presenza dello script originale che svolge la stessa funzione, peraltro
"sottraendo"
a quest’ultimo i tasti di attivazione,
Control+Windows+K
. Nel secondo caso si dovrà solo aggiornare la prima versione dello script di selezione che, per non complicare troppo la spiegazione iniziale, avevamo chiesto a tutti di realizzare nella prima forma semplificata.

Ricapitolando, il compito dei nostri script sarà soltanto quello di svolgere la stessa funzione degli script di Jaws originali, essendo però inseriti dentro a nostri script. Questa soluzione, in particolare, ci consente di:

  1. Richiamarli tramite le combinazioni tasti da noi scelte .
  2. Poterli citare più facilmente nel corso delle prossime spiegazioni.
  3. Inserire il richiamo ad essi in altri elementi di codice, senza curarsi di quale versione di Jaws si stia usando, poiché uno script con lo stesso nome svolgerà la propria funzione sia nelle versioni prima della 2018, ed in questo caso dentro o fuori da Microsoft Word, sia in quelle successive.

Infine, vale al contrario lo stesso discorso fatto prima: nonostante i prossimi script siano riservati agli utenti di Jaws delle versioni dalla 2018 in poi, invitiamo anche tutti gli altri a seguirle, perché vi potranno trovare informazioni che prima o poi saranno valide anche per loro.

Esercizio 3.6.3. La versione di SalvaContrassegno ()per gli utenti di Jaws dalla 2018.

FileScript.

Default.JSS

Nome.

SalvaContrassegno

Sommario.

Contrassegna il punto desiderato.

Descrizione.

Utilizza la funzione nativa per registrare in un contrassegno la posizione del cursore, avvisando dell’azione.

TastiAttivazione.

Control+Windows+K

Novità.
  1. Il comando
    PerformScript
    , per eseguire gli script da dentro al codice.
  2. Lo script nativo
    DefineATempPlaceMarker ()
    , da richiamare tramite il precedente comando.
Note.

Come già anticipato, i tasti di attivazione sono quelli della versione originale predisposta da Jaws. Per specificarli, seguite questi passi:

  1. Nella schermata di creazione, premete
    Alt+A
    per portarvi nel campo
    Assegna a
    , e qui premete la combinazione
    Control+Windows+K.
  2. Jaws dovrebbe a questo punto proporvi una finestra di dialogo avente per titolo
    "Informazioni Script. Combinazione tasti in uso."
    , e con un messaggio come il seguente:
  3. "Control+Windows+K è già assegnato a DefineATempPlaceMarker in C:\ProgramData\Freedom Scientific\JAWS\xxxx\Scripts\ita\DEFAULT.JKM. Continuando si sostituirà l’assegnazione esistente."

  4. Spostatevi con Tab su
    Ok
    per confermare la scelta, quindi premete Invio per uscire dalla procedura di modifica. Così facendo, avrete sovrascritto l’impostazione originale.

Codice.


Script SalvaContrassegno ()
PerformScript DefineATempPlaceMarker (); esegue lo script nativo
EndScript

Collaudo.

Se la compilazione va a buon fine, il test potrà essere completo solo dopo aver aggiornato anche lo script successivo. Nel frattempo, provate a premere i tasti di attivazione,
Control+Windows+K
, e dovreste sentire il messaggio di Jaws che vi avverte dell’avvenuta registrazione della posizione del cursore.

Esercizio 3.6.4. La versione di SelezionaDalContrassegno ()per gli utenti di Jaws dalla 2018.

FileScript.

Default.JSS

Nome.

SelezionaDalContrassegno

Novità.
  1. Lo script nativo
    SelectTextBetweenMarkedPlaceAndCurrentPosition
    , anch’esso già descritto, il cui richiamo costituirà l’unica istruzione nel codice.
Note.
  1. La modifica della precedente versione si effettua sostituendo l’unica istruzione presente con il comando per eseguire il citato script originale di Jaws.

Codice.


Script SelezionaDalContrassegno ()
PerformScript SelectTextBetweenMarkedPlaceAndCurrentPosition (); esegue lo script nativo
EndScript

Collaudo.

  1. Dopo aver compilato con successo, provate a selezionare una porzione di testo usando dapprima lo script precedente, con
    Control+Windows+K
    , quindi quello appena realizzato, con
    Shift+Control+Windows+K
    . Potete eseguire il test anche dentro all’Editor di Jaws, e non dovrebbero esserci sorprese.
  2. A questo punto, per chiudere l’argomento, dovremmo realizzare la versione di questo script anche per gli utenti di Jaws fino alla versione 18 che volessero usarla dentro a Microsoft Word. Rinviamo, tuttavia, solo di un po’ quest’ultimo esercizio, a quando apriremo il file script di quell’applicativo per realizzarvi altri elementi di codice.

***

Uniformare i comandi tra diverse versioni dello stesso applicativo.

Quello che abbiamo fatto nella sezione precedente è uniformare, per quanto possibile, gli stessi comandi in due diversi tipi di versioni di Jaws. Tra le altre soluzioni che si possono adottare, una delle più utili è quella che consente a Jaws di adattarsi anche alle diverse versioni di uno stesso programma, mantenendo oppure ottimizzando il modo di servirsene.

Questo è decisamente il caso del Blocco Note, in inglese
"Notepad"
, il quale ha subito alcune modifiche formali con l’avvento di Windows 10, dopo essere rimasto lo stesso in molte delle versioni precedenti del sistema operativo Microsoft. In particolare, i menu hanno dei nuovi comandi, e sono cambiati alcuni tasti caldi che li attivano, anche se sono state estese le scelte rapide da tastiera.

Queste migliorie possono nascondere tuttavia qualche inconveniente, sia per chi ancora non usa Windows 10, sia per coloro i quali possiedono più PC, dei quali almeno uno senza l’ultimo prodotto di casa Microsoft. I problemi di compatibilità che cerchiamo di risolvere sono per il momento rivolti a due comandi,
"Trova"
e
"Salva con nome"
, cui dedicheremo altrettanti script preceduti ciascuno da una breve introduzione.

Il comando Trova.

così come anche nell’Editor di Script, in una gran parte degli editor testuali il comando
Trova
lo si attiva con la scelta rapida
Control+F
. In questo caso, la lettera
F
sta per
Find
, che è appunto la traduzione inglese del termine Trova.

Prima che arrivasse Windows 10, un’importante eccezione a questa regola era rappresentata appunto dal Blocco Note di Windows in cui, almeno nella sua versione italiana, la scelta rapida era diventata
Control+T
, con la lettera
T
che probabilmente stava proprio per l’italiano Trova. Ora, con l’avvento di Windows 10, questa anomalia è stata sanata, e anche nel nuovo Blocco Note il comando Trova si attiva con la scelta rapida
Control+F.

Di seguito realizzeremo per questo applicativo un semplice ma efficace script, la versione di
TrovaTesto ()
a livello locale, che sarà in grado di funzionare sia nella versione di questo programma per Windows 10, sia in quelle realizzate per i precedenti sistemi operativi.

La compatibilità dello script tra le diverse versioni è possibile poiché in entrambe il comando Trova appartiene al menu Modifica, il quale si richiama con
Alt+M
, e da qui lo si attiva premendo la lettera
O
. Basterà quindi inserire questa sequenza di comandi, in modo del tutto analogo a ciò che avevamo fatto nel nostro script
SalvaConNome ()
, per raggiungere l’obiettivo desiderato, usando così la stessa forma per le due versioni.

Tornando al codice del nostro primo script, se ricordate, in quell’occasione avevamo messo sia la scelta rapida con Alt, sia la lettera della voce di menu, tra parentesi graffe. Fermo restando che l’utilizzo di quella forma è sempre possibile, è giunto il momento di far conoscenza con una nuova funzione,
TypeKey
, (ScriviTasto), la quale serve appunto per simulare che i tasti specificati all’interno delle sue parentesi siano stati premuti tramite una tastiera.

Il parametro obbligatorio di questa funzione, quindi, sarà il nome del tasto, o la combinazione di più tasti, di cui simulare la pressione. Il nome di tali tasti andrà espresso nella forma estesa, così come lo si è fatto con le parentesi graffe, solo che stavolta essi andranno specificati come un testo, e quindi indicati tra virgolette.

Dato che ci siamo, anche per la seconda indicazione di tasti, quella della lettera per attivare la voce di menu, useremo la funzione che abbiamo già conosciuto,
TypeString
. Su questa, se ricordate, avevamo detto che il suo uso era necessario nel caso di più lettere da inserire, ma si può dire che essa è di gran lunga preferibile anche nei casi di singoli inserimenti come questo.

Inoltre, fin dal primo capitolo abbiamo imparato anche a spegnere e riaccendere la sintesi, quando è prevista la comparsa di un menu da non vocalizzare. Per questo, dato che la situazione si ripresenta, inseriremo la coppia di comandi che già conosciamo, all’inizio ed alla fine di tale script.

Proprio la comparsa del menu porta ad applicare l’altra cosa che avevamo imparato, sospendere momentaneamente l’esecuzione dello script. Così, nel codice inseriremo anche la funzione
Pause ()
, tra l’attivazione dello stesso menu e la simulazione della pressione della lettera che attiva il comando.

All’inizio dello script, appena dopo lo spegnimento della sintesi, faremo inoltre il nostro primo richiamo agli script creati per registrare la posizione del cursore. Come abbiamo già detto, la selezione del testo tramite il comando
Trova
non funziona nel Blocco Note, neppure per gli utenti di Jaws dalla 2018. Abbiamo tuttavia mantenuto questa forma poiché, più avanti, l’esecuzione dello script
SalvaContrassegno ()
svolgerà un’altra funzione, che sarà stavolta valida per tutti gli applicativi con una finestra di editazione, Blocco Note compreso.

Per iniziare il lavoro, questo elemento di codice va quindi realizzato nel file script del Blocco Note,
Notepad.JSS
. Poiché dovremmo essere già dentro all’Editor di Script, non sarà possibile aprire il programma desiderato, e da lì premere
TastoJaws+0
, perché l’Editor visualizzerebbe un messaggio d’errore facendovi poi tornare al file script che risulta aperto.

In questi casi è dunque necessario usare il comando di apertura file del programma, seguendo i passi già proposti in precedenza. La scelta rapida da utilizzare è quindi
Control+O
, mentre il file da caricare è appunto
Notepad.JSS.

Una volta apertosi il file script, portatevi come al solito in fondo al file, e create una riga vuota, quindi avviate la procedura di creazione script.

Prima di proporre il solito schema, anticipiamo la sezione riguardante le note avvisando che, in questo caso, non sarà necessario indicare una combinazione tasti. Durante la procedura guidata di creazione, infatti, ci si potrà limitare a premere la barra spaziatrice nel campo
Può essere assegnato al tasto.

Ciò è reso possibile dal fatto che noi, in precedenza, avevamo creato nel file script Predefinito uno script con lo stesso nome, che si attivava con
Control+F
. Questo abbinamento, come già detto, viene trascritto nel file tasti relativo, in questo caso quello predefinito,
Default.JKM.

Poi, ogni volta che si crea uno script, Jaws va a controllare, tra i file con estensione JKM esistenti, cercando uno che corrisponda ad uno script con lo stesso nome. Se, come in questo caso lo trova, utilizza la combinazione tasti ad esso abbinata, assegnandola allo script nel momento in cui si preme Invio per confermarne la creazione.

Una volta tornati all’Editor, infatti, se riaprite la schermata di modifica dello script premendo
Control+D
, se usate
Alt+A
per passare direttamente all’inserimento dei tasti, troverete il campo già compilato con la combinazione
Control+F.

Esercizio 3.7.2. La versione di TrovaTesto () per il Blocco Note.

FileScript.

Notepad.JSS

Nome.

TrovaTesto

Sommario.

Attiva la ricerca di testo.

Descrizione.

Richiama il comando per la ricerca del testo, dopo aver registrato la posizione del cursore nel documento.

TastiAttivazione.

Nessuno

Novità.
  1. Il primo richiamo del nostro script
    SalvaContrassegno ().
  2. La funzione integrata
    TypeKey ()
    , descritta nella premessa.
  3. La dicitura
    Nessuno
    dopo l’etichetta
    TastiAttivazione
    , la quale indica, come detto, che non occorre premere alcun tasto o combinazione nell’apposito campo in fase di inserimento e che, dopo aver premuto la Barra spaziatrice nel campo
    "Può essere assegnato al tasto"
    , ed aver casomai compilato i campi descrittivi, sarà sufficiente premere Invio per chiudere la procedura guidata.
Note.

Dopo aver chiuso la procedura guidata, ed essere tornati quindi all’Editor, come contenuto dello script usate
Control+I
oppure
Shift+Control+I
per inserire le funzioni o gli script qui elencati, casomai specificando i relativi parametri.

  1. La funzione
    SpeechOff
    , senza parametri.
  2. Lo script
    SalvaContrassegno ().
  3. La funzione
    TypeKey
    , con parametro
    "Alt+M"
    , da inserire comprese le virgolette.
  4. La funzione
    Pause
    , senza parametri.
  5. La funzione
    TypeString
    , con parametro
    "O"
    , sempre comprensivo di virgolette.
  6. La funzione
    SpeechOn
    , senza parametri.

Codice.


Script TrovaTesto ()
SpeechOff (); spegne la sintesi
PerformScript SalvaContrassegno (); esegue lo script per salvare la posizione del cursore
TypeKey ("Alt+M"); richiama il menu Modifica
Pause (); sospende temporaneamente lo script
TypeString ("O"); richiama il comando Trova dal menu
SpeechOn (); riattiva la sintesi
EndScript

Collaudo.

Stavolta, non salvate ancora il lavoro, così come vi si chiede di solito a questo punto, bensì apriamo assieme una parentesi teorica su un importante argomento.

Inserire funzioni con parametri Opzionali.

Di solito le funzioni hanno dei parametri fissi che, nella fase di scrittura del codice, vanno specificati. Se così non fosse, quando si salva il lavoro, la compilazione fallisce e viene segnalato l’errore.

Ci sono tuttavia delle funzioni che hanno uno, più d’uno, o persino tutti, i parametri opzionali.

Questo significa che specificare tali parametri è facoltativo perché, se non lo si fa, la funzione agisce lo stesso correttamente, perché al suo interno il codice prevede un valore predefinito che viene impostato anche se noi non specifichiamo il parametro a cui corrisponde.

Nel caso di funzioni con parametri multipli e misti, in parte fissi e in parte opzionali, di solito quelli fissi sono i primi che vanno specificati, dopo la parentesi aperta, mentre quelli opzionali possono essere gli ultimi nell’ordine, e sarà sufficiente evitare di indicarli. Quando invece sono tutti opzionali, dopo il nome della funzione si potrà lasciare anche solo la coppia di parentesi aperta e chiusa.

Se le funzioni sono scritte manualmente, allora non c’è alcun problema, in quanto noi potremo specificare solo ciò che serve. Se invece usate la procedura guidata per inserire le funzioni, Jaws metterà lo stesso uno spazio ed un carattere Virgola per ciascun parametro, compresi quelli opzionali.

Se ad esempio voi avete usato la procedura guidata per inserire la funzione
TypeKey
, specificando il parametro
Alt+M
, e poi avete premuto
Alt+F
per concludere l’inserimento , la riga contenente la funzione sarebbe stata scritta così nel codice:


TypeKey ("Alt+M", )

Se notate, dopo il parametro inserito, vi è un carattere Virgola seguito da uno spazio, che corrisponde al secondo parametro di
TypeKey
, il quale è appunto opzionale e consente di specificare da quale tipo di input bisogna simulare la pressione dei tasti specificati. Siccome il valore predefinito,
0
, a noi può andare bene, si è chiesto di non specificarlo durante la procedura guidata d’inserimento. Tale procedura, tuttavia, lo propone ugualmente, senza peraltro aggiungere alcun valore, e lasciando così lo spazio vuoto nella riga di codice inserita.

Il problema è che, in fase di compilazione, tale forma con il carattere Virgola e lo spazio darebbe un errore. Jaws dovrebbe quindi presentarvi una finestra di dialogo che si può solo confermare, e che potrebbe avere il seguente messaggio:

"Error: Incorrect parameter format".

L’avviso, che come si può intuire significa
"Formato del parametro non corretto"
, serve appunto ad informarvi che il problema dev’essere proprio quello. Dopo la pressione di Invio, quindi, vi troverete posizionati sulla riga contenente tale errore.

Per risolvere il problema, sia prima, sia dopo aver eventualmente compilato ricevendo il messaggio d’errore, bisognerà portarsi sulla funzione e rimuovere manualmente le virgole in più, per poter infine salvare compilando senza altri intoppi.

In altre parole, finché non si prende dimestichezza con le principali funzioni da utilizzare negli script, rimane opportuno servirsi della procedura guidata per il loro inserimento. Soprattutto in presenza di funzioni corte, e che avessero dei parametri opzionali, si può valutare se conviene invece digitarle direttamente dalla tastiera, anziché servirsi della procedura guidata, proprio per evitare questo tipo di inconvenienti.

Il collaudo di TrovaTesto () per Blocco Note.

  1. Se non l’avete ancora fatto, salvate e compilate questa versione dello script.
  2. Tornate al Blocco Note e provate l’effetto dello script nell’applicativo, all’interno di un file non vuoto.
  3. Come detto, premendo la scelta rapida
    Control+F
    , in questa versione esso dovrebbe attivare il comando di ricerca sia con il vecchio Blocco Note, sia con quello presente da Windows 10.

Il comando Salva con nome.

In una stesura iniziale di queste pagine, il nostro primo script in assoluto era proprio quello relativo al comando
"Salva con Nome"
, da inserire all’interno del Blocco Note. Grazie alla segnalazione dei primi lettori, è però emerso che il codice dello script proposto funzionava soltanto nelle versioni dell’applicativo Microsoft precedenti a Windows 10.

Per questo motivo, si è deciso di mantenere valido l’esempio di script proposto, relativo al comando
"Salva con nome"
, applicandolo però in quell’occasione al programma
Wordpad
, per il quale il codice originario differisce solo nell’avere la lettera
"S"
al posto della
"V"
) tra le seconde parentesi graffe. Per chi fosse comunque interessato a verificarne il contenuto, questa versione aggiornata del primo capitolo la potete trovare anche all’indirizzo:


https://www.norobot.it/

Tornando allo script per il comando nel
"Blocco Note"
, se nella versione fino a Windows 8.1 si doveva entrare nel menu File e poi premere la lettera
"V"
, nella versione per Windows 10 questo comando è già dotato di una scelta rapida,
Shift+Control+S
, che quindi sarebbe ovviamente da sfruttare, almeno da quelli che utilizzano solo quest’ultima versione del sistema operativo.

Se il nostro obiettivo è invece quello di dotarsi di uno script versatile, che possa essere usato indistintamente sia nelle versioni precedenti del Blocco Note, sia in quella per Windows 10, si dovrà cambiare la forma dello script originario. Lasciando i dettagli alla scheda che segue, possiamo intanto anticipare che, una volta entrati nel menu File, non si dovranno più usare i tasti caldi, bensì muoversi tra le voci simulando la pressione dei tasti Freccia.

Per quanto riguarda gli utenti di Windows 10, lo script andrà comunque realizzato perché, in ogni caso, esso consente di attivare il comando
"Salva con nome"
tramite il tasto funzione
F12
,anziché servirsi della citata scelta rapida. Per giustificare il cambio proposto, va detto che quella da noi definita è comunque l’opzione utilizzata da Microsoft nelle scelte rapide del pacchetto Office, come ad esempio dentro a Microsoft Word, e che per questo la potremmo estendere ad altri applicativi, magari anche l’Editor di Script.

Esercizio 3.7.6. La versione di SalvaConNome () per il Blocco Note.

FileScript.

Notepad.JSS

Nome.

SalvaConNome

Sommario.

Esegue Salva con nome nel menu File.

Descrizione.

Visualizza il menu File e ne attiva il comando Salva con nome, selezionando la voce tramite i tasti Freccia e simulando la pressione del tasto Invio.

TastiAttivazione.

F12

Novità.
  1. La funzione integrata
    PriorLine
    , (RigaPrecedente), che simula la pressione del tasto
    FrecciaSu
    . La funzione avrebbe un parametro opzionale, che serve a specificare di quale tipo di periferica, tastiera, barra Braille o altro, simulare la pressione. In genere, si può evitare di specificarne uno, e così attivando il valore predefinito
    "0"
    , il quale indica appunto di lasciarne indefinita l’origine.
  2. La funzione integrata
    EnterKey
    , (TastoInvio), che simula appunto la pressione dell’omonimo tasto. Anche in questo caso ci sarebbe lo stesso parametro opzionale previsto dalla precedente funzione, che serve a determinare l’origine di tale pressione, ma anche qui consigliamo di non specificarlo.
Note.

Anche in questo caso, dopo aver concluso la procedura guidata ed essere tornati all’Editor, come contenuto dello script servitevi di
Control+I
per inserire le funzioni qui elencate, e, in un solo caso, inserendo anche il parametro indicato:

  1. La funzione
    SpeechOff
    , senza parametri.
  2. La funzione
    TypeKey
    , con parametro
    "Alt+F"
    , da inserire comprese le virgolette.
  3. La funzione
    Pause
    , senza parametri.
  4. La funzione
    PriorLine
    , Senza parametri, da inserire in sequenza per quattro volte consecutive.
  5. La funzione
    EnterKey
    , senza parametri.
  6. La funzione
    SpeechOn
    , senza parametri.

Codice.


Script SalvaConNome ()
SpeechOff (); spegne la sintesi
TypeKey ("Alt+F"); richiama il menu File
Pause (); sospende temporaneamente lo script
PriorLine (); si muove nel menu di una voce verso l’alto, simulando il tasto FrecciaSu,
PriorLine (); si muove di una seconda voce,
PriorLine (); di una terza,
PriorLine (); ed infine di una quarta, arrivando sulla voce desiderata,
EnterKey (); dove si simula la pressione del tasto Invio
SpeechOn (); riattiva la sintesi
EndScript

Collaudo.

  1. Se il salvataggio non dà problemi, il test dello script si può effettuare semplicemente entrando nel Blocco Note, anche con un documento vuoto, e premendo il tasto di attivazione scelto,
    F12
    . Se compare la schermata di
    "Salva Con Nome"
    , vuol dire che è tutto a posto.
  2. Inoltre, se aveste due pc con installati Windows 10 ed un’altra precedente versione del sistema operativo, potreste anche verificare direttamente l’effettiva compatibilità del nostro script.

Usare gli stessi comandi per applicativi diversi.

Nell’ultimo esercizio abbiamo realizzato un altro esempio di quella che, a parere di chi scrive, è una delle funzioni più utili per chi lavora al computer su diversi applicativi: usare le stesse combinazioni tasti, per attivare lo stesso tipo di comandi, nei diversi applicativi che si utilizzano. Questo significa, in concreto, dover fare una cosa attivando sempre lo stesso comando per farla, senza star lì a pensare troppo dentro quale programma si operi in quel momento.

Così, al momento attuale, premendo
F12
, siamo certi di visualizzare la finestra di dialogo
"Salva con nome"
, almeno nel Blocco Note, dentro a Wordpad e a Microsoft Word, oltre che in altri programmi del pacchetto Office.

Lo scopo di questa sezione, e di quella seguente, sarà proprio quello di proseguire su questa strada,in particolare omologando tra loro i comandi
Trova
e
Sostituisci
testo fra l’Editor di Script e gli altri tre programmi appena citati, Blocco Note, Wordpad e Word.

Come punto di partenza, decidiamo di tenere come modello l’Editor di Jaws, e perciò ci adegueremo alle scelte rapide già attive per tali comandi. Nel dettaglio:

  1. Per il comando
    Trova
    , che abbiamo già esaminato, la scelta rapida da omologare sarà ovviamente
    Control+F.
  2. Per il comando
    Sostituisci
    , la scelta rapida da condividere sarà invece
    Control+H
    , che semplifica il richiamo tramite l’omonimo comando nel menu Modifica.

In realtà, queste due combinazioni,
Control+F
e
Control+H
, sono pressoché uno standard, almeno per gli editor testuali, così da trovare facili riscontri anche in ulteriori applicativi, e comunque rendendo già più semplici i nostri sforzi di omologazione.

Per il Blocco Note, ad esempio, il lavoro è già fatto in quanto:

  1. La versione di
    TrovaTesto ()
    , da poco realizzata per questo applicativo, si richiama con
    Control+F.
  2. Anche in Blocco Note, il comando Sostituisci si può richiamare con la scelta rapida
    Control+H.

In Wordpad e Word, invece, bisognerà creare un nuovo script per entrambi i comandi, con una particolarità da rispettare nel caso di Microsoft Word. Anche per questo , esamineremo il da farsi caso per caso, dedicando a ciascuno un titolo a parte.

Ora, però, riallarghiamo l’orizzonte, tornando ad occuparci del file script
Default.JSS.

Omologare i comandi dal file script Predefinito.

Quando si lavora in un qualche applicativo, lo schema più semplice in assoluto è quello di aprire da lì l’Editor di Script, realizzare gli eventuali elementi di codice a noi necessari, per poi usarli appunto nell’applicativo di nostro interesse. Quando però si sa già che di uno script particolare saranno create più versioni per diversi applicativi, conviene sempre creare uno script nel file predefinito.

Così facendo, infatti, sarà sempre possibile:

  1. Inserire una o più funzioni valide per tutti gli script, così come abbiamo fatto nello script
    TrovaTesto ().
  2. Risparmiare l’onere, creando le versioni locali degli script, di specificare ogni volta la scelta rapida di attivazione, così come abbiamo fatto nella versione del citato script per il Blocco Note.

A proposito di
TrovaTesto ()
,dobbiamo comunque aggiornare l’iniziale versione realizzata nel file Predefinito
Default.JSS
, proprio adeguandola a quanto fatto nel Blocco Note. A maggior ragione qui, infatti, è indispensabile disporre di una versione valida per tutti gli utenti, sia quelli fino a Jaws 18, sia quelli dalla 2018 in poi, togliendo la chiamata della funzione nativa e ponendo al suo posto l’esecuzione del nostro script per il salvataggio dei contrassegni.

Procederemo poi nel creare lo script che richiama il comando
Sostituisci
,il quale per il momento avrà al suo interno solo l’istruzione che ripete i tasti per attivarlo. Esso ci consentirà fin da subito di non dover specificare la scelta rapida di Attivazione ,
Control+H
, nelle versioni locali che poi realizzeremo, ma più avanti conterrà anche la chiamata ad una funzione che agirà su più applicativi.

Esercizio 3.8.2. La nuova versione di TrovaTesto () nel file script Predefinito.

FileScript.

Default.JSS

Nome.

TrovaTesto

Note.
  1. Come anticipato nella premessa, la modifica alla prima versione si otterrà eliminando la chiamata alla funzione
    SaveCurrentLocation ()
    , sostituendola con l’istruzione che esegue il nostro script
    SalvaContrassegno ().
  2. Tale nuova istruzione, così come fatto nella citata versione del Blocco Note, dovrà essere contenuta tra altre due istruzioni con le quali si accende e spegne la sintesi, per evitare che, al momento di attivare la schermata di ricerca testo, sia anche pronunciato l’avviso di salvataggio del contrassegno.

Codice.


Script TrovaTesto ()
SpeechOff (); spegne la sintesi
PerformScript SalvaContrassegno (); esegue lo script per salvare la posizione del cursore
SpeechOn (); riattiva la sintesi
TypeCurrentScriptKey (); passa i tasti premuti all’applicazione
EndScript

Collaudo.

  1. Quando il salvataggio e la compilazione vanno a buon fine, siccome non è cambiato niente nella sua funzionalità, il collaudo può ridursi al solo controllo che, premendo
    Control+F
    , sia proposta la schermata di ricerca testo.

Esercizio 3.8.3. Lo script SostituisceTesto.

FileScript.

Default.JSS

Nome.

SostituisceTesto

Sommario.

Richiama il comando di sostituzione testo.

Descrizione.

Consente di poter richiamare dal file script Predefinito il comando di ricerca e sostituzione testo.

TastiAttivazione.

Control+H

Codice.


Script SostituisceTesto ()
TypeCurrentScriptKey (); ripete i tasti di attivazione dello script
EndScript

Collaudo.

  1. Il salvataggio con la compilazione non dovrebbe presentare problemi. Come test, da dentro l’Editor di Script, premete
    Control+H
    . Se si presenta la schermata
    Sostituisci
    , vuol dire che lo script funziona, in quanto non ha influito sul comando originale già presente nel programma.

***

Omologare i comandi in Microsoft Wordpad e Word.

Sinora abbiamo creato la cornice in cui operare, con i due script di ricerca e sostituzione testo dentro al file script Predefinito. Ora possiamo dunque dedicarci a realizzare gli script a livello dei singoli applicativi.

Iniziamo col dire che dentro a Microsoft Wordpad, così come in word e negli altri applicativi Office dalla versione 2007, i comandi sono gestiti tramite i Ribbon. Questo sistema, per i quali anche Jaws prevede una modalità per semplificarne l’uso, risulta un po’ ostico a chi utilizza in particolare la sintesi vocale. Per fortuna, molte restano ancora le scelte rapide attive, che consentono di aggirare i Ribbon, richiamando direttamente i principali comandi.

Questo è il caso dei comandi Trova e Sostituisci, che dovremmo anche in questi due applicativi far richiamare, nell’ordine, tramite
Control+F
e
Control+H
, per omologarne l’utilizzo all’Editor di Script ed al Blocco Note.

nel dettaglio, la corrispondenza tra comandi e scelte rapide originali è la seguente:

  1. Trova, richiamabile in Wordpad e Word con
    Shift+Control+T.
  2. Sostituisci, che si richiama in tali applicativi con
    Shift+Control+S.

Detto questo, possiamo ora procedere con la scrittura materiale dei nostri elementi di codice.

Le versioni degli script per Wordpad.

Il nostro lavoro sarà quindi creare due copie locali degli script realizzati nel file predefinito, che saranno molto simili agli originali anche nel loro contenuto. Successivamente, li copieremo entrambi per poi inserirli dentro all’ultimo applicativo da omologare, Microsoft Word.

Per predisporre la scrittura del codice, inizieremo con l’aprire il file script
Wordpad.JSS
, che potrebbe essere tra gli ultimi file aperti, richiamabili con i relativi numeri dal menu File dell’Editor di Script.

Se non siete certi del suo numero d’ordine, selezionate questi file recenti attivando il menu File e poi agendo con le frecce verso l’alto, e così scorrendoli in senso inverso, dal più vecchio, che avrà un numero sulla base dei file aperti in precedenza, al più recente, che è l’ultimo in cui si è richiamato il comando di salvataggio, il quale avrà il numero 1.

Se invece il file script per Wordpad non fosse tra questi, agite sulla scelta rapida
Control+O
, e selezionatelo dall’elenco dei file script presenti nella cartella delle Impostazioni personali.

Una volta aperto, portatevi come al solito alla fine del file, fate lo spazio necessario, ed avviate la procedura di creazione script, seguendo l’ormai consolidato schema.

Esercizio 3.9.2. La versione di TrovaTesto () per Wordpad.

FileScript.

Wordpad.JSS

Nome.

TrovaTesto

Sommario.

Attiva la ricerca di testo.

Descrizione.

Richiama il comando per la ricerca del testo, dopo aver registrato la posizione del cursore nel documento.

TastiAttivazione.

Nessuno

Novità.
  1. La scelta rapida
    Shift+Control+T
    , la quale serve nei programmi Microsoft Office ad attivare la ricerca del testo.
Note.
  1. Anche in questo caso, la dicitura
    Nessuno
    dopo l’etichetta
    TastiAttivazione
    , indica che non occorre premere alcun tasto o combinazione nell’apposito campo in fase di inserimento.
  2. Per quanto riguarda il contenuto, come detto nella premessa, esso avrà in comune con la versione del file script Predefinito l’istruzione per eseguire il nostro script, e lo spegnimento, con successiva riattivazione, della sintesi vocale. L’unica novità sarà il richiamo alla citata scelta rapida che attiva il comando.

Codice.


Script TrovaTesto ()
SpeechOff (); spegne la sintesi
PerformScript SalvaContrassegno (); esegue lo script per salvare la posizione del cursore
SpeechOn (); riattiva la sintesi
TypeKey ("Shift+Control+T"); simula la pressione della scelta rapida originale
EndScript

Collaudo.

  1. Come al solito, salvando e compilando, gli unici problemi potrebbero derivare da errori nel porre le virgolette nel testo del parametro.
  2. Per quel che riguarda il test vero e proprio, ci si può limitare ad aprire un documento non vuoto in Wordpad, premendo la combinazione tasti che attiva lo script,
    Control+F
    , e verificando che ciò faccia visualizzare la finestra di ricerca testo del programma.

Esercizio 3.9.3. La versione di SostituisceTesto () per Wordpad.

FileScript.

Wordpad.JSS

Nome.

SostituisceTesto

Sommario.

Richiama il comando di sostituzione testo.

Descrizione.

Consente di poter richiamare la sostituzione del testo tramite la combinazione tasti attiva nel file script Predefinito.

TastiAttivazione.

Nessuno

Novità.
  1. La scelta rapida
    Shift+Control+S
    , la quale serve nei programmi Microsoft Office ad attivare la sostituzione del testo.
Note.
  1. Per quanto riguarda il contenuto, esso è costituito da un’unica istruzione, la quale simula la pressione dell’appena citata scelta rapida originale per richiamare la finestra di sostituzione del testo.

Codice.


Script SostituisceTesto ()
TypeKey ("Shift+Control+S"); simula la pressione della scelta rapida originale
EndScript

Collaudo.

  1. Se la compilazione va a buon fine, ritornate al documento non vuoto dentro a Wordpad. Qui, premete
    Control+H
    , per far visualizzare la finestra di sostituzione di testo, che poi potete anche chiudere.
  2. Se non ci sono problemi, chiudete pure Wordpad e tornate all’Editor di Script, dove dovrebbe essere ancora aperto il file
    Wordpad.JSS
    . Altrimenti, se così non è, tornatevi nel modo che preferite.
  3. Qui, selezionate il codice che abbiamo appena inserito, gli script,
    TrovaTesto ()
    e
    SostituisceTesto ()
    . Copiate poi il codice selezionato negli appunti di Windows, quindi uscite dall’Editor di Jaws.

L’omologazione dei comandi in Microsoft Word.

Se nel vostro PC è installata una copia di Office, allora aprite Microsoft Word. Da lì, richiamate l’Editor di Script con TastoJaws+0. Si aprirà un file che potrebbe chiamarsi sia
Word.JSS
, sia
WordClassic.JSS
, a seconda dei software che avete installati.

In ogni caso, essendo la prima volta che operiamo in questo file script, prima di qualsiasi altra azione, salvate e compilate per controllare che non ci siano problemi.

Se tutto va bene, andate come al solito alla fine del file, assicurandovi ci sia almeno una riga vuota dopo l’ultima del codice originale, quindi incollate il contenuto degli appunti che, se non avete eseguito nel frattempo altre operazioni di copia , dovrebbe essere il codice che avevamo inserito in Wordpad.JSS.

A questo punto la maggior parte del lavoro è già fatto, ma dovremo lo stesso fare alcune importanti modifiche, sia al contenuto del codice incollato, sia aprendo l’apposita schermata con
Control+D
. Inoltre, è buona norma completare sempre gli script inserendo i dati, in particolare
Sommario
e
Descrizione
, e ribadendo i tasti di Attivazione quando serve.

Seguite, dunque, le solite schede qui proposte, ed apportate le modifiche richieste.

Esercizio 3.9.5. La versione di TrovaTesto () per Microsoft Word.

FileScript.

Word.JSS o WordClassic.JSS

Nome.

TrovaTesto

Sommario.

Attiva la ricerca di testo.

Descrizione.

Richiama il comando per la ricerca del testo, dopo aver registrato la posizione del cursore nel documento.

TastiAttivazione.

Control+F

Note.
  1. Per garantire il buon funzionamento dello script, è necessario rimuovere il riferimento al nostro
    SalvaContrassegno ()
    , cancellando la riga con l’istruzione che lo esegue, per porvi il comando che fa eseguire lo script originale di Word. Il suo nome è
    MarkPlace
    , (SegnaPosto), ed il suo compito è appunto segnare virtualmente un punto nel documento , allo stesso modo del nostro script, ma dialogando perfettamente con i controlli del programma.
  2. In questo caso sono indicati i tasti di attivazione, ma non sono da specificare ora, durante il primo aggiornamento dopo aver incollato il codice. Tale combinazione, infatti, sarà casomai aggiornata più tardi, in fase di collaudo, quando analizzeremo un aspetto particolare della funzione da realizzare.

Codice.


Script TrovaTesto ()
SpeechOff (); spegne la sintesi
PerformScript MarkPlace (); esegue lo script nativo
SpeechOn (); riattiva la sintesi
TypeKey ("Shift+Control+T"); simula la pressione della scelta rapida originale
EndScript

Esercizio 3.9.6. La versione di SostituisceTesto () ()per Microsoft Word.

FileScript.

Word.JSS o WordClassic.JSS

Nome.

SostituisceTesto

Sommario.

Richiama il comando di sostituzione testo.

Descrizione.

Consente di poter richiamare dal file script Predefinito il comando di ricerca e sostituzione testo.

TastiAttivazione.

Nessuno

Note.
  1. Stavolta nessuna modifica da fare, e nemmeno tasti da specificare, in quanto sfrutteremo appieno il lavoro già svolto prima nel file script Predefinito, poi in quello per Wordpad.

Codice.


Script SostituisceTesto ()
TypeKey ("Shift+Control+S"); simula la pressione della scelta rapida originale
EndScript

Collaudo.

  1. La compilazione non dovrebbe davvero darvi problemi, specialmente se vi siete limitati a copiare il codice dalle versioni per Wordpad.
  2. Come collaudo, aprite un documento anche vuoto in Microsoft Word e, per prima cosa, premete
    Control+H
    , e dovrebbe regolarmente presentarsi la finestra di dialogo
    Sostituisci.
  3. Adesso provate a premere
    Control+F
    . Anzi, provate a farlo più volte, attendendo un paio di secondi tra una pressione e l’altra. In teoria, non dovrebbe aprirsi la finestra di dialogo per la ricerca di testo, bensì dovreste avere vocalizzato, ad ogni pressione, un messaggio come
    "Giustificato"
    , oppure,
    "Allineato a sinistra".

Questo accade perché Word, in originale, avrebbe già uno script abbinato alla combinazione di tasti
Control+F
, che per la cronaca si chiama
JustifyText
, (TestoGiustificato), il quale converte ciclicamente il paragrafo su cui si trova il cursore nelle due formattazioni che abbiamo citato.

A questo punto, ci sarebbero almeno un paio di soluzioni al problema, ma per affrontarle dovremo prima acquisire altre importanti informazioni sul funzionamento di Jaws.

Per il momento, sta a voi decidere se vi è più comodo ed utile avere i comandi tutti uguali tra i quattro applicativi esaminati, oppure se volete lasciare le cose così come stanno, ricordandosi ogni volta che la ricerca testo in Word si effettua con la combinazione
Shift+Control+T
, anziché tramite
Control+F.

Il consiglio, tuttavia, è quello di completare l’omologazione, seguendo questi passi:

  1. Tornate all’Editor di Jaws, con caricato il file script per Microsoft Word.
  2. Portatevi all’interno dello script
    TrovaTesto ()
    , e aprite la finestra di modifica con
    Control+D.
  3. Premete la scelta rapida
    Alt+A
    per portarvi nel campo
    Assegna a
    , e Jaws vi leggerà la combinazione attiva, che dovrebbe essere
    Control+F.
  4. Qui premete il tasto Delete per cancellare il contenuto del campo. Di seguito, premete
    Shift+Tab
    per tornare al campo precedente.
  5. Premete una volta Tab, o la scelta rapida
    Alt+A
    , per tornare al campo
    Assegna a
    . Qui, senza toccare altri tasti, premete la combinazione
    Control+F.
  6. Jaws dovrebbe a questo punto proporvi una finestra di dialogo sul tipo di quella analizzata nell’occasione dello script
    SalvaContrassegno ()
    per gli utenti di Jaws dalla 2018, con la differenza di avere
    Control+F
    come combinazione tasti citata e
    "JustifyText"
    come nome dello script. Anche in questo caso, spostatevi con Tab su
    Ok
    per confermare la scelta, quindi premete Invio per uscire dalla procedura di modifica.
  7. Una volta tornati all’Editor, salvate compilando, operazione che non dovrebbe darvi alcun problema.
  8. Tornate adesso al documento aperto in Word, e provate a premere la scelta rapida
    Control+F
    . Ora, finalmente, dovrebbe presentarsi la schermata del programma in cui si può cercare del testo.

File Utente, e File Condiviso.

Per capire cosa sia stato fatto nel completare l’omologazione anche dentro a Word, qualora abbiate scelto di farlo, è necessario ritornare alla
gerarchia degli script
, analizzata ad inizio capitolo. Se ricordate, in quel caso avevamo illustrato come Jaws assegnasse prima di tutto la priorità ai file script locali rispetto a quelli dentro a
Default.JSS
, ma ora dobbiamo completare il discorso aggiungendo un altro passaggio.

Per spiegarci meglio, facciamo come sempre una piccola prova pratica, tornando all’interno dell’Editor di Script, a prescindere dal file che vi fosse caricato.

Quando noi vi abbiamo indicato di cercare un file tra quelli esistenti, se ricordate, vi consigliavamo di usare la scelta rapida
Control+O
, che apre la finestra di dialogo
File Utente
, dove si possono selezionare e caricare tutti i file che noi abbiamo creato, in modo diretto o indiretto, per le nostre
Impostazioni personali.

Questi, tuttavia, sono soltanto una minima parte dei file script, e degli altri file ad essi collegati, perché di ogni applicativo gestito da Jaws esistono dei file con estensione
.JSS,
.JSD
, casomai anche
.JKM
, e comunque sempre dei file
.JSB
, che sono poi quelli che prioritariamente legge Jaws.

Per farvi un’idea di quanti siano, da dentro all’Editor di Script, provate ad agire sul comando
Apri file condiviso
del menu File, che si richiama premendo la sequenza
Alt+F, lettera E, Invio.

Impostando di cercare in tutti i tipi di file, e poi scorrendo la cartella corrente ed alcune altre sottocartelle, potrete selezionare il nome di alcune centinaia di file, ciascuno appunto relativo ad un singolo programma o schermata del sistema operativo.

Questi file sono quelli relativi alle
Impostazioni condivise
, e le loro cartelle si possono raggiungere anche tramite l’omonimo collegamento tra le
Utility
di Jaws. Essi sono quelli che Jaws attiva all’apertura dei programmi, qualora un file script relativo non sia presente tra le
Impostazioni personali.

In altre parole , la gerarchia completa degli script si sviluppa secondo questa sequenza di eventi:

  1. Noi attiviamo un applicativo.
  2. Jaws cerca se trova un file script con il nome di tale applicativo tra le
    Impostazioni personali
    . Se lo trova, lo carica.
  3. Se invece non lo trova, continua a cercarlo dentro le cartelle delle
    Impostazioni condivise
    , e casomai lo carica da lì.

A conferma di ciò, nelle ultime versioni dell’Editor di Script per Windows 10, è possibile che il nome del file script aperto sia preceduto nel titolo dalla specifica
"Utente:"
, oppure
"Condiviso:"
, proprio per chiarirne la provenienza.

Sulla base di quanto appena detto, esaminiamo come funziona tale gerarchia, riproponendo le azioni da compiere per far eseguire la ricerca testo tramite
Control+F
anche dentro a Microsoft Word. Per farlo, riprendiamo la sequenza che abbiamo già illustrato in precedenza nel capitolo, dove si elencavano le azioni che si susseguono premendo una combinazione di tasti, analizzandola stavolta più nel dettaglio.

In particolare, torniamo a quando per la prima volta abbiamo collaudato gli script dentro al documento Word, quando esisteva ancora il conflitto tra le due impostazioni. In quel momento, la pressione di
Control+F
attivava lo script originale, generando questa sequenza di azioni:

  1. Jaws cerca questa combinazione nel file tasti di Word, che ha l’estensione
    JKM
    , iniziando dalla cartella dei file per l’Utente.
  2. Qui però Jaws non la trova, in quanto noi gli script gli abbiamo soltanto copiati, non creati durante la procedura, e quindi la combinazione abbinata non è stata trascritta nel file
    JKM
    locale.
  3. Per questo, passa quindi ad esaminare il file con lo stesso nome che è presente nella cartella dei file condivisi.
  4. Poiché qui invece la trova, Jaws registra che essa è abbinata ad uno script che si chiama
    JustifyText ().
  5. Adesso Jaws torna a cercare nella cartella dei file per l’Utente, nel file compilato di Word, dove trova uno script con quel nome, e lo esegue.

Quando poi noi siamo tornati nel file script di Word, e abbiamo inserito direttamente la combinazione tasti nella finestra di modifica di
TrovaTesto ()
, il file con estensione JKM presente nella cartella delle Impostazioni personali è stato aggiornato. Per questo, quando abbiamo poi salvato e compilato il file script, tornando per la seconda volta dentro a Word per premere
Control+F
, questa è diventata la sequenza delle azioni:

  1. Jaws cerca nuovamente questa combinazione nel file tasti di Word, che ha l’estensione JKM, iniziando ancora dalla cartella dei file per l’Utente.
  2. Siccome stavolta la combinazione tasti è presente, Jaws registra che essa è abbinata al nostro script
    TrovaTesto ().
  3. Per questo , Jaws rimane a cercare nel file Word compilato della cartella dei file per l’Utente, trova lo script con quel nome, e lo esegue, facendo infine visualizzare la finestra di dialogo
    Trova.

Forse è un po’ complicato da comprendere questo va e vieni di Jaws, non solo tra gli script locali e quello predefinito, ma anche tra i file dell’Utente e quelli Condivisi.

C’è da dire, però, che qui sta gran parte del segreto della versatilità e della potenza di questo programma per la sintesi vocale. Casomai, prendetevi un po’ di tempo per ripassare qualche concetto, perché è importante che abbiate compreso bene il percorso che stiamo facendo, e soprattutto per essere voi da soli in grado di adattare o creare i vostri script.

Ora, se siete degli utenti di Jaws fino alla versione 18, avete un’ultima fatica da compiere, per consentire la selezione del testo dal punto registrato anche dentro a Word con gli stessi tasti usati dal nostro script. Altrimenti, passate direttamente al riepilogo del capitolo.

Esercizio 3.9.8. La versione di SelezionaDalContrassegno () per Microsoft Word fino alla 18.

FileScript.

Word.JSS o WordClassic.JSS

Nome.

SelezionaDalContrassegno

Sommario.

Seleziona il testo dal punto registrato.

Descrizione.

Esegue lo script nativo che seleziona il testo, a partire da un punto nel documento registrato in precedenza.

TastiAttivazione.

Nessuno

Note.
  1. Come detto in precedenza, questo script serve solo a garantire una continuità di gesti anche dentro a Word per gli utenti di Jaws sino alla versione 18. La versione che abbiamo realizzato dentro al file script Predefinito, infatti, sarebbe richiamata anche da dentro questo applicativo Microsoft, ma non avrebbe effetto in quanto, dentro a Word, il contrassegno temporaneo viene salvato tramite lo script nativo.
  2. Per questo, il nostro compito sarà semplicemente far eseguire, dentro al nostro elemento di codice, lo script nativo per la selezione, che riesce a dialogare con l’altro che aveva registrato il punto d’inizio, e così riuscendo a selezionare il testo tra i due punti.
  3. Proprio per la presenza del citato script nel file Predefinito, possiamo ora anche non specificare alcun tasto di Attivazione , sfruttando l’impostazione già effettuata.

Codice.


Script SelezionaDalContrassegno ()
PerformScript SelectTextBetweenMarkedPlaceAndCurrentPosition (); esegue lo script nativo
EndScript

Collaudo.

  1. Dato che la compilazione non può dare problemi, fate comunque una prova in un documento non vuoto dentro a Microsoft Word. Fissate un punto d’inizio con
    Control+Windows+K
    , oppure attivando la ricerca testo con
    Control+F
    ,quindi selezionate il testo da quel punto, o dal punto raggiunto tramite la ricerca, con
    Shift+Control+Windows+K.

***

Riepilogo.

In questo capitolo si è tentato di spiegare il funzionamento di Jaws, e come fa ad essere così utile alle nostre personalizzazioni.

A tal fine, sono stati proposti degli script, numerosi ma semplici, che ci si augura abbiano avuto almeno il merito di darvi qualche spunto interessante.

Fin qui, a dir la verità, sono state fatte un po’ di peripezie, e di forzature, per tenere fede all’intento iniziale di procedere per gradi, riuscendo comunque a realizzare qualcosa pur mancando di informazioni fondamentali per la creazione di script. Il prossimo capitolo sarà il primo di una serie dove cercheremo innanzi tutto di acquisire le restanti nozioni base, che ci consentiranno poi di iniziare davvero a programmare degli script più efficaci e versatili.

Download

File script da scaricare, per gli utenti di Jaws fino alla versione 18
Archivio da scaricare, per gli utenti dalla versione 2018 in poi

Per ulteriori spiegazioni, scrivere a:

Abramo Volpato

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *