diff options
Diffstat (limited to 'libslang/demo/keypad.c')
-rw-r--r-- | libslang/demo/keypad.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libslang/demo/keypad.c b/libslang/demo/keypad.c new file mode 100644 index 0000000..ac2a736 --- /dev/null +++ b/libslang/demo/keypad.c @@ -0,0 +1,52 @@ +/* This routine illustrates the keypad interface. To implement + * detection of a single escape character, allow for timeout. + */ + +#include <stdio.h> +#include <slang.h> + +#include "demolib.c" + +#define TIMEOUT 2 /* 2/10 of a second */ + +static int getch (void) +{ + int ch; + + while (0 == SLang_input_pending (1000)) + continue; + + ch = SLang_getkey (); + + if (ch == 033) /* escape */ + { + if (0 == SLang_input_pending (TIMEOUT)) + return 033; + } + + SLang_ungetkey (ch); + + return SLkp_getkey (); +} + + +int main (int argc, char **argv) +{ + int ch; + + (void) argc; (void) argv; + + if (-1 == demolib_init_terminal (1, 0)) + return 1; + + fprintf (stderr, "This program illustrates the slkeypad facility.\n"); + fprintf (stderr, "Press any key ('q' quits).\n"); + while ('q' != (ch = getch ())) + { + fprintf (stderr, "Keysym: %d\r\n", ch); + } + + demolib_exit (0); + + return 0; +} |