anchor.diff:  (defun lem-input-key-thread ()
     (loop :for c := (cl-charms/low-level:wgetch (window-win)) :do
       (unless (= -1 c)
  -      (input-enqueue c))
  +      (bt:with-lock-held (*mainloop-lock*)
  +        (input-enqueue c)))
       (when *exit*
         (return))))
   
  
positive.code: 
  (defvar *input-history* (queue:make-queue 100))
  
  (defvar *macro-recording-p* nil)
  (defvar *macro-chars* nil)
  (defvar *macro-running-p* nil)
  
negative.code: 
  (let ((queue (make-growlist)))
    (defun getch (&optional (abort-jump t))
      (let* ((code (loop
                     (bt:with-lock-held (*mainloop-lock*)
                       (unless (grow-null-p queue)
                         (return (grow-rem-left queue))))
                     (sleep 0.01)))
             (char (code-char code)))
        (queue:enqueue *input-history* char)
  