Tests whether a key is typed aheadint sm_keyhit ( int interval );
- Specifies in tenths of seconds how long to wait before it checks whether the user pressed a key. The exact length of the wait depends on the granularity of the system clock and on the hardware and operating system.
sm_keyhitchecks whether a key has already been pressed. If a key has been pressed, it returns 1 immediately. Otherwise, it waits the specified interval. If a key is pressed during the interval the function returns 1 immediately; otherwise, it returns 0. The key, if any is struck, is not read in and is available to the usual keyboard input functions.
If the operating system does not support reads with timeout, this function ignores the interval and only returns 1 if a key has been typed ahead.
Panther uses this function to decide when to call timeout functions.
/* The following code adds one asterisk per second to
* a danger bar, until somebody presses EXIT. */
static char *danger_bar = "***********************";
("You have 25 seconds to find the EXIT key.", WHITE);
/* Clear the danger bar area
sm_do_region (5, 10, 25, WHITE, ""); */
for (k = 1; k <= 25; ++k)
} if (sm_keyhit (10))
if (sm_getkey () == EXIT)
sm_do_region (5, 10, k, WHITE, danger_bar);
if (k <= 25)
sm_d_msg_line ("%BCongratulations! you win!");
sm_ferr_reset (0, "Sorry, you lose.");