doskeyb

annotate test.c @ 2:da4c014bb055

implemented kb_isdown(KB_ANY) correctly
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 23 Sep 2013 04:07:09 +0300
parents c2b210a70ce9
children
rev   line source
nuclear@0 1 #include <stdio.h>
nuclear@0 2 #include <ctype.h>
nuclear@0 3 #include <assert.h>
nuclear@0 4 #include "keyb.h"
nuclear@0 5
nuclear@0 6 int main(void)
nuclear@0 7 {
nuclear@0 8 int key;
nuclear@0 9
nuclear@0 10 /* The argument to kb_init specifies how many keypresses to buffer up.
nuclear@0 11 * If you don't need any keypress buffering, pass 0 to disable it.
nuclear@0 12 */
nuclear@0 13 kb_init(16);
nuclear@0 14
nuclear@2 15 printf("Press any key to continue ...\n");
nuclear@2 16
nuclear@2 17 /* example of active polling... The same can be done better by using
nuclear@2 18 * kb_wait()
nuclear@2 19 */
nuclear@2 20 while(!kb_isdown(KB_ANY));
nuclear@2 21 kb_getkey(); /* discard the key we just detected */
nuclear@2 22
nuclear@2 23 printf("Key tester, quit by pressing esc\n");
nuclear@0 24 for(;;) {
nuclear@0 25 kb_wait(); /* wait for any keypress */
nuclear@0 26 key = kb_getkey(); /* get the pressed key */
nuclear@0 27 assert(key != -1); /* this should never happen since kb_wait returned */
nuclear@0 28
nuclear@0 29 if(key == 27) break; /* quit on esc */
nuclear@0 30
nuclear@0 31 /* if it's a printable character print it along with the key value */
nuclear@0 32 if(isprint(key)) {
nuclear@0 33 printf("key: %d '%c'\n", key, (char)key);
nuclear@0 34 } else {
nuclear@0 35 printf("key: %d\n", key);
nuclear@0 36 }
nuclear@0 37 }
nuclear@0 38
nuclear@0 39 kb_shutdown();
nuclear@0 40 return 0;
nuclear@0 41 }