Linux, clavier QWERTY et accents...
Si pour développer un clavier QWERTY reste vraiment pratique, ça devient un peu le bagne dès qu'il s'agit d'écrire une lettre, un CV ou tout autre document un tant soit peu officiel. Après avoir cherché un peu sur Google j'ai trouvé deux techniques qui permettent de retrouver nos accents, nos cédilles, et même les caractères spéciaux des autres langues...
La première façon de procéder est de changer à la volée la map[1] du clavier.
Il faut d'abord choisir une combinaison de touches qui permettra de déclencher le changement de map du clavier. étant donné que je travaille aussi sous windows, j'ai pris l'habitude de changer de map avec les touches Alt + Shift ; je garderai donc cette combinaison sous Linux.
Dans le fichier de configuration du serveur X (dans mon cas /etc/X11/xorg.conf), j'ai rajouté deux lignes :
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
+ Option "XkbLayout" "us,fr"
+ Option "XkbOptions" "grp:alt_shift_toggle"
Il suffit donc de rajouter dans la valeur de l'option XkbLayout les différents mapping que vous souhaitez avoir à disposition. Dans mon cas, je dispose des mapping qwerty américain et azerty français.
L'option XkbOptions, quant à elle, contiendra la combinaison de touches, chaque touche étant séparée par un '_' et la combinaison étant suivie de '_toggle'.
Une fois les modifications faites, il suffit de relancer le serveur X, et ça marche 
La seconde solution ne change pas le mapping global du clavier, et de ce fait, me convient mieux.
Pour ceux qui ont déjà un peu travaillé sur des stations Sun, nous allons tout simplement remapper une touche du clavier afin qu'elle se comporte comme la touche Compose de Sun.
La touche Compose permet de composer des caractères indexistants sur le clavier à partir de ceux qui existent déjà.
Par exemple, un 'é' sera composé d'un 'e' et d'une apostrophe.
Étant donné que je ne me sers jamais de la touche Shift de droite, j'ai décidé de la remapper en touche Compose.
Pour cela, j'ai dû récupérer le keycode de la touche avec xev :
pierre@isis ~ $ xev
Outer window is 0x2000001, inner window is 0x2000002
PropertyNotify event, serial 8, synthetic NO, window 0x2000001,
atom 0x27 (WM_NAME), time 13472503, state PropertyNewValue
... ... ... ...
Une fois la souris sur la fenêtre créée par xev, il faut appuyer une fois sur la touche Shift de droite ; l'output suivant s'affiche alors dans xev :
KeyPress event, serial 31, synthetic NO, window 0x2000001, root 0x9f, subw 0x2000002, time 13481421, (37,32), root:(274,84), state 0x10, keycode 62 (keysym 0xff20, Shift_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False
Si votre ouput n'est pas exactement le même, ce n'est pas un problème, tant que le keycode (ici keycode 62) est bien affiché.
Une fois le keycode en notre possession, il ne reste plus qu'à créer un fichier ~/.Xmodmap qui contiendra le texte suivant :
keycode 62 = Multi_key
On sauvegarde le fichier, on relance X et on relance xev. Si l'on appuie sur la touche Shift de droite, xev affiche alors l'ouput suivant (ou quelque chose de similaire) :
KeyPress event, serial 28, synthetic NO, window 0x2000001, root 0x9f, subw 0x2000002, time 13479118, (37,32), root:(274,84), state 0x10, keycode 62 (keysym 0xff20, Multi_key), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: True
On remarque que 'Multi_key' a bien remplacé 'Shift_R'. Maintenant, si l'on tappe la suite de touches suivante :
Multi_key puis ' puis e, nous obtenons un é.
Avec Multi_key puis , puis c, nous obtenons un ç
Avec Multi_key puis Shift + /, nous obtenons un ¿
Il faut juste le temps de s'habituer aux suites/combinaisons de touches pour obtenir les accents et autres, mais ça vient relativement rapidement :).
Notes
[1] Carte qui définie l'arrangement des touches sur un clavier
Par Pierre | mercredi 15 juin 2005 à 14:47 | comp
|
|




Commentaires
Le lundi 24 juillet 2006 à 14:28, par misterniark :: #
Le lundi 4 septembre 2006 à 08:24, par Pierre :: #
Le dimanche 3 février 2008 à 10:55, par olive :: #
Le mercredi 6 février 2008 à 06:59, par Pierre :: #
Ajouter un commentaire