Put these at the end of globals #define WIN 640 /* size of the square window */ int hasnumber, number, decimal, sign ; /* SLevy bump gadget */ /********************************************************************/ float getnumber(float dflt){ /* return new or default number */ if(!hasnumber)return dflt; tmp = sign ? -number : number; return decimal>0 ? tmp/(float)decimal : tmp ; } /**********************************************************************/ void graffiti(char strng[128], float par){ /* from avn by SLevy */ char buf[128], *p ; glColor3f(0,0,0); glRecti(5,3,WIN,20); /* erase old graffiti */ glColor3fv(rainbow[clr]); /* create and draw new graffiti */ sprintf(buf, strng, par); glRasterPos2i(5,5); for(p=buf; *p; p++)glutBitmapCharacter(GLUT_BITMAP_8_BY_13, *p); } /**********************************************************************/ void altit(void) { alt= getnumber(alt); graffiti("%0.3f=(A)lt", alt); } /**********************************************************************/ Put this into the keyboard function case 'a': {altit(); break;}; and insert this before the end of the keyboard function. It makes it all work: glFlush(); /* superstition ? */ /* Stuart Levy's gadget parser from avn.c 1998 */ if(key >= '0' && key <= '9'){ hasnumber = 1; number = 10*number + (key - '0'); decimal *= 10;} else if(key == '.'){ decimal = 1;} else if(key == '-'){ sign = -1;} else {hasnumber = number = decimal = sign = 0;}