author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 16 Apr 2009 12:49:11 +0200 | |
changeset 39 | 46d7ec9d63bd |
parent 27 | 81a574d60c15 |
child 45 | 7197576fedcf |
permissions | -rw-r--r-- |
/** * test/demos/ncurses.c * Copyright (C) 2008 Markus Broeker * * Unicode != UTF-8 * unicode with ncursesw ( wide char) * gcc $< -lncursesw -o $@ */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <ncursesw/curses.h> #include <wchar.h> #include <locale.h> #ifndef u_char typedef unsigned char u_char; #endif #define ESCAPE 0x1B #ifndef get_wch extern int get_wch (); #endif int check_locale () { if (!setlocale (LC_CTYPE, "")) { perror ("SETLOCALE"); return EXIT_FAILURE; } return EXIT_SUCCESS; } wchar_t fucnt (WINDOW * win) { wchar_t guess; char dest[4]; int maxx; int maxy; while (guess != ESCAPE) { while ((get_wch (&guess)) != OK) /* * waiting for multibyte character */ ; maxx = getmaxx (win); maxy = getmaxy (win); dest[0] = 0; dest[1] = 0; dest[2] = 0; dest[3] = 0; if (wctomb (dest, guess) == -1) { perror ("WCTOMB"); return -1; } mvprintw (maxy / 2, maxx / 2 - 12, "UTF-8: (%2X:%2X:%2X:%2X)\t\t", (u_char) dest[0], (u_char) dest[1], (u_char) dest[2], (u_char) dest[3]); mvprintw (maxy - 1, 0, "KEY: %2lc\t", guess); mvprintw (maxy - 1, maxx - 14, "UNICODE: %4X", guess); mvprintw (maxy - 1, maxx / 2 - 10, "Press ESC to quit"); } return guess; } int main () { wchar_t x; WINDOW *win; check_locale (); win = initscr (); noecho (); x = fucnt (win); endwin (); printf ("\n"); return EXIT_SUCCESS; }