Chris Jones <cjns1...@gmail.com> writes: [...] > Try this: > > #include <locale.h> > #include <ncurses.h> > #include <stdlib.h> > #include <stdio.h> > #include <string.h>
/* Here I need to add the following include to get wint_t on macOS X*/ #include <wctype.h> > > int ct; > wint_t unichar; > > int main(int argc, char *argv[]) > { > setlocale(LC_ALL, ""); /* make sure UTF8 */ > initscr(); > raw(); > keypad(stdscr, TRUE); > ct = get_wch(&unichar); /* read character */ > mvprintw(24, 0, "Key pressed is = %4x ", unichar); > > refresh(); > get_wch(); > endwin(); > return 0; > } > > gcc -lncursesw uni10.c -o uni10 # different lib.. > ^ My machine doesn't know about libncursesw: marigold:c arno$ ls /usr/lib/libncurses* /usr/lib/libncurses.5.4.dylib /usr/lib/libncurses.dylib /usr/lib/libncurses.5.dylib So I've compiled it with libncurses as before and it works. This is what I get: If I run the program and type 'é', I get a code of 'e9'. In python: >>> print '\xe9'.decode('latin1') é So it has been encoded using isolatin1. I really don't understand why. I'll have to investigate this further. If I change the line: setlocale(LC_ALL, ""); /* make sure UTF8 */ to setlocale(LC_ALL, "en_GB.UTF-8"); /* make sure UTF8 */ then the behaviour is the same as before (i.e. get_wch() gets called twice instantly). I'll do some more investigating (when I can think of *what* to investigate) and I will tell you my findings. Thanks -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list