Fine-grained NS modifier key settings (bug#38296)
authorMattias Engdegård <mattiase@acm.org>
Mon, 25 Nov 2019 17:54:20 +0000 (18:54 +0100)
committerMattias Engdegård <mattiase@acm.org>
Wed, 27 Nov 2019 10:14:55 +0000 (11:14 +0100)
commit215f678c7262db2ed353f2bf1e0a97c59a452605
tree0efa6ea5136c9125fab217463f3deb8ed9c1db63
parentaa89c84e00d8dc85100e6fedab7631c415e6364d
Fine-grained NS modifier key settings (bug#38296)

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.
doc/emacs/macos.texi
etc/NEWS
lisp/cus-start.el
src/nsterm.m