anchor.diff:    (event-case (*display*)
       (:key-press (code state)
                   (cond ((is-modifier code) (one-char))
  -                      ((and (= state (state *abort*)) (= code (code *abort*))))
  +                      ((sc= *abort* state code) *abort*)
  +                      ((sc= *this* state code) *this*)
                         (t (keycode->character *display* code state))))))
   
   (defun recapp (pos list)
  
positive.code:         (cons state k))))
  (defun state (l) (car l))
  (defun code (l) (cdr l))
  
  (defparameter *shortcuts*
    (list (cons (compile-shortcut '(:shift #\q)) 'quit))
  
negative.code:         ((single list)
           (run-program (car list) nil :wait nil :search t))
          (t (let ((char (one-char)))
               (etypecase char
                 (character
                  (let ((sublist (remove-if #'(lambda (str)
                                                (or (>= pos (length str))
                                                    (char/= (elt str pos) char))) list)))
                    (recapp (1+ pos) sublist)))
                 (cons
                  (cond ((sc= char (state *abort*) (code *abort*)))
                        ((sc= char (state *this*) (code *this*))
                         (let ((sublist (remove-if #'(lambda (str) (/= (length str) pos))
                                                   list)))
                           (recapp (1+ pos) sublist))))))))))
  
  (defun app ()
    (grab-keyboard *root*)
  