X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "simnav" Subject: strange getch+keybhit behaviour Newsgroups: comp.os.msdos.djgpp User-Agent: XanaNews/1.17.5.9 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 NNTP-Posting-Host: $$_kwfildoscwo.news.x-privat.org Message-ID: <4512b128_2@x-privat.org> Organization: X-Privat NNTP Server - http://www.x-privat.org Lines: 59 X-Authenticated-User: $$wx91v7i25od8blf X-Complaints-To: abuse AT x-privat DOT org Date: 21 Sep 2006 17:35:04 +0200 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com 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 time. 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. Simone #include #include int Handle() { int vv; int lo, hi; __dpmi_regs reg; reg.x.ax = 0x10 << 8; /* shift 10h into AH */ __dpmi_int( 0x16, ®); vv= reg.x.ax ; lo = vv & 0X00FF; hi= ( vv & 0XFF00) >> 8; vv=( ((lo == 0)|(lo == 224)) ? hi+256 : lo); return vv; } // Handle int main(void) { int i; do { i=0; while(kbhit()) { fprintf(stdout,"i=%d\n",i++); fprintf(stdout,"%c\n",getch()); } fprintf(stdout,"%d\n",Handle()); delay(155); } while(1); }