[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 109.   Tastiera di un elaboratore

La gestione della tastiera con un sistema operativo è generalmente una questione abbastanza complicata. Un sistema operativo destinato ad architetture differenti deve essere in grado di gestire tastiere fisiche molto diverse tra di loro, mantenendo un comportamento uniforme.

109.1   Simboli astratti e tasti reali

Per poter adattare tastiere fisiche differenti allo stesso sistema operativo, è necessario creare un'astrazione rispetto alla tastiera reale, abbinando la pressione dei tasti fisici a simboli di una tastiera virtuale che rimane sempre la stessa. La tastiera virtuale dei sistemi che si rifanno al modello di Unix, genera dei simboli, che possono avere il significato di un carattere, di una stringa, o di una funzione speciale. Quello che si fa sulla tastiera fisica è un'azione meccanica, ma quello che conta è ciò che, da quella azione, viene generato attraverso la tastiera virtuale. Per esempio, se ipoteticamente con la combinazione di tasti [AltGr e] si ottiene il simbolo «€», per il sistema è come se si premesse il tasto [] della tastiera virtuale.

Nelle tastiere fisiche si utilizzano diversi tasti «modificatori» per generare delle combinazioni, per esempio per ottenere le lettere maiuscole, mentre, nella tastiera virtuale si può immaginare che ci sia un tasto singolo per ogni funzione.

Nella tastiera virtuale di un sistema simile a Unix si prevedono tasti con funzioni speciali, che in pratica trasmettono un carattere o una stringa che ha lo scopo di comunicare qualcosa a un programma. Per esempio, il codice ASCII <BS>, ovvero 0816, ha normalmente lo scopo di cancellare un testo, arretrando; il codice ASCII <STX>, ovvero 0216, potrebbe avere lo scopo di informare il programma della conclusione del flusso di dati in ingresso (end of file). Per ottenere questi simboli con funzioni speciali si può immaginare la tastiera virtuale con un tasto apposito per ognuno, mentre nella tastiera reale potrebbe essere necessaria una combinazione (nel caso del codice di conclusione di un flusso di dati si usa normalmente la combinazione [Ctrl d]). Tuttavia, la tastiera virtuale tipica di un sistema Unix prevede dei modificatori (virtuali): si tratta precisamente di <Control> e <Meta>.

I modificatori virtuali <Control> e <Meta> servono per ottenere delle funzioni speciali, in abbinamento con altri tasti (virtuali). Tuttavia, si potrebbero immaginare tasti virtuali separati per ognuna delle combinazioni prestabilite, rendendo il concetto più semplice.

Il fatto che la tastiera virtuale di un sistema basato sul modello di Unix preveda dei modificatori virtuali, è fonte di confusione, perché, per esempio, da un lato può essere «facile» abbinare mentalmente il tasto reale [Ctrl] al modificatore virtuale <Control>, dall'altro, però, non è detto che la combinazione reale [Ctrl x] produca effettivamente la selezione della funzione abbinata alla combinazione virtuale <Control_x>. Per evitare questa confusione, sarebbe meglio pensare a funzioni associate a tasti virtuali indipendenti: <Control_a>, <Control_b>, <Control_c>,... <Meta_a>, <Meta_b>, <Meta_c>,...

Di norma, su una tastiera reale per elaboratori x86, si associa il modificatore virtuale <Control> ai tasti [Ctrl] presenti, in modo indifferente, mentre si associa normalmente il modificatore virtuale <Meta> al tasto [Alt] a sinistra della barra spaziatrice. Tuttavia, certe combinazioni virtuali non si possono ottenere sempre nello stesso modo con la tastiera reale; per esempio, con una tastiera italiana, la combinazione virtuale <Control_underscore> potrebbe richiedere la pressione simultanea di [Ctrl Maiuscole -] (control, maiuscole, trattino normale), perché il carattere _ si ottiene in combinazione con il tasto delle maiuscole ([Maiuscole -]). D'altra parte, dal momento che non esiste una combinazione virtuale che abbina <Control>, con il segno -, sempre ipotizzando una tastiera italiana, la combinazione virtuale <Control_underscore> potrebbe essere comandata da una combinazione reale differente, come potrebbe esserlo [Ctrl -], dato che il segno - si ottiene sullo stesso tasto reale, ma senza la pressione del tasto delle maiuscole. Tutto questo dipende comunque dalla configurazione della mappa della tastiera, con la quale si associa la pressione dei tasti reali ad azioni appropriate sulla tastiera virtuale del sistema operativo.

Figura 109.1. Porzione di tastiera italiana in cui si vede in particolare il tasto con il quale si ottengono i simboli - e _.

porzione di tastiera

Riquadro 109.2. Notazioni e simbologia.

Nella documentazione tecnica a proposito di programmi per sistemi Unix, si fa spesso riferimento a combinazioni di tasti da premere, secondo una simbologia particolare. Di solito si usano notazioni del tipo ^x, oppure C-x, per rappresentare una cosa che potrebbe essere descritta come «Ctrl+x»; così M-x, per rappresentare combinazioni del tipo «Meta+x». Quello che conta, a parte la simbologia usata, è comprendere che si fa riferimento a «combinazioni virtuali», che nella realtà potrebbero richiedere metodi di inserimento differenti rispetto all'apparenza della simbologia usata.

109.2   Livelli

Nelle tastiere fisiche comuni, i tasti a disposizione sono inferiori a quelli che servirebbero, per poter esprimere tutti i segni tipografici richiesti da una certa lingua. Nella macchina da scrivere meccanica si otteneva la duplicazione delle funzioni dei tasti, alzando o abbassando il blocco dei martelli. Per questa ragione, anche oggi si parla di livelli, a proposito del fatto che un tasto consenta di ottenere due o più simboli differenti, combinandolo con un modificatore appropriato.

Nelle tastiere europee comuni si utilizzano almeno tre livelli, dove il secondo livello viene attivato con la pressione del tasto [Maiuscole], mentre il terzo livello si ottiene con un tasto alternativo (nel caso delle tastiere per elaboratori x86 si tratta normalmente del tasto [AltGr]). Per la disposizione italiana, il terzo livello serve per esempio a ottenere la chiocciola, il cancelletto e le parentesi quadre.

La gestione dei livelli è compito della configurazione della tastiera fisica e si possono ipotizzare anche più di tre livelli, con l'uso di combinazioni più complesse.

109.2.1   Fissamaiuscole

Generalmente, il tasto [Fissamaiuscole] di una tastiera fisica non interviene su tutta la tastiera, ma solo su una porzione centrale. Questo fatto ha dei vantaggi in fase di digitazione, perché i tasti che non hanno una forma minuscola contrapposta a una maiuscola, non vengono coinvolti. Tuttavia, nelle convenzioni di alcuni paesi europei, il tasto [Fissamaiuscole] dovrebbe agire su tutta la porzione alfanumerica, pertanto, in quei casi, capita di avere le cifre numeriche al secondo livello.

Questo comportamento, che consiste nell'avere un fissamaiuscole che interviene su tutta la tastiera alfanumerica, si può osservare nella gestione della tastiera di un sistema operativo Dos, in particolare con le mappe per le lingue francese e tedesca. Queste hanno mantenuto una stretta corrispondenza con la tastiera della macchina da scrivere, tanto che lo sblocco del fissamaiuscole si ottiene premendo il tasto [Maiuscole].

È bene osservare che in una console GNU/Linux non è possibile configurare il funzionamento del tasto [Fissamaiuscole], pertanto la mappa delle tastiere per la lingua francese e per la lingua tedesca non corrispondono esattamente alla tradizione. Tuttavia, è da osservare che anche con X (il sistema grafico) non viene più rispettata la tradizione originale.

109.3   Alfabeti non latini

Quando si utilizza una tastiera per un terminale a caratteri, come nel caso della console, è normale che ci si trovi nella necessità di scrivere qualcosa utilizzando l'alfabeto latino, se non altro per impartire dei comandi al sistema operativo. Per questa ragione, se la lingua che si intende usare usa un alfabeto non latino (come per il greco e il russo), non si può fare a meno di disporre di una tastiera che consenta di generare ugualmente simboli nell'alfabeto latino.

Nel caso della console di un sistema GNU/Linux, di solito si fa in modo che il tasto che porta al terzo livello ([AltGr], o qualunque altra cosa in base alla configurazione della mappa), funzioni come il [Fissamaiuscole], ovvero che mantenga lo spostamento al terzo livello fino a quando non lo si ripreme una seconda volta. In questi casi, di solito, i primi due livelli offrono una disposizione dei tasti uguale o simile a quella statunitense, mentre i due livelli successivi servono per l'alfabeto non latino da usare.

Si osservi che l'utilizzo di un alfabeto non latino implica l'uso di una codifica speciale. L'uso della codifica UTF-8 dovrebbe garantire la compatibilità con quella ASCII, ma di fatto molti usano ancora codifiche differenti; in quei casi, la configurazione della mappa della tastiera della console di un sistema GNU/Linux deve tenerne conto.

109.4   Tasti morti e composizione

Due modi ulteriori per estendere le potenzialità di una tastiera fisica consistono nell'attribuire a una sequenza di tasti il compito di comporre un carattere unico. Di solito si fa questo per generare delle lettere accentate, digitando prima l'accento e poi la lettera da accentare.

Uno dei due modi consiste nell'avere dei simboli che servono ad accentare la lettera successiva; alla selezione di uno di questi accenti non si ottiene nulla fino alla selezione di un simbolo ulteriore da modificare. In questo caso, simbolo selezionato inizialmente è un tasto morto, o un accento morto, in quanto da solo non produce nulla.

Un altro modo consiste nell'avere un tasto modificatore, premendo il quale si passa in modalità di composizione. In tale modalità si deve inserire una stringa che in qualche modo deve generare un simbolo appropriato. Di norma, al termine di una sequenza di composizione, la modalità di funzionamento torna a essere quella normale.

Queste modalità di funzionamento della tastiera (tasti morti e composizione) vengono definite attraverso la sua configurazione, ma ovviamente si possono ottenere solo le lettere accentate o composte, che sono previste espressamente.

109.5   Inserimento numerico del codice di un simbolo

Un modo ancora più completo per consentire l'inserimento di simboli che sulla propria tastiera non possono essere previsti, sta nel definire una combinazione che richiede l'inserimento di un numero, con il quale si identifica il punto di codifica del simbolo desiderato (per una definizione del punto di codifica si veda il capitolo 416). Questo metodo di inserimento di simboli insoliti si è diffuso in particolare attraverso il sistema operativo Dos, con il quale era possibile premere il tasto [Alt] sinistro e digitare il numero del carattere desiderato con la tastiera numerica.

La convenzione introdotta dal sistema operativo Dos viene mantenuta generalmente anche nella configurazione della tastiera di un sistema GNU/Linux comune, ma si tratta di una funzione che non è sempre presente; per esempio manca quando si usa la grafica con X. A ogni modo, è bene considerare che ci possono essere metodi alternativi di inserimento; per esempio potrebbe essere possibile specificare il numero del punto di codifica anche in esadecimale.

109.6   Alfabeti asiatici

Quando una lingua richiede la scrittura attraverso un numero elevato di caratteri (come il cinese), le tastiere comuni, che sono nate per l'alfabeto latino, diventano troppo limitate. In queste condizioni, l'utilizzo dei livelli, dei tasti morti e della composizione, diventa insufficiente o inadatto per poter gestire il volume di simboli che la lingua richiede. Pertanto, in queste situazioni, si utilizza generalmente un programma aggiuntivo, che si colloca dopo la tastiera astratta. In pratica, la configurazione della tastiera fisica potrebbe anche essere predisposta secondo la lingua inglese, mentre poi, un programma che si inserisce prima dell'applicazione utilizzata effettivamente consente di selezionare i simboli in base a tecniche alternative.

Il metodo di trasformazione dall'alfabeto latino ai simboli della lingua prescelta, avviene generalmente attraverso una qualche forma di traslitterazione, dove si arriva anche a dare un nome (utilizzando l'alfabeto latino) al carattere da scrivere. A questo proposito si usa la sigla «IM», Input method, che fa spesso parte dei programmi che si occupano di tale compito (per esempio SCIM e Xim).

