jeudi 28 mai 2009

Obtenir les accents avec un clavier QWERTY

Si comme moi vous utilisez un clavier dvorak ou bien qwerty, vous avez déjà dû être confronté au problème des accents français. Une solution consiste à remapper une des touches que vous n'utilisez pas en touche de composition. Pour ceux qui connaissent, c'est la solution employée sous Sun ou avec le mapping JLG sous Windows.
En gros, on tape Touche_De_Composition puis ' puis e et on obtient é !

Cette astuce a été trouvée sur le blog de Pierre. Un grand merci à lui pour la solution.

Il faut donc tout d'abord décider quelle touche remapper. Personnellement, j'ai choisi la touche 'End', car je ne l'utilise jamais, et qu'elle est placée pratiquement sur mon clavier. Vous pouvez cependant choisir une autre touche, comme le Shift de droite.
Il faut ensuite déterminer quel est le code de la touche que vous aurez choisi.
Pour cela lancez le petit utilitaire xev dans votre terminal préféré, puis placez votre souris sur la fenêtre qui vient de s'ouvrir, et pressez la touche de votre choix.
Vous devriez obtenir quelque chose comme:
KeyRelease event, serial 24, synthetic NO, window 0x1800001,
root 0x78, subw 0x0, time 287563212, (508,160), root:(509,843),
state 0x0, keycode 103 (keysym 0xff20, End), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Je viens d'appuyer sur la touche 'End'. Notez le keycode (103 dans mon cas), et créez un fichier .Xmodmap à votre racine (~/.Xmodmap).
Mettez-y la ligne suivante:
keycode 103 = Multi_key
Puis sauvez, et redémarrez X.

Relancez alors xev, pressez la touche, et vous devriez maintenant obtenir:
KeyRelease event, serial 24, synthetic NO, window 0x1800001,
root 0x78, subw 0x0, time 287563212, (508,160), root:(509,843),
state 0x0, keycode 103 (keysym 0xff20, Multi_key), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Vous pouvez maintenant taper vos accents:
Multi_key puis ' puis e donne é
Multi_key puis ` puis a donne à
Multi_key puis , puis c donne ç !

Easy peasy !!!