anchor.diff:  (defvar last-resize nil)
   (defvar waiting-shortcut nil)
   
  -(defun key-press (code state)
  +(defhandler :key-press (code state)
     (unless (is-modifier code)
       (cond (waiting-shortcut
  -           (let ((entry (assoc-if
  -                         #'(lambda (sc) (sc= sc state code)) *shortcuts*)))
  +           (let ((entry (assoc-if #'(lambda (sc) (sc= sc state code)) *shortcuts*))
  +                 fn)
                (when entry
  -               (let ((fn (cdr entry)))
  -                 (cond ((functionp fn) (funcall fn))
  -                       ((eq fn 'quit) fn)))))
  -           (ungrab-keyboard *display*)
  -           (setf waiting-shortcut nil))
  +               (setf fn (cdr entry)))
  +             (when (functionp fn) (funcall fn))
  +             (ungrab-keyboard *display*)
  +             (setf waiting-shortcut nil)
  +             fn))
             ((sc= *prefix* state code)
              (grab-keyboard *root*)
              (setf waiting-shortcut t)))))
   
  -(defun button-press (code state child)
  +(defhandler :button-press (code state child)
     (when (and child (eql (window-override-redirect child) :off))
       (cond ((sc= *close* state code)
              (send-message child :WM_PROTOCOLS
  
positive.code:                    (drawable-height event-window) new-h))
             (setf last-resize time)))))
  
  ;;; Main
  (defun main ()
    ;; Grab prefix and mouse buttons on root
  
negative.code:   (setf (window-event-mask *root*) '(:substructure-notify))
  
    (unwind-protect
         (do () ((eql (process-event *display* :handler *handlers* :discard-p t) 'quit)))
      (dolist (b (list *move* *resize* *close*))
        (ungrab-button *root* (code b) :modifiers (state b)))
      (ungrab-key *root* (code *prefix*) :modifiers (state *prefix*))
      (close-display *display*)))
  
  