Mail Archives: djgpp/2006/09/21/11:47:27
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
From: | "simnav" <nospamtnx AT unknown DOT addr>
|
Subject: | strange getch+keybhit behaviour
|
Newsgroups: | comp.os.msdos.djgpp
|
User-Agent: | XanaNews/1.17.5.9
|
MIME-Version: | 1.0
|
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 <stdio.h>
#include <dpmi.h>
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);
}
- Raw text -