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


Capitolo 110.   Tastiera della console di un sistema GNU/Linux

La gestione della tastiera della console di un sistema GNU/Linux avviene in modo piuttosto complesso. Solitamente si fa riferimento al programma loadkeys come unico responsabile della definizione delle funzioni associate ai tasti, ma questo non basta per comprendere il problema.

I segnali della tastiera vengono ricevuti direttamente dal kernel che poi li fornisce ai programmi, in vario modo, a seconda di una data modalità selezionata.

Il programma kbd_mode permette di conoscere o di modificare la modalità di funzionamento della tastiera, ma la modifica è da riservare solo a occasioni particolari, di solito utilizzando una connessione remota, quando un programma ha modificato la modalità della tastiera rendendo inutilizzabile la console.

Tabella 110.1. Riepilogo dei programmi e dei file per la gestione della tastiera della console di un sistema GNU/Linux.

Nome Descrizione
kbd_mode Interroga o modifica la modalità di funzionamento della tastiera.
setleds Impostazione di [BlocNum], [Fissamaiuscole] e [BlocScorr].
showkey Emette il codice corrispondente ai tasti premuti.
sorgenti_linux/drivers/char/defkeymap.c Mappa della tastiera predefinita nel kernel.
/usr/share/keymaps/ Directory dei file di mappa delle varie nazionalità.
loadkeys Modifica la mappa della tastiera.
dumpkeys Emette la mappa della tastiera in funzione.

110.1   Tastiera locale e tastiera remota

In generale, ciò che conta è fare in modo che funzioni correttamente la tastiera connessa al proprio elaboratore. Questo è importante perché, quando si utilizza una connessione remota, per esempio attraverso il protocollo TELNET, la tastiera che si adopera dipende, per la sua configurazione, dall'elaboratore a cui è connessa fisicamente: non dipende quindi dall'elaboratore al quale si è collegati. Leggendolo così potrebbe sembrare una cosa evidente, ma quando ci si trova a farlo veramente, non lo è più così tanto.

In questo senso, se da una connessione remota viene dato un comando per modificare la modalità di funzionamento o la mappa della tastiera, l'effetto si risente sulla console dell'elaboratore che riceve il comando e non nel terminale remoto.

Queste considerazioni permettono anche di comprendere che la connessione remota è indipendente da qualunque configurazione che riguardi la tastiera di un certo elaboratore. Perciò, una configurazione errata che renda inutilizzabile una console, può essere corretta attraverso una connessione remota.

110.2   Console virtuali

Un sistema GNU/Linux, come altri sistemi Unix, consente di gestire diversi terminali sull'unica console esistente effettivamente. Questi vengono definiti console virtuali. Attraverso alcune combinazioni di tasti si riesce a passare da una console virtuale all'altra. Queste combinazioni sono normalmente [Alt F1], [Alt F2],... oppure [Ctrl Alt F1], [Ctrl Alt F2],... ma possono essere modificate (anche se ciò non è consigliabile).

La console vera e propria corrisponde quasi sempre alla console virtuale in funzione in un dato momento.

La configurazione della tastiera, a seconda del tipo di modalità su cui si interviene, può avere effetto su tutte le console virtuali, oppure solo su quella attiva.

110.3   Controllo della modalità di funzionamento della tastiera con «kbd_mode»

Il programma kbd_mode (1) permette di conoscere o di modificare la modalità di funzionamento della tastiera della console. Ciò significa, implicitamente, che l'effetto riguarda la console virtuale attiva; pertanto, quando viene utilizzato a distanza, attraverso il protocollo TELNET o un altro metodo di connessione simile, ha effetto sulla console virtuale attiva nell'elaboratore al quale si è connessi.

kbd_mode [opzioni]

L'utilizzo di questo programma deve essere fatto con prudenza: la visualizzazione della modalità di funzionamento della tastiera non provoca alcun inconveniente, ma la modifica errata della modalità, comporta l'impossibilità di continuare a utilizzarla.

È meglio evitare di utilizzare questo programma per modificare la modalità della tastiera, da una finestra di terminale, all'interno del sistema grafico X.

Tabella 110.2. Alcune opzioni.

