• [^] # Re: get_wch ?

    Posté par (site web personnel, Mastodon) . En réponse au message [Résolu] Caractères composés. Évalué à 3. Dernière modification le 29 mars 2013 à 12:39.

    Ouaip, je viens d'en faire le constat, j'ai bidouillé en parallèle. J'avais lu en diagonale, j'avais même pas fait gaffe que sa demande était spécifique à ncurses.

    Au final, j'ai modifié son code pour que ça marche, et effectivement, il faut passer par get_wch, ne pas oublier le %lc pour les caractères wide, et L'é' pour définir une constante wide, sans oublier de se lier à ncursesw plutôt que ncurses, ni le setlocale.

    #include <stdio.h>
    #include <stdlib.h>
    #include <ncursesw/ncurses.h>
    #include <locale.h>
    wchar_t wch = L'é';
    int err;
    int main (int argc, char **argv)
    {
     setlocale (LC_ALL, "");
     initscr();
     raw();
     noecho();
     keypad(stdscr, TRUE);
     while(wch != KEY_F(1))
     {
     clear();
     printw("char=%lc", wch);
     refresh();
     err = get_wch(&wch);
     }
     endwin();
     return 0;
    }
    
    

    Et le fichier CMakeLists.txt que j'ai utilisé pour compiler:

    project (CURSES)
    cmake_minimum_required (VERSION 2.8)
    find_package (PkgConfig REQUIRED)
    pkg_check_modules (NCURSESW REQUIRED ncursesw)
    include_directories (${NCURSESW_INCLUDE_DIRS})
    link_directories (${NCURSESW_LIBRARY_DIRS})
    add_executable (curses main.c)
    add_definitions (${NCURSESW_CFLAGS_OTHER} -g -Wall)
    target_link_libraries (curses ${NCURSESW_LIBRARIES})