On Sun, Apr 04, 2010 at 07:55:11AM -0700, Michael Elkins wrote: > Thanks for the information. > > I'm almost able to get this working. Using use_extended_names(TRUE) now > returns a single keycode for ctrl+<UP> (kUP5). However, both tigetstr() > and key_defined() don't report that kUP5 is available (see attached > program). I didn't explain it very well - but am attaching a working version of your program. -- Thomas E. Dickey <dickey@xxxxxxxxxxxxxxxxxxxx> http://invisible-island.net ftp://invisible-island.net
#include <stdlib.h> #include <ncursesw/ncurses.h> static struct key { char *name; int code; } Keys[] = { { "kUP5", 0 }, { "kDN5", 0 }, { 0, 0 } }; int main(void) { int i; use_extended_names(TRUE); initscr(); cbreak(); noecho(); nonl(); keypad(stdscr,TRUE); for (i = 0; Keys[i].name != 0; ++i) { int code; char *s = tigetstr(Keys[i].name); if (s && (long)(s) != -1) { printw("tigetstr for %s=%s\n", Keys[i].name, s); code = key_defined(s); if (code > 0) { Keys[i].code = code; } } } addstr("press a key"); int ch = getch(); endwin(); printf("keypress=%d\n", ch); for (i=0;Keys[i].name;++i) { printf("key=%s, code=%d\n", Keys[i].name, Keys[i].code); } exit(0); }
Attachment:
signature.asc
Description: Digital signature