fordke@infonode.ingr.com (Keith Ford x8614) (12/07/90)
I am writing a program for my daughter where I have an animated character that moves whenever "any" key is pressed. The key press simply causes to chatacter to continue along it's programmed path. If she decides to hold a key down forever, I would like for that to be ignored and to not fill up the buffer and start beeping, but just let me know when a key has been pressed when I ask. I.E. a key press is what causes the action to continue. Any help would be appreciated. -- | ...!uunet!ingr!fordke OR fordke@ingr.com | Micro Magic BBS (Fidonet: 1:373/12, MaBell: +1 205 830 2362) | "and the Trees are all kept equal by hatchet, axe, and saw." -Rush
jdb@reef.cis.ufl.edu (Brian K. W. Hook) (12/15/90)
I had the same problem with a flight simulatr that I had been writing.
If you are using Turbo C, the following code should do the trick:
if (kbhit())
ch=getch()
else {
dostuff()
}
with QuickC I believe that you use kbdhit(). these check the keystroke
buffer for a key hit. Also, check out _bios_keybrd() (QC) and bioskey()
under TC.
If you want to just get the last key pressed and flush the buffer of other
keystrokes, the following will work under turbo C.
#include <bios.h>
int getLastKeyPressed ( void )
{
int chTemp;
while (bioskey(1)!=0) {
chTemp=getch();
if (bioskey(1)==0)
return chTemp;
}
}
Note that getch() will return a 0 if an extended key was pressed (ie.
F1-F12, arrow keys, page up, etc.) and that you must then do an other
getch() to get the scan code (most PC programming books have this in
them).