[gambit-list] |read-char| without #\newline

Marc Feeley feeley at iro.umontreal.ca
Wed Sep 4 12:05:27 EDT 2019


Marc



> On Sep 4, 2019, at 11:34 AM, John Cowan <cowan at ccil.org> wrote:
> 
> The buffering setting has to do with buffering within the Scheme process, whereas the tty setting has to do with buffering within the operating system.  In order to get single-character reads from the terminal, you have to turn off both.

Indeed.

The tty settings can be changed by calling tty-mode-set! as shown below.

Marc


;;; File: console-read-one-char-at-a-time.scm

;; run like this:
;;
;;   gsi console-read-one-char-at-a-time.scm

(define (setup port)
  (if (tty? port) ;; change the tty settings to read raw characters 1 at a time
      (tty-mode-set! port
                     #f ;; input-allow-special
                     #f ;; input-echo
                     #t ;; input-raw
                     #f ;; output-raw
                     0))) ;; speed

(define port (current-input-port))

(setup port)

(let loop ()
  (let ((c (read-char port)))
    (pp (list 'typed c))
    (loop)))





More information about the Gambit-list mailing list