Next Previous Contents

2. La tastiera

La gestione della tastiera di Linux è organizzata su piú ``strati'' o livelli di astrazione il cui numero, tre, non ci è di grande interesse. Quello che interessa a noi è il risultato, ovvero una gestione della tastiera indipendente dall'hardware (ricordo che Linux è un sistema operativo multipiattaforma e non funziona solo sui PC compatibili...) e facilmente riconfigurabile.

Infatti è sufficiente modificare l'interfaccia tra uno strato e l'altro per ottenere gli effetti desiderati: nel nostro caso il perfetto funzionamento della tastiera italiana.

2.1 Console

Per ottenere la configurazione della tastiera italiana in console è sufficiente impartire il comando loadkeys it.map; questo comando non fa altro che caricare la tabella di descrizione della tastiera (keymap, appunto) it.map al posto di quella di default ``inserita'' nel kernel.

Solitamente è la procedura di installazione che si preoccupa di chiedere all'utente quale tastiera usare e a inserire un comando come quello qui sopra in uno degli script di avvio del sistema.

In Debian esiste il comando kbdconfig che permette di riconfigurare la tastiera senza editare a mano gli script di avvio, le altre distribuzioni avranno di sicuro sistemi simili...

Questa Keymap inoltre supporta alcune aggiunte essenziali per i programmatori, come le parentesi graffe, il carattere tilde e il carattere apice inverso ottenuti premendo rispettivamente [AltGr+8], [AltGr+9], [AltGr+0] e [AltGr+'].

Se si vuole indagare ulteriormente nella gestione della tastiera nella console Linux, si può far riferimento ai comandi (e alle rispettive manpage) showkey(1) è dumpkey(1), oltre ovviamente al già citato loadkey(1).

Keymap alternative

Nonostante questa keymap sia già molto buona, si sta cercando di fare meglio; in particolare Lorenzo Maria Catucci ( lorenzo@argon.roma2.infn.it) sta lavorando a una serie di keymap per console e per X congruenti e possibilmente senza problemi. Trovate le bozze di queste keymap nel sito dell'Italian HOWTO http://www.pluto.linux.it/~gaio/Italian-HOWTO.

Nello stesso sito potete trovare inoltre delle keymap alternative che permettono di ``emulare'' la tastiera Amiga e cose simili...

2.2 XFree86

Di recente (dalla versione 3.2 in poi...) XFree ha completamente cambiato la gestione della tastiera, aggiungendo una estensione che si chiama ``XKeyboard'' (o XKBD), e qualche astrusa voce in più nel file di configurazione. Il nuovo sistema è effettivamente migliore, ma talmente configurabile che c'è voluto un annetto perché venisse metabolizzato e quindi venissero prodotte le keymap secondo queste nuove specifiche...

Il problema vero è che xf86config(1) non riesce più a gestire in fase di configurazione automatica la tastiera italiana (o meglio, per trovare uno straccio di riferimento all'Italia occorre muoversi per un po' tra complicate opzioni...), ma niente paura.

Si può benissimo completare la configurazione scegliendo una tastiera predefinita (come quella americana) e poi editare il file /etc/X11/XF86Config aggiungendo o modificando le informazioni:


        Section "Keyboard"

        [...]

        LeftAlt      Meta
        RightAlt     ModeShift
        
        # ovviamente se avete una tastiera W95
        # al posto di pc102 ci va pc104 (o pc105)!
        #
        Protocol     "Standard"
        XkbRules     "xfree86"
        XkbModel     "pc102"
        XkbLayout    "it"

        EndSection

Le prime due righe, in particolare, servono ad avvisare X che abbiamo intenzione di usare [AltGr] come modificatore ModeShift per poter utilizzare, come siamo abituati, parentesi quadre, at e diesis. (Non vi ricordate? Era una di quelle imbarazzanti domande che vi ha posto xf86config(1)...)

Questa definizione di tastiera è leggermente diversa (come disposizione dei tasti ``nascosti'') di quella in console (ad esempio le parentesi graffe sono ora in [AltGr+7], [AltGr+0]).

XF86Setup(1)

In alternativa è possibile usare il nuovo programma di configurazione di XFree, presente dalla versione 3.2 e seguenti, XF86Setup(1); la configurazione di X11 è molto piú intuitiva con XF86Setup che con xf86config: per un novellino (ma anche non) può essere utile anche perché permette di controllare al volo se le impostazioni sono corrette (da Giovanni Bortolozzo).

Per poter utilizzare XF86Setup occorre installare il server VGA16 in aggiunta a quello appropriato per la propria scheda video.

Backspace e Delete

Un problema noioso, che però non riguarda solo la tastiera italiana, è che in X gli effetti della pressione dei tasti BackSpace e Canc coincidono (ambedue fanno Del, ovvero cancellano il carattere sul cursore; o ambedue fanno BackSpace, ovvero cancellano il carattere alla sinistra del cursore, dipende di solito dal tasso di umidità dell'aria... ;-).

Questo è un problema comune a tutti gli utenti Linux, ed inoltre esistono ottimi documenti che spiegano come sistemare (o mettere una pezza) a questo problema; per puntatori vedi alla fine di questa sezione.

Questo comportamento è dovuto in maggior parte da incompatibilità ``storiche'' tra librerie/applicazioni/metodi di programmazione, e anche in distribuzioni come Debian che hanno forzato una unica politica di accesso ai terminali (con il database terminfo(5)) il problema con alcune (vecchie) applicazioni rimane.

Insomma, è un problema delle applicazioni e non di Linux.

Per programmi (o sistemi) che usano ancora termcap(5) è molto probabile che occorra una correzione della definizione di xterm. Non è proprio il caso di inserire una cosa del genere in questo HOWTO, mal che vada nel sito dell'Italian-HOWTO http://www.pluto.linux.it/~gaio/Italian-HOWTO; è comunque piú corretto cercare una versione dell'applicazione compilata con terminfo oppure... cambiare applicazione! ;)

Per comprendere meglio queste cose sono letture consigliate le manpage di termcap(5) e terminfo(5), oltre a quanto riportato alla fine di questa sezione.

MetroX e tastiera italiana

Ho visto che piú persone hanno problemi con la tastiera sotto Metro-X, non so se intanto il problema è stato risolto, eventualmente segnalatemelo che elimino questa sezione.

Per risolvere in modo pulito e definitivo il problema modificate questa sezione del file /etc/X11/XMetroconfig


        Section "Keyboard"
                LeftAlt         Meta
                RightAlt        ModeShift
                Protocol        "Standard"
                XkbKeymap       "xfree86(it)"   # al posto di "metro(it)"
                XkbModel        "pc105"         # solo se avete i tasti W95
                XkbRules        "xfree86"
                XkbLayout       "it"
        EndSection

Se prima di farlo guardate alla fine del file /var/log/Xerrors, scoprirete quale è il problema: mancano i file kbd della Metro (da Andrea Tuccia).

Keymap alternative

Anche qui sono state raccolte una serie di keymap alternative a quelle ufficiali presenti nelle distribuzioni; trovate anche queste al sito http://www.pluto.linux.it/~gaio/Italian-HOWTO.

Inoltre Dino Paganello mi segnala il programma xrus(1) che permette di fare lo switch al volo tra diverse descrizioni di tastiera (lui lo usa per passare la volo dalla tastiera americana a quella italiana).

2.3 Per maggiori informazioni

Ulteriori informazioni, specialmente se si vuole migliorare la gestione della tastiera (aggiungere i tasti cursore in determinate applicazioni, macro ai tasti funzione, ...), si possono trovare in:


Next Previous Contents