From: Jay Link (jlink@ilbbs.com)
Date: Wed 19 Sep 2001 - 21:31:41 IDT
> It seems that keyboard_waitforupdate doesn't block properly. I have > a loop like: > > while(1) { > keyboard_waitforupdate(); > if(keyboard_keypressed(SCANCODE_ESCAPE)) > break; > } > > that sucks up 100% of cpu. what am I missing? I don't immediately see anything wrong. I assume you begin with keyboard_init(). This probably wouldn't be any better, but you could try it: while (!keyboard_keypressed(SCANCODE_ESCAPE)) { keyboard_update(); } Maybe you don't need raw keyboard mode, anyway? You could try something like this: int input; input = vga_getch(); if (input == '\33') { while (input != 0) { input = vga_getkey(); } } This will scan for the Escape key, as well as the arrows and the Function keys. If the first value returned by vga_getkey() is 0 (i.e., nothing), then you know if was the Esc key. Otherwise, it was something else. For example, here we can look for Esc and the arrows: int input; input = vga_getch(); if (input == '\33') { input = vga_getkey(); if (input == 0) { /* Esc key */ } else { if (input == 27) { input = vga_getkey(); } if (input == 91) { input = vga_getkey(); } if (input == 79) { input = vga_getkey(); } if (input == 65) { /* up arrow */ } else if (input == 66) { /* down arrow */ } else if (input == 67) { /* right arrow */ } else if (input == 68) { /* left arrow */ } } } ------------------------------------------------------------------ Unsubscribe: To: listbot@svgalib.org Body: unsubscribe linux-svgalib
This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:24 IST