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.
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...
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).
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:
Esiste inoltre la kbd.FAQ contenuta nel pacchetto del
software di gestione della tastiera, e che dovrebbe essere già
stata installata da qualche parte nel vostro disco (di solito
/usr/doc/kbd).
Anne Baretta (
anne@ibbnet.nl) ha creato delle pagine per aiutare la
configurazione di BS/DEL; non le ho guardate, ma potrebbero
essere un buon punto di partenza.
Le trovate su
http://www.ibbnet.nl/~anne/keyboard.html
Esistono anche queste pagine (
http://electron.et.tudelft.nl/~jdegoede/fixkeys.txt) per
il problema BS/DEL; riporto questo URL solo per ribadire che
questi non sono modi con cui è possibile affrontare (e
tantomeno risolvere) il problema; testi del genere, che non
hanno alla base un serio studio e soprattutto l'uso di
terminfo, sono come una lobotomia come rimedio per il mal di
testa.
Magari funziona ma...