Cómo configurar el teclado en castellano.

Visto que hay gente que no sabe como configurar su Linux para el soporte de 
teclado latino (es su nombre correcto, concretamente mediterraneo-sur), hay va 
un texto de mi cocina para ayudares.
 
Como configurar el maldito teclado para que salgan todos los cr cteres
iso_8859.
 
Vamos a empezar por el modo texto que es el ms sencillo :
 
Redhat :
 
Esta tiene un modo de configuración que se acerca mucho al SysV, tendr s 
que editar /etc/sysconfig/keyboard y a¤adir :
 
KEYTABLE="/usr/lib/kbd/keytables/es.map"
 
I luego mediante control-panel, a¤adir keytable al nivel 3 del SysV config.
 
Slackware :
 
A¤adir al fichero : /etc/rc.d/rc.local
 
/usr/bin/loadkeys /usr/lib/kbd/keytables/es.map
 
Otros prefieren crear un /etc/rc.d/keymap y llamarlo desde el rc.local, 
como la forma de iniciar el ordenador es totalmente folclorica, hazlo 
como mejor lo entiendas.
 
 
Fichero : /usr/lib/kbd/keytables/es.map
 
--------
 
keycode   0 =
keycode   1 = Escape           Escape          
        alt     keycode   1 = Meta_Escape     
keycode   2 = one              exclam    bar      
        alt     keycode   2 = Meta_one        
keycode   3 = two              quotedbl at           
        control keycode   3 = nul             
        alt     keycode   3 = Meta_two        
keycode   4 = three           periodcentered        numbersign
        control keycode   4 = Escape          
        alt     keycode   4 = Meta_three      
keycode   5 = four             dollar          asciitilde
        control keycode   5 = Control_backslash
        alt     keycode   5 = Meta_four       
keycode   6 = five             percent         
        control keycode   6 = Control_bracketright
        alt     keycode   6 = Meta_five       
keycode   7 = six              ampersand notsign
        control keycode   7 = Control_asciicircum
        alt     keycode   7 = Meta_six        
keycode   8 = seven            slash            braceleft
        control keycode   8 = Control_underscore
        alt     keycode   8 = Meta_seven      
keycode   9 = eight            parenleft        bracketleft
        control keycode   9 = Delete          
        alt     keycode   9 = Meta_eight      
keycode  10 = nine             parenright       bracketright
        alt     keycode  10 = Meta_nine       
keycode  11 = zero             equal       braceright      
        alt     keycode  11 = Meta_zero       
keycode  12 = apostrophe       question       backslash       
        control keycode  12 = Control_underscore
        alt     keycode  12 = Meta_minus      
keycode  13 = exclamdown questiondown           asciitilde
        alt     keycode  13 = Meta_equal      
keycode  14 = Delete           Delete          
        control keycode  14 = Control_underscore
        alt     keycode  14 = Meta_Delete     
keycode  15 = Tab              Tab             
        alt     keycode  15 = Meta_Tab        
keycode  16 = q               
keycode  17 = w               
keycode  18 = e               
keycode  19 = r               
keycode  20 = t               
keycode  21 = y               
keycode  22 = u               
keycode  23 = i               
keycode  24 = o               
keycode  25 = p               
!keycode  26 =   dead_grave    asciicircum      bracketleft
keycode  26 =   dead_grave    dead_circumflex      bracketleft
        control keycode  26 = Escape          
        alt     keycode  26 = Meta_bracketleft
keycode  27 = plus     asterisk       bracketright
        control keycode  27 = Control_bracketright
        alt     keycode  27 = Meta_bracketright
keycode  28 = Return          
        alt     keycode  28 = 0x080d          
keycode  29 = Control         
keycode  30 = a               
keycode  31 = s               
keycode  32 = d               
keycode  33 = f               
keycode  34 = g               
keycode  35 = h               
keycode  36 = j               
keycode  37 = k               
keycode  38 = l               
keycode  39 = ntilde Ntilde          
        alt     keycode  39 = Meta_semicolon  
keycode  40 = dead_acute     dead_diaeresis     braceleft              
        control keycode  40 = Control_g       
        alt     keycode  40 = Meta_apostrophe 
keycode  41 = masculine ordfeminine backslash           
        control keycode  41 = nul             
        alt     keycode  41 = Meta_grave      
