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