Opzione Descrizione
Se kbd_mode viene avviato senza opzioni, il risultato che si ottiene è la visualizzazione della modalità attiva. Ciò dovrebbe corrispondere all'uso normale del programma.
-s
L'opzione -s attiva la modalità scancode, o RAW. Questa è la modalità che si osserva normalmente nelle finestre di terminale del sistema grafico X. Questa modalità non può essere utilizzata per le console virtuali normali.
-k
L'opzione -k attiva la modalità keycode, o MEDIUMRAW. Questa modalità non può essere utilizzata per le console virtuali normali.
-a
L'opzione -a attiva la modalità ASCII o XLATE. Questa modalità è quella normale quando si utilizzano le console virtuali. Questa modalità fa uso della mappa definita da loadkeys.
-u
L'opzione -u attiva la modalità UTF-8 o UNICODE. Questa modalità fa uso della mappa definita da loadkeys.

Se la console di un elaboratore è rimasta bloccata e comunque esiste la possibilità di connettersi a questo da un'altra postazione funzionante, si può ripristinare la modalità corretta della tastiera da lì. Nell'esempio seguente, l'elaboratore da sistemare è dinkel.brot.dg e quello dal quale si interviene è roggen.brot.dg.

roggen.brot.dg$ telnet dinkel.brot.dg[Invio]

Trying dinkel.brot.dg...
Connected to dinkel.brot.dg.
Escape character is '^]'.

login: root[Invio]

Password: ********[Invio]

dinkel.brot.dg# kbd_mode -a[Invio]

dinkel.brot.dg# exit[Invio]

Questo esempio presume che si possieda già una certa conoscenza di come si instaura una connessione remota attraverso un cliente TELNET. L'utente inesperto che dovesse tentare una cosa del genere potrebbe non essere capace di completare l'accesso a causa del fatto che normalmente viene impedito all'utente root di accedere da una postazione remota, per motivi di sicurezza.

110.4   Controllo sullo stato della tastiera con «setleds»

Il programma setleds (2) interviene esclusivamente su una console virtuale attiva, o meglio, quella da cui proviene lo standard input. Non può essere utilizzato in altre situazioni. Lo scopo del programma è di intervenire sull'impostazione dei tasti [Fissamaiuscole] (capslock), [BlocNum] (numlock) e [BlocScorr] (ScrollLock).

setleds [opzioni] [modalità...]

Solitamente, questi tasti attivano o disattivano la modalità corrispondente, che viene segnalata anche da una spia luminosa sulla tastiera, una per ogni modalità. Queste spie sono notoriamente dei led (Light emitting diode) e spesso sono chiamati così anche in italiano.

Il programma permette di intervenire sia attivando o disattivando queste modalità, sia accendendo o spegnendo i led.

Tabella 110.4. Alcune opzioni e modalità

Opzione Descrizione
Utilizzando il programma senza argomenti, si ottiene il resoconto sull'impostazione dei tasti su cui può intervenire e su quella dei led corrispondenti.
-F
L'opzione -F è quella predefinita, quando vengono indicate solo delle modalità. Con questa, si modifica lo stato corrispondente alle modalità indicate. Se i led non sono impostati indipendentemente, riflettono la nuova situazione.
-D
L'opzione -D è analoga a -F, con la differenza che la nuova impostazione diviene predefinita ed è ciò che si ripresenta a seguito di un ripristino attraverso l'uso del comando reset.
-L
L'opzione -L fa in modo di intervenire solo sui led. Dal momento in cui si utilizza setleds con questa opzione, si sgancia il funzionamento dei led dall'uso dei tasti a cui sarebbero abbinati. Per ripristinare il collegamento tra led e tasti, si può utilizzare nuovamente setleds con l'opzione -L da sola, senza altri argomenti.
+num
-num
Questa modalità attiva o disattiva [BlocNum].
+caps
-caps
Questa modalità attiva o disattiva [Fissamaiuscole].
+scroll
-scroll
Questa modalità attiva o disattiva [BlocScorr].

Segue la descrizione di alcuni esempi.

110.5   Mappa della tastiera

Il primo problema che si incontra dal punto di vista dell'internazionalizzazione di un sistema operativo, è la disposizione dei tasti sulla tastiera. Quando la tastiera viene utilizzata in modalità ASCII o Unicode, il kernel utilizza una tabella di conversione prima di trasmettere alle applicazioni i tasti premuti.

In fase di compilazione del kernel viene definita una tabella di partenza attraverso il file sorgenti_linux/driver/char/defkeymap.c. Normalmente questo file corrisponde alla mappa della tastiera statunitense, ma può anche essere cambiato come viene mostrato in seguito.