keycode  42 = Shift           
keycode  43 = ccedilla          Ccedilla       braceright      
        control keycode  43 = Control_backslash
        alt     keycode  43 = Meta_backslash  
        shift alt keycode 43 = Meta_asciitilde
keycode  44 = z               
keycode  45 = x               
keycode  46 = c               
keycode  47 = v               
keycode  48 = b               
keycode  49 = n               
keycode  50 = m               
keycode  51 = comma  semicolon           
        alt     keycode  51 = Meta_comma      
        shift alt keycode 51 = Meta_less
keycode  52 = period       colon
        alt     keycode  52 = Meta_period     
        shift alt keycode 52 = Meta_greater
keycode  53 = minus      underscore
        control keycode  53 = Delete          
        alt     keycode  53 = Meta_slash      
keycode  54 = Shift           
keycode  55 = KP_Multiply     
keycode  56 = Alt             
keycode  57 = space            space           
        control keycode  57 = nul             
        alt     keycode  57 = Meta_space      
keycode  58 = Caps_Lock       
keycode  59 = F1               F11              Console_13      
        control keycode  59 = F1              
        alt     keycode  59 = Console_1       
        control alt     keycode  59 = Console_1       
keycode  60 = F2               F12              Console_14      
        control keycode  60 = F2              
        alt     keycode  60 = Console_2       
        control alt     keycode  60 = Console_2       
keycode  61 = F3               F13              Console_15      
        control keycode  61 = F3              
        alt     keycode  61 = Console_3       
        control alt     keycode  61 = Console_3       
keycode  62 = F4               F14              Console_16      
        control keycode  62 = F4              
        alt     keycode  62 = Console_4       
        control alt     keycode  62 = Console_4       
keycode  63 = F5               F15              Console_17      
        control keycode  63 = F5              
        alt     keycode  63 = Console_5       
        control alt     keycode  63 = Console_5       
keycode  64 = F6               F16              Console_18      
        control keycode  64 = F6              
        alt     keycode  64 = Console_6       
        control alt     keycode  64 = Console_6       
keycode  65 = F7               F17              Console_19      
        control keycode  65 = F7              
        alt     keycode  65 = Console_7       
        control alt     keycode  65 = Console_7       
keycode  66 = F8               F18              Console_20      
        control keycode  66 = F8              
        alt     keycode  66 = Console_8       
        control alt     keycode  66 = Console_8       
keycode  67 = F9               F19              Console_21      
        control keycode  67 = F9              
        alt     keycode  67 = Console_9       
        control alt     keycode  67 = Console_9       
keycode  68 = F10              F20              Console_22      
        control keycode  68 = F10             
        alt     keycode  68 = Console_10      
        control alt     keycode  68 = Console_10      
keycode  69 = Num_Lock        
keycode  70 = Scroll_Lock      Show_Memory      Show_Registers  
        control keycode  70 = Show_State      
        alt     keycode  70 = Scroll_Lock     
keycode  71 = KP_7            
        alt     keycode  71 = Ascii_7         
keycode  72 = KP_8            
        alt     keycode  72 = Ascii_8         
keycode  73 = KP_9            
        alt     keycode  73 = Ascii_9         
keycode  74 = KP_Subtract     
keycode  75 = KP_4            
        alt     keycode  75 = Ascii_4         
keycode  76 = KP_5            
        alt     keycode  76 = Ascii_5         
keycode  77 = KP_6            
        alt     keycode  77 = Ascii_6         
keycode  78 = KP_Add          
keycode  79 = KP_1            
        alt     keycode  79 = Ascii_1         
keycode  80 = KP_2            
        alt     keycode  80 = Ascii_2         
keycode  81 = KP_3            
        alt     keycode  81 = Ascii_3         
keycode  82 = KP_0            
        alt     keycode  82 = Ascii_0         
keycode  83 = KP_Period       
        altgr   control keycode  83 = Boot            
        control alt     keycode  83 = Boot            
keycode  84 = Last_Console    
keycode  85 =
keycode  86 = less greater
        alt     keycode  86 = Meta_less       
        shift alt keycode 86 = Meta_bar
keycode  87 = F11              F11              Console_23      
        control keycode  87 = F11             
        alt     keycode  87 = Console_11      
        control alt     keycode  87 = Console_11      
