strange getch+keybhit behaviour

strange getch+keybhit behaviour

Post by simna » Sat, 23 Sep 2006 00:35:04

In the following code something strange happens ! If I keep pressed any
of ALT+Arrow, keys, they are extracted two times from buffer then getch
seems to stop; if I release and press again ALT+arrow nothing changes:
the only way to exit from this condition is press another key a single
What seems to happen is that kbhit say some keys are present in buffer
but for getch don't see any data and waits for a key. Why this happen ?
If I remove the delay all is working correctly. I've inserted a delay
to reproduce thi problem that I've found on another bigger project
where loop delay is 155ms.
Last thing: I've verified this problem only on newer motherboards !

Please help me !!
Thank you.

#include <stdio.h>
#include <dpmi.h>

int Handle()
int vv;

int lo, hi;

__dpmi_regs reg; = 0x10 << 8; /* shift 10h into AH */
__dpmi_int( 0x16, ®);

vv= ;
lo = vv & 0X00FF;
hi= ( vv & 0XFF00) >> 8;
vv=( ((lo == 0)|(lo == 224)) ? hi+256 : lo);

return vv;

} // Handle

int main(void)
int i;



} while(1);

strange getch+keybhit behaviour

Post by DJ Delori » Sat, 23 Sep 2006 00:51:30

If you're using kbhit(), try using getkey() instead of getch().

Also, you can try using bioskey() to check and read the keys.