X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fdemo_keyok.c;h=8f4ae906bd061391a9cc615b17e2a86b7ff94723;hb=f4a8d7509dab16e7abdfb9d484c51116317b159d;hp=8724d9819ea05ab51af3a34beff13a9b55b098f1;hpb=027ae42953e3186daed8f3882da73de48291b606;p=ncurses.git diff --git a/test/demo_keyok.c b/test/demo_keyok.c index 8724d981..8f4ae906 100644 --- a/test/demo_keyok.c +++ b/test/demo_keyok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2003,2006 Free Software Foundation, Inc. * + * Copyright 2020,2022 Thomas E. Dickey * + * Copyright 2002-2006,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_keyok.c,v 1.5 2006/11/04 20:09:51 tom Exp $ + * $Id: demo_keyok.c,v 1.9 2022/12/10 23:31:31 tom Exp $ * * Demonstrate the keyok() function. * Thomas Dickey - 2002/11/23 @@ -35,13 +36,48 @@ #include #if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS +static void +usage(int ok) +{ + static const char *msg[] = + { + "Usage: demo_keyok [options]" + ,"" + ,USAGE_COMMON + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); +} +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ + int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { int lastch = ERR; + int prior = ERR; int ch; WINDOW *win; + while ((ch = getopt(argc, argv, OPTS_COMMON)) != -1) { + switch (ch) { + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); + default: + usage(ch == OPTS_USAGE); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(FALSE); + + setlocale(LC_ALL, ""); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ @@ -57,6 +93,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) while ((ch = wgetch(win)) != ERR) { const char *name = keyname(ch); + if (ch == ESCAPE && prior == ch) + break; + prior = ch; wprintw(win, "Keycode %d, name %s\n", ch, name != 0 ? name : "");