keycode  88 = F12              F12              Console_24      
        control keycode  88 = F12             
        alt     keycode  88 = Console_12      
        control alt     keycode  88 = Console_12      
keycode  89 =
keycode  90 =
keycode  91 =
keycode  92 =
keycode  93 =
keycode  94 =
keycode  95 =
keycode  96 = KP_Enter        
keycode  97 = Control         
keycode  98 = KP_Divide       
keycode  99 = Control_backslash
        control keycode  99 = Control_backslash
        alt     keycode  99 = Control_backslash
keycode 100 = AltGr           
keycode 101 = Break           
keycode 102 = Find            
keycode 103 = Up              
keycode 104 = Prior           
        shift   keycode 104 = Scroll_Backward 
keycode 105 = Left            
        alt     keycode 105 = Decr_Console
keycode 106 = Right
        alt     keycode 106 = Incr_Console
keycode 107 = Select          
keycode 108 = Down            
keycode 109 = Next            
        shift   keycode 109 = Scroll_Forward  
keycode 110 = Insert          
keycode 111 = Remove          
        altgr   control keycode 111 = Boot            
        control alt     keycode 111 = Boot            
keycode 112 =
keycode 113 =
keycode 114 =
keycode 115 =
keycode 116 =
keycode 117 =
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =
string F1 = "\033[[A"
string F2 = "\033[[B"
string F3 = "\033[[C"
string F4 = "\033[[D"
string F5 = "\033[[E"
string F6 = "\033[17~"
string F7 = "\033[18~"
string F8 = "\033[19~"
string F9 = "\033[20~"
string F10 = "\033[21~"
string F11 = "\033[23~"
string F12 = "\033[24~"
string F13 = "\033[25~"
string F14 = "\033[26~"
string F15 = "\033[28~"
string F16 = "\033[29~"
string F17 = "\033[31~"
string F18 = "\033[32~"
string F19 = "\033[33~"
string F20 = "\033[34~"
string Find = "\033[1~"
string Insert = "\033[2~"
string Remove = "\033[3~"
string Select = "\033[4~"
string Prior = "\033[5~"
string Next = "\033[6~"
string F21 = ""
string F22 = ""
string F23 = ""
string F24 = ""
string F25 = ""
string F26 = ""
--------
 
 
Cada tecla se corresponde a un keycode, a cada keycode se le asigna 
una funci¢n, seg£n se aprieta :
 
- La tecla, May£sculas-Tecla, Altgr-tecla
- Cntrl-tecla, May£sculas-Ctrl-Tecla
- Alt-tecla, May£sculas-Ctrl-Tecla
- Ctrl-Alr-tecla, May£sculas-Ctrl-Tecla
 
A cada asignaci¢n se le hace corresponder el caracter deseado, 
tambien puedes asignar seudo variables, del estilo F1, F16, y luego 
asignar un string a esa variable, nada impide asignar el string 
"ls -la" al string pepe y ese asignarlo al alt keycode 38 (l).
 
La tilde la encontrar s en AltGr-4 y AltGr-­ (Exclamaci¢n abierta)
 
La definici¢n de los nombres los encontraras en : man keytables :-)
 
Como manejar el teclado en X11
 
Este es el mareo para nosotros, latinos, parece ser que el teclado 
se rebela contra nosotros cuando intentamos escribir un acento o un 
car cter de los nuestros.
 
Salvo los Mejicanos y Porto Rique¤os pocos latinos pirulan por los 
EEUU y menos por el MIT. X11, como casi todos los productos americanos, 
ha sido creado por americanos para americanos, nosotros los europeos 
venimos detr s.
 
Existe un convenio para poder manejar car cteres otros que los 
anglo-sajones a nosotros los latinos no ha tocado el iso-8859-1, pero 
ojo este define solo la representacion hexadecimal de un car cter, 
siendo libre la representaci¢n gr fica de este, es decir como lo veremos 
en pantalla o una impresora.
 
X11 se maneja por eventos, todo lo que sucede es un evento, el apretar 
una tecla es un evento, mover el raton otro, apretar la tecla AltGr 
otro, etc...
 
Normalmente desde X11R5 existe una forma estandar de manejar el teclado, 
pero por desgracia, existen muchos clientes (programas) X11 que manejan
el teclado por su cuenta, si el programa ha sido construido con las
llamadas est ndar a X11, nuestros car cteres compuestos (acento-car cter)
se ver n correctamente, sino lo m s normal es que solo nos salga el £ltimo
car cter tecleado, el que se corresponde a un car cter imprimible, dado que
el primero es un dead-key o car cter muerto, un car cter muerto es ese que
se "conjuga" con el siguiente, ej :
 
