getstroke()
{ /* get physical key from current source. */
register int c;
if ( kbdmstate == 2 )
{ /* execute "keyboard mac" or "exec file" */
if (( c = getc( kbdmf )) == EOF || c == 26 )
{ kbdmclose();
}
}
if ( kbdmstate != 2 )
{ c = conin();
if ( kbdmstate == 1 )
{ /* save keyboard mac */
if ( putc( c, kbdmf ) == EOF )
{ ctrlg();
}
}
}
return ( c );
}
/*
kbdmget()
{ return( getc( kbdmf ));
}
*/
kbdmclose()
{ if ( kbdmf ) fclose( kbdmf );
kbdmf = kbdmstate = 0;
}
conin()
{ return( bios( 3 ));
}
getkey()
{
register int c;
if ( ( c = getstroke()) == METACH ) /* Apply M- prefix */
{ return (META | getstroke());
}
#ifdef NEVER
if ( c == CMINUSCH ) return ( c );
/* negative parameter introducer. */
if ( c <= 0x1F ) /* C0 control -> C- */
c |= ( CTRL | '@' );
#endif
return (c);
}
#ifdef NEVER
/*
* Get a key.
* Apply control modifications
* to the read key.
*/
getctl()
{
register int c;
if ( ( c = getstroke()) <= 0x1f )
c |= ( CTRL | '@' );
if ( islower( c ))
c -= 0x20;
return (c);
}
#endif
/*
* Abort.
* Beep the beeper.
* Kill off any keyboard macro,
* etc., that is in progress.
* Sometimes called as a routine,
* to do general aborting of
* stuff.
*/