anchor.diff:  
   (define-event-class keyboard-event (device-event)
     ((key-name :initarg :key-name
  -	     :reader keyboard-event-key-name)
  +             :reader keyboard-event-key-name)
      (key-character :initarg :key-character :reader keyboard-event-character
  -		  :initform nil)))
  +                  :initform nil)))
   
   (define-event-class key-press-event (keyboard-event)
     ())
  
positive.code: ;;; the "-event" suffix stripped off.
  (defmacro define-event-class (name superclasses slots &rest options)
    (let* ((event-tag (string '#:-event))
  	 (name-string (string name))
  	 (pos (search event-tag name-string :from-end t)))
      ;; Check that the name of the class ends with "-EVENT".
      (when (or (null pos)
  	      (not (eql (+ pos (length event-tag)) (length name-string))))
        (error "~S does not end in ~A and is not a valid event name for ~
    define-event-class."
  	     name event-tag))
      (let ((type (intern (subseq name-string 0 pos) :keyword)))
        `(progn
  	 (defclass ,name ,superclasses
  	   ,slots
  	   ,@options)
  	 (defmethod event-type ((event ,name))
  	   ',type)))))
  
  (define-event-class device-event (standard-event)
    ((modifier-state :initarg :modifier-state
  		   :reader event-modifier-state)
     (x :initarg :x
        :reader device-event-native-x)
     (y :initarg :y
  
negative.code: 
  (define-event-class pointer-event (device-event)
    ((pointer :initarg :pointer
              :reader pointer-event-pointer)
     (x :reader pointer-event-native-x)
     (y :reader pointer-event-native-y)
     (graft-x :reader pointer-event-native-graft-x)
  