` (acento grave) + a => …
' (acento agudo) + espacio => '
~ (ascii tilde) + n => ¤
 
Para los que trabajan con X11R6 (3.1.1 o superior) y una libc >= 5.2.XX,
formato elf para los binarios, para los dem s, lo siento, que hagan el 
cambio.
 
Primero vamos a indicar al servidor X que vamos a usar los car cteres
extendidos y que tecla vamos a usar para ese efecto :
 
RedHat :
 
Fichero : /etc/X11/XF86Config
 
------
 
Esto es en la : Section "Keyboard" :
 
    LeftAlt     Meta
    RightAlt    ModeShift
    RightCtl    Compose
    ScrollLock  ModeLock
 
------
 
Slackware :
 
Fichero : /donde_pueda_encontrarse/XF86Config
 
Puede estar en /etc o en /usr/lib/X11
 
------
 
Lo mismo que para RedHat
 
------
 
 
Normalmente estos comandos estan comentados (#), con quitar la 
almohadilla es suficiente.
 
Esto solo permite recojer el mapa de teclado definido en ese momento 
en el kernel (loadkeys), si quieres algo especial hay que "mapear" el 
teclado, para eso se usa el comando xmodmap :
 
xmodmap /etc/X11/xmodmap_default
 
Fichero : /etc/X11/xmodmap_default
 
------
 
keycode 22 = 0xff08
keycode 26 = e E eacute Eacute
keycode 30 = u U uacute Uacute 
keycode 31 = i I iacute Iacute
keycode 32 = o O oacute Oacute
keycode 38 = a A aacute Aacute
------
 
Para probar el teclado, abres un xterm y editas un fichero con el vi 
(elvis o vim) y creas una linea con :
 
'a `a ^a ¨ ¤
 
Tendra que salir
 
  … ƒ ¨ ¤
 
Si no es el caso, haz :
 
xmodmap /etc/X11/xmodmap_default
 
y repites la operaci¢n.
 
Si poniendo los ficheros de configuraci¢n correctos no te salen acentos, 
tu problema puede estar en otro sitio.
 
Una vez lo tengas correcto, incluye la orden en el fichero $HOME/Xclients
 
Esto que he explicado funciona, no soy el £nico que tiene acentos en X11.
 
Acentos en la linea de comandos
 
En Unix no se recomienda el uso de car cteres superiores a 0x7f en la linea
de comandos, nuestros caracteres especiales estan por encima de esa barrera.
 
Pero si te empe¤as, a¤ades en tu fichero ~/.bashrc :
 
------
# No se elimina el octavo bit de los caracteres introducidos
set meta-flag on
 
# No se elimina el octavo bit de los caracteres visualizados
set output-meta on
 
# No se convierten los caracteres >127 a combinaciones ESC-XXX
set convert-meta off
------
 
Asi tendras lo que deseas, que tengas problemas con utilidades que machaquen
el octavo bit, ese ser  tu problema :-)
 
Ciertos programas no reaccionan correctamente a las dead_keys , un ejemplo 
es el jed :
 
Si apretamos ', X11 envia un evento de teclado al cliente indicand¢le que
se ha pulsado la dead_acute, el driver de teclado esperar  la siguiente
pulsaci¢n para enviar el car cter correcto al cliente, si tecleas a, este
enviar    al cliente, pero si el programa no entiende de car cteres > 0x7f
en entrada, sino que los construye, tendras que enviarle agudo+agudo+letra-a
para que este lo interprete como  , en X11 el agudo es un dead_key para 
enviar acento-agudo tienes que teclear 2 veces el acento agudo o agudo+
espacio, es dedir :
 
agudo+agudo+agudo+agudo+letra-a
 
o bien
 
agudo+espacio+agudo+espacio+letra-a
 
­ Complicado, he !
 
Usa el vim o gvim, es mejor. Otros manejan, que envidia (sana), el emacs
 
Espero que esto ayudar  a la compreensi¢n del uso del teclado en castellano, 
valenciano, gallego, bable, euskerra, catal n y otros cuyo nombre siento 
no recordar.