anchor.diff:    (make-instance 'keymap :bindings-plist
       (list
        #\q  'exit-event-loop
  -     #\a  't28-hello
  +     #\a  #'t28-hello
        #\d  't28-clear))
  -  "Define a keymap separately and then set it as a window's event handlers before running the event loop.")
  +  "Define a keymap separately and then set it as a window's event handler before running the event loop.")
  +
  +(defparameter *t28-ctrl-x-map*
  +  (make-instance 'keymap :bindings-plist
  +    (list
  +     t    (lambda (win event) (format win "^X map: Default event handler ~A~%" event))
  +     #\k  (lambda (win event) (format win "^X map: ~A~%" event))
  +     ;; ^T is another prefix key, so the keys in that map can be reached via "^X ^T".
  +     "^T" *t28-map*))
  +  "A separately defined keymap bound to the prefix key ^X.")
   
   (defun t28 ()
     "Use run-event-loop and a pre-defined event handler alist. Use a default handler."
  
positive.code:     ;; add the separately defined keymap to the window object.
      (setf (keymap scr) *t28-map*)
  
      ;; add another event handler
      (bind scr #\s (lambda (win event) (format win "Dear John ~A~%" event)))
  
      ;; t is the default handler for all events without defined handlers.
      ;; The default event handler should not be used to handle the nil event when input-blocking is nil
      (bind *t28-map* t (lambda (win event) (format win "Default event handler ~A~%" event)))
  
      (clear scr)
      (add-string scr "Type a, s or d. Type q to quit.")
      (refresh scr)
  
      (run-event-loop scr)))
  
negative.code:   (#\q 'exit-event-loop)
    (#\a 't28-hello)
    (#\d 't28-clear)
    ("^X" *t28-ctrl-x-map*)
    ("^B" 't28b-show-bindings))
  
  (defun t28b ()
  