Lendo um caractere sem a necessidade do botão Enter pressionado

read-line eread-char ambos exigem que você pressione a tecla Enter depois de digitar alguma coisa. Existe algum mecanismo no Common Lisp que permita que o programa continue pressionando um único caractere imediatamente, sem exigir a etapa adicional de pressionar Enter?

Estou tentando criar uma interface de entrada de texto dinâmica e rápida para um programa, para que os usuários possam navegar rapidamente e fazer coisas diferentes pressionando números ou letras correspondentes aos menus na tela. Todas as pressões extras da tecla Enter interrompem seriamente o fluxo de trabalho. Isso também seria semelhante a um tipo de interrogação "y / n" em um prompt, onde apenas pressionar "y" ou "n" é suficiente.

Estou usando o SBCL, se isso faz diferença. Talvez isso seja específico da implementação, pois tentei os dois exemplos emesta página e não funciona (ainda preciso pressionar Enter); aqui está o primeiro:

(defun y-or-n ()
(clear-input *standard-input*)
(loop as dum = (format t "Y or N for yes or no: ")
    as c = (read-char)
    as q = (and (not (equal c #\n)) (not (equal c #\y)))
    when q do (format t "~%Need Y or N~%")
    unless q return (if (equal c #\y) 'yes 'no)))

questionAnswers(2)

yourAnswerToTheQuestion