• Mattias Engdegård's avatar
    Fine-grained NS modifier key settings (bug#38296) · 215f678c
    Mattias Engdegård authored
    For the ns-KEY-modifier and ns-right-KEY-modifier variables, KEY
    being 'control', 'command', 'alternate' and 'function', allow
    values on the form (:ordinary SYMBOL :function :SYMBOL :mouse SYMBOL),
    so that the key can be used for different modifiers (or none) in
    different contexts.  This is particularly useful for using the macOS
    Option key for extended character entry while still using it as an
    Emacs modifier for function keys and mouse clicks.
    * src/nsterm.m (mod_of_kind, right_mod, nil_or_none): Helper functions.
    (EV_MODIFIERS2): Add KIND argument.
    (EV_MODIFIERS): Adapt call to EV_MODIFIERS2.
    (ns_get_shifted_character): Use correct event kind for modifiers.
    (ns-alternate-modifier, ns-right-alternate-modifier)
    (ns-command-modifier, ns-right-command-modifier)
    (ns-control-modifier, ns-right-control-modifier)
    (ns-function-modifier): Rewrite doc strings for new data format.
    (QCordinary, QCfunction, QCmouse): Define symbols.
    * lisp/cus-start.el: Conform to new data types.
    * doc/emacs/macos.texi (Mac / GNUstep Basics)
    (Mac / GNUstep Customization): Improved documentation.
    * etc/NEWS: Mention the change.