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 } |