Re: keyboard_waitforupdate not blocking?

Search this archive.

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