Figura 109.3. Un esempio si inserimento di un testo in cinese, attraverso un metodo di inserimento intelligente basato sul sistema di traslitterazione pinyin. In questo caso, si vede l'inserimento della parola «mu» (secondo la traslitterazione in caratteri latini), per la quale esistono tante varianti nel modo di rappresentarla. Per scegliere il carattere corretto, dopo l'inserimento del nome, si seleziona il numero corrispondente.

Esempio di metodo di inserimento

109.7   Pittogrammi ISO 9995-7

Lo standard ISO 9995-7 definisce alcuni simboli, ovvero pittogrammi, da usare sulla tastiera per funzionalità comuni, in modo da evitare le descrizioni verbali che possono richiedere una traduzione. La tabella successiva riepiloga alcuni dei simboli in questione. Si osservi che parte dei pittogrammi previsti dallo standard ISO 9995-7 è inserito nell'insieme di caratteri universale; si tratta precisamente dei codici da U+2380 a U+238C, da U+2396 a U+239A e U+2425.

Tabella 109.4. Alcuni pittogrammi ISO 9995-7.

Simbolo Descrizione Simbolo Descrizione
insert [Ins] del [Canc]
back space [Backspace] tab [Tab]
shift [Maiuscole] shift level 3 passaggio al terzo livello
shift lock [Fissamaiuscole] number lock [BlocNum]
control [Ctrl] alternate [Alt]
compose [Comp]
inizia una sequenza di composizione
enter [Invio]
break [Interr]
break
pause [Pausa]
esc [Esc] home [Inizio]
end [Fine] page up [Pagina su]
pagina precedente
page down [Pagina giù]
pagina successiva
print screen [Stampa]
scroll lock [BlocScorr] space [Spazio]
nbsp spazio non separabile decimal separatore decimale

109.8   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome tastiera_di_un_elaboratore.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!