Thanks. The link you provided may have what i'm looking for. More studying
OK, i'm back. Turns out to be quite easy. I just changed one line in the tty_raw() routine:
buf.c_cc[VMIN] = 1; /* Case B: 1 byte at a time, no timer */
buf.c_cc[VTIME] = 0;*/
buf.c_cc[VMIN] = 0; /* Case D: No minimum, no timer */
buf.c_cc[VTIME] = 0;
Now, if there are no keystrokes in the queue, the getchar() returns -1, instead of waiting for a keystroke.
Thank you for your help. I'm off & running with this now.