The following procedure might be useful for writing interactive, menu driven applications with scsh. This function reads a single character from a given terminal and returns immediately. (Calling READ-CHAR or READ usually waits for a return key to end the input.) See the UNIX FAQ (at http://www.faqs.org/faqs/unix-faq/programmer/faq/ ), question 3.2 for a more detailed description of what is done here. (define (wait-for-key . optionals) (let-optionals optionals ((tty-port (current-input-port))) (let* ((old (tty-info tty-port)) (copy (copy-tty-info old))) (set-tty-info:local-flags copy (bitwise-and (tty-info:local-flags copy) (bitwise-not ttyl/canonical))) (set-tty-info:min copy 1) (set-tty-info:time copy 0) (set-tty-info/now tty-port copy) (let ((c (read-char tty-port))) (set-tty-info/now tty-port old) c)))) -Eric