anchor.diff:           (key-value (gdk:gdk-event-key-keyval event))
            (key-value-name (gdk:gdk-keyval-name key-value)))
       (when (member :control-mask modifier-state)
  -      (alexandria:deletef (modifiers browser) "control" :test #'equal))
  +      (alexandria:deletef (modifiers browser) :control-mask))
       (when (member :shift-mask modifier-state)
  -      (alexandria:deletef (modifiers browser) "shift" :test #'equal))
  -    (when (or (member :mod1-mask modifier-state)
  -              (string= key-value-name "Arabic_switch"))
  -      (alexandria:deletef (modifiers browser) "meta" :test #'equal))
  -    (when (or (member :super-mask modifier-state)
  -              (and (member :mod2-mask modifier-state)
  -                   (member :meta-mask modifier-state)))
  -      (alexandria:deletef (modifiers browser) "super" :test #'equal))))
  -
  -#+darwin
  -(defun translate-modifiers-macos (modifier-state &optional event)
  -  "A `gtk-browser' `modifier-translator' for macOS.
  -On macOS some modifiers are mistakenly seen as regular keys.
  -To work around this, we keep a `modifier' list of currently pressed modifiers in
  -`gtk-browser'."
  -  (declare (ignore modifier-state event))
  -  (modifiers *browser*))
  +      (alexandria:deletef (modifiers browser) :shift-mask))
  +    (when (string= key-value-name "Arabic_switch")
  +      (alexandria:deletef (modifiers browser) :mod1-mask))
  +    (when (and (member :mod2-mask modifier-state)
  +               (member :meta-mask modifier-state))
  +      (alexandria:deletef (modifiers browser) :super-mask))))
   
   (declaim (ftype (function (list &optional gdk:gdk-event) list) translate-modifiers))
   (defun translate-modifiers (modifier-state &optional event)
  
positive.code:          (key-string (or printable-value
                           (derive-key-string keyval-name character)))
           (modifiers (funcall (modifier-translator *browser*)
                               (gdk:gdk-event-key-state event)
                               event)))
      (if modifiers
          (log:debug key-string keycode character keyval-name modifiers)
  
negative.code:                  :hyper-mask "hyper")))
      (delete nil (mapcar (lambda (mod) (getf plist mod)) modifier-state))))
  
  #+darwin
  (defun key-event-modifiers (key-event)
    (declare (ignore key-event))
    (modifiers *browser*))
  
  #-darwin
  (defun key-event-modifiers (key-event)
    (gdk:gdk-event-key-state key-event))
  
  ;; REVIEW: Remove after upstream fix is merged in Quicklisp, see https://github.com/crategus/cl-cffi-gtk/issues/74.
  (defun gdk-event-button-state (button-event)
    "Return BUTTON-EVENT modifiers as a `gdk-modifier-type', i.e. a list of keywords."
  