delorie.com/archives/browse.cgi   search  
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, &reg);

  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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019