/* * compile with gcc keyname.c -o keyname -lncursesw * * program crashes when characters such as * - € (U+20AC) * - ツ (U+30C4) * - Щ (U+0429) * are entered. */ #include #include #include int main(void) { wint_t c; int rc; if (!setlocale(LC_CTYPE,"") || !setlocale(LC_MESSAGES,"")) { fprintf(stderr,"error: unable to initialize locales!\n"); return 1; } initscr(); cbreak(); noecho(); nonl(); keypad(stdscr, TRUE); doupdate(); start_color(); use_default_colors(); wbkgdset(stdscr, ' '); rc = wget_wch(stdscr,&c); endwin(); printf("key = %lc (rc = %d)\n", c, rc); printf("keyname = %s\n", keyname(c)); fflush(stdout); printf("key_name = %s\n", key_name((wchar_t)c)); fflush(stdout); return 0; }