Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
ncurses et unicode
Envoyé par: abgech

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 :-)). 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 à une meilleure idée, il est prié de ne pas se gêner. Merci d'avance.



..................
Parce qu'il avait une clôture à utiliser, l'homme invente la propriété privée. --- F. Cavanna

Poste le Monday 26 December 2005 19:29:38
Répondre     Citer    
Re: ncurses et unicode
Envoyé par: mioute

il semblerai que ncurses supporte les caractères unicode... (sous debian il y a deux packages ncurses et ncursesw pour 'wide-character') utilises tu le bon ?

Poste le Tuesday 27 December 2005 18:37:25
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
ncurses et unicode
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons