PDA

Afficher la version complète : ncurses et unicode



abgech
26/12/2005, 20h32
Bonjour à tous.

je suis un train de développer une application en C sous ncurses (eh oui, on peut très bien vivre sans environnement graphique http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif ). Cette application doit tourner dans plusieurs pays je compte donc utiliser unicode.

Mais je tombe sur un petit problème: les noms symboliques des touches spéciales sous ncurses (KEY_DOWN, KEY_UP, KEY_F(n), etc.) sont affectés aux nombres allant de 0x100 à 0x1FF. Pour unicode, cela tombe dans Latin Extended-A et une partie de Latin Extended-B (c'est à dire, entre autres, les langues slaves s'écrivant en caractères latins).

Je ne vois pas trop comment sortir de l'ambiguïté. J'ai bien une solution, amha pas trop élégante, voire lourdingue, qui consiste à récupérer (dans un module traitant de la saisie clavier), avant toute conversion d'utf-8 en ucs, les valeurs symboliques et de les rendre négatives pour les mettre dans un wchar_t, les autres valeurs étant converties en un wchar_t ucs.
Dans l'application proprement dite, un caractère ayant une valeur négative est considéré comme représentant un nom symbolique de touche est traité en conséquence.

Voilà, si quelqu'un a une meilleure idée, il est prié de ne pas se gêner. Merci d'avance.