Di solito, la mappa della tastiera viene ridefinita attraverso il programma loadkeys indicando come argomento il nome di un file contenente la mappa desiderata. I file delle varie mappe disponibili sono contenuti normalmente a partire dalla directory /usr/share/keymaps/.

Il sistema della mappa della tastiera che si descrive qui e nelle sezioni seguenti, riguarda solo le console virtuali di GNU/Linux e non l'impostazione fatta dal sistema grafico X per i programmi che si avviano al suo interno.

110.6   Visualizzazione dei codici dei tasti con «showkey»

Il programma showkey (3) permette di visualizzare, attraverso lo standard output, il codice corrispondente ai tasti che si premono e si rilasciano. Dal momento che ciò impegna totalmente la tastiera, showkey conclude il suo funzionamento dopo 10 s di inattività.

showkey [opzioni]

Questo programma non può funzionare in una finestra di terminale nel sistema grafico X.

Tabella 110.5. Alcune opzioni.

Opzione Descrizione
-s
--scancodes
Fa in modo che siano mostrati i codici scancode. L'utilizzo della tastiera in questa modalità è abbastanza inusuale, quindi è raro che possa essere utile conoscere la corrispondenza della pressione e rilascio dei tasti in questa modalità.
-k
--keycode
Fa in modo che siano mostrati i codici keycode. È il funzionamento predefinito, quando non si indicano argomenti di alcun genere. È questa la codifica a cui si fa riferimento quando si costruiscono i file di mappa gestiti da loadkeys.
-m
--keymap
Mostra la traduzione dei tasti premuti nel codice corrispondente della tastiera virtuale, secondo la configurazione attiva. Si usa normalmente per verificare il funzionamento corretto di una mappa.

Segue la descrizione di alcuni esempi.

110.7   Caricamento di una mappa con «loadkeys»

Il programma loadkeys (4) viene usato normalmente per cambiare la mappa della tastiera utilizzata in tutte le console virtuali, attraverso le indicazioni contenute in un file fornito come argomento o attraverso lo standard input. Il file fornito come argomento, se non contiene l'indicazione di un percorso, viene cercato a partire dalla directory /usr/share/keymaps/piattaforma/.

loadkeys [opzioni] [file]

È importante considerare che la modifica interviene su tutte le console virtuali; pertanto, se si tenta qualcosa del genere attraverso una connessione remota si interviene sull'elaboratore con il quale si è connessi e non su quello dal quale si sta operando.

Il programma loadkeys può essere utilizzato anche solo per generare un file sorgente da utilizzare al posto di sorgenti_linux/drivers/char/defkeymap.c quando si compila un nuovo kernel.

Tabella 110.18. Alcune opzioni.

Opzione Descrizione
-m
--mktable
Emette attraverso lo standard output il contenuto di un file che può essere utilizzato al posto di sorgenti_linux/drivers/char/defkeymap.c in modo da essere incorporato nel kernel alla prossima compilazione.
-u
--unicode
Imposta la modalità Unicode.

Segue la descrizione di alcuni esempi.

110.8   Analisi della configurazione attuale con «dumpkeys»

Il programma dumpkeys (5) viene usato normalmente per emettere attraverso lo standard output la mappa attuale della tastiera.

dumpkeys [opzioni]

Attraverso le opzioni si può controllare la quantità delle informazioni ottenute e il modo in cui queste vengono visualizzate.

Tabella 110.19. Alcune opzioni.

Opzione Descrizione
-i
--short-info
Emette alcune informazioni essenziali sulla gestione attuale della tastiera.
-l
--long-info
Emette le informazioni relative all'opzione -i, assieme ai simboli che possono essere utilizzati.
-h
--help
Emette una piccola guida di utilizzo del programma, aggiungendo in coda l'elenco delle codifiche che si possono usare per la configurazione della tastiera. L'elenco delle codifiche si ottiene precisamente dallo standard error.

Segue la descrizione di alcuni esempi.

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


1) Linux console font and keytable utilities   dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere

2) Linux console font and keytable utilities   dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere

3) Linux console font and keytable utilities   dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere

4) Linux console font and keytable utilities   dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere

5) Linux console font and keytable utilities   dominio pubblico, salva la licenza particolare di alcuni tipi speciali di carattere


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

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

Valid ISO-HTML!

CSS validator!