From c355263ecb372c2a4981241ed43a0c2719563db3 Mon Sep 17 00:00:00 2001 From: hpa Date: Wed, 1 Dec 2004 02:45:03 +0000 Subject: [PATCH] getkey() demo --- com32/modules/keytest.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 com32/modules/keytest.c diff --git a/com32/modules/keytest.c b/com32/modules/keytest.c new file mode 100644 index 0000000..e9af9ac --- /dev/null +++ b/com32/modules/keytest.c @@ -0,0 +1,79 @@ +#ident "$Id$" +/* ----------------------------------------------------------------------- * + * + * Copyright 2004 H. Peter Anvin - All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, Inc., 53 Temple Place Ste 330, + * Bostom MA 02111-1307, USA; either version 2 of the License, or + * (at your option) any later version; incorporated herein by reference. + * + * ----------------------------------------------------------------------- */ + +/* + * keytest.c + * + * Test the key parsing library + */ + +#include +#include +#include + +#include /* Provided by libutil */ +#include + +static void cooked_keys(void) +{ + int key; + + printf("[cooked]"); + + for(;;) { + key = get_key(stdin); + + if ( key == 0x03 ) { + printf("[done]\n"); + exit(0); + } else if ( key == '?' ) + return; + + if ( key >= 0x20 && key < 0x100 ) { + putchar(key); + } else { + printf("[%04x]", key); + } + } +} + +static void raw_keys(void) +{ + int key; + + printf("[raw]"); + + for(;;) { + key = getc(stdin); + + if ( key == 0x03 ) { + printf("[done]\n"); + exit(0); + } else if ( key == '!' ) + return; + + printf("<%02x>", key); + } +} + +int main(void) +{ + console_ansi_raw(); + + printf("Press keys, end with Ctrl-C...\n"); + + for (;;) { + cooked_keys(); + raw_keys(); + } +} -- 2.7.4