From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Newsgroups: gmane.emacs.bugs Subject: bug#38296: Allow Option key to be modifier for non-char key and mouse events Date: Mon, 25 Nov 2019 20:15:31 +0100 Message-ID: References: <20191121211207.GA96045@breton.holly.idiocy.org> Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_B99C4720-7396-41CE-B779-E4E7890D816A" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="75723"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 38296@debbugs.gnu.org To: Alan Third Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 25 20:16:35 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iZJqb-000JT7-Oy for geb-bug-gnu-emacs@m.gmane.org; Mon, 25 Nov 2019 20:16:34 +0100 Original-Received: from localhost ([::1]:47570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZJqX-0005jo-Ko for geb-bug-gnu-emacs@m.gmane.org; Mon, 25 Nov 2019 14:16:29 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43429) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZJqF-0005iB-NU for bug-gnu-emacs@gnu.org; Mon, 25 Nov 2019 14:16:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iZJqD-00040W-En for bug-gnu-emacs@gnu.org; Mon, 25 Nov 2019 14:16:11 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43723) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iZJq5-0003y3-Tq for bug-gnu-emacs@gnu.org; Mon, 25 Nov 2019 14:16:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iZJq5-0007P6-PY for bug-gnu-emacs@gnu.org; Mon, 25 Nov 2019 14:16:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 25 Nov 2019 19:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38296 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 38296-submit@debbugs.gnu.org id=B38296.157470933928426 (code B ref 38296); Mon, 25 Nov 2019 19:16:01 +0000 Original-Received: (at 38296) by debbugs.gnu.org; 25 Nov 2019 19:15:39 +0000 Original-Received: from localhost ([127.0.0.1]:49696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZJpj-0007OQ-6K for submit@debbugs.gnu.org; Mon, 25 Nov 2019 14:15:39 -0500 Original-Received: from mail83c50.megamailservers.eu ([91.136.10.93]:34028 helo=mail18c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZJpg-0007OB-6z for 38296@debbugs.gnu.org; Mon, 25 Nov 2019 14:15:37 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1574709334; bh=0/JFrR2zUU8yLwEloiUB+kCpuNNuWzA5k7gRpxLcXsQ=; h=From:Subject:Date:In-Reply-To:Cc:To:References:From; b=aJlFl8wnjEvKopMZKzFhcCI8+wNbOr8Nl2wFh1lBsmRJobsOKp9CRUg/4K/q4MvGS URcoCrchrXfGjB08K5/M0EgmmX3ub/JKXevjqrQ5qa8/ZSg5iTkwgF1DxDIuoo/Ce2 87CE6tL+uMqP5FJjW/wb99oFKQlcB8xzmo2tWU20= Feedback-ID: mattiase@acm.or Original-Received: from stanniol.lan (c-3d4ce655.032-75-73746f71.bbcust.telenor.se [85.230.76.61]) (authenticated bits=0) by mail18c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id xAPJFV5T010607; Mon, 25 Nov 2019 19:15:33 +0000 In-Reply-To: <20191121211207.GA96045@breton.holly.idiocy.org> X-Mailer: Apple Mail (2.3445.104.11) X-CTCH-RefID: str=0001.0A0B0214.5DDC2856.0019, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=dfr+Ikfe c=1 sm=1 tr=0 a=2CSmQ8xxRPzqj0RSDwU2Pw==:117 a=2CSmQ8xxRPzqj0RSDwU2Pw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=M51BFTxLslgA:10 a=hIj89exaAAAA:8 a=xuUGQPaXmpwfWq95fEQA:9 a=QEXdDO2ut3YA:10 a=auBn0QlOYkRXG7X9N1UA:9 a=B2y7HmGcmWMA:10 a=lS9wXHQM5UdnNJ4u63Ry:22 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:172375 Archived-At: --Apple-Mail=_B99C4720-7396-41CE-B779-E4E7890D816A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 21 nov. 2019 kl. 22.12 skrev Alan Third : > Do you think this functionality will only be required for the > alt/option key or will there be a demand to add it for command too? In > my experience the characters available via command are rather more > obscure, but I=E2=80=99ve little experience with non=E2=80=90UK = keyboards. Looking at Mitsuharu Yamamoto's Mac port made me change my mind: it = solves the problem by allowing the variables to have values on the form = (:ordinary SYMBOL :function SYMBOL :mouse SYMBOL), defining each = modifier key separately for ordinary keys, function keys and mouse = events. This is more flexible, and turned out to be rather simple to implement, = so I think this is better than adding variables. I did it for all = ns-KEY-modifier and ns-right-KEY-modifier variables (KEY being control, = command, alternate and function), since it seemed silly not to. The = relevant macOS-specific documentation was improved as well. Doing so also reduces gratuitous incompatibility with the Mac port. Here is the new patch. Maybe we can get it done before Eli branches off = Emacs 27. --Apple-Mail=_B99C4720-7396-41CE-B779-E4E7890D816A Content-Disposition: attachment; filename=0001-Fine-grained-NS-modifier-key-settings-bug-38296.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fine-grained-NS-modifier-key-settings-bug-38296.patch" Content-Transfer-Encoding: quoted-printable =46rom=20a430631efdfdb1a668f1b0ffd6f6f857e0df3466=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Mon,=2025=20Nov=202019=2018:54:20=20+0100=0A= Subject:=20[PATCH]=20Fine-grained=20NS=20modifier=20key=20settings=20= (bug#38296)=0A=0AFor=20the=20ns-MOD-modifier=20and=20= ns-right-MOD-modifier=20variables,=20MOD=0Abeing=20'control',=20= 'command',=20'alternate'=20and=20'function',=20allow=0Avalues=20on=20the=20= form=20(:ordinary=20SYMBOL=20:function=20:SYMBOL=20:mouse=20SYMBOL),=0A= so=20that=20the=20key=20can=20be=20used=20for=20different=20modifiers=20= (or=20none)=20in=0Adifferent=20contexts.=20=20This=20is=20particularly=20= useful=20for=20using=20the=20macOS=0AOption=20key=20for=20extended=20= character=20entry=20while=20still=20using=20it=20as=20an=0AEmacs=20= modifier=20for=20function=20keys=20and=20mouse=20clicks.=0A=0A*=20= src/nsterm.m=20(mod_of_kind,=20right_mod,=20nil_or_none):=20Helper=20= functions.=0A(EV_MODIFIERS2):=20Add=20KIND=20argument.=0A(EV_MODIFIERS):=20= Adapt=20call=20to=20EV_MODIFIERS2.=0A(ns_get_shifted_character):=20Use=20= correct=20event=20kind=20for=20modifiers.=0A(ns-alternate-modifier,=20= ns-right-alternate-modifier)=0A(ns-command-modifier,=20= ns-right-command-modifier)=0A(ns-control-modifier,=20= ns-right-control-modifier)=0A(ns-function-modifier):=20Rewrite=20doc=20= strings=20for=20new=20data=20format.=0A(QCordinary,=20QCfunction,=20= QCmouse):=20Define=20symbols.=0A*=20lisp/cus-start.el:=20Conform=20to=20= new=20data=20types.=0A*=20doc/emacs/macos.texi=20(Mac=20/=20GNUstep=20= Basics)=0A(Mac=20/=20GNUstep=20Customization):=20Improved=20= documentation.=0A*=20etc/NEWS:=20Mention=20the=20change.=0A---=0A=20= doc/emacs/macos.texi=20|=20=2060=20+++++++++++++----=0A=20etc/NEWS=20=20=20= =20=20=20=20=20=20=20=20=20=20|=20=20=206=20++=0A=20lisp/cus-start.el=20=20= =20=20|=20=2097=20++++++++++++++++++++++++----=0A=20src/nsterm.m=20=20=20= =20=20=20=20=20=20|=20150=20+++++++++++++++++++++++++++++--------------=0A= =204=20files=20changed,=20241=20insertions(+),=2072=20deletions(-)=0A=0A= diff=20--git=20a/doc/emacs/macos.texi=20b/doc/emacs/macos.texi=0Aindex=20= d9920957ad..fe944e411d=20100644=0A---=20a/doc/emacs/macos.texi=0A+++=20= b/doc/emacs/macos.texi=0A@@=20-48,18=20+48,8=20@@=20Mac=20/=20GNUstep=20= Basics=0A=20Emacs=20provides=20a=20set=20of=20key=20bindings=20using=20= this=20modifier=20key=20that=20mimic=0A=20other=20Mac=20/=20GNUstep=20= applications=20(@pxref{Mac=20/=20GNUstep=20Events}).=20=20You=0A=20can=20= change=20these=20bindings=20in=20the=20usual=20way=20(@pxref{Key=20= Bindings}).=0A-=0A-@vindex=20ns-alternate-modifier=0A-@vindex=20= ns-right-alternate-modifier=0A-=20=20The=20variable=20= @code{ns-right-alternate-modifier}=20controls=20the=0A-behavior=20of=20= the=20right=20@key{Alt}=20and=20@key{Option}=20keys.=20=20These=20keys=0A= -behave=20like=20the=20left-hand=20keys=20if=20the=20value=20is=20= @code{left}=20(the=0A-default).=20=20A=20value=20of=20@code{control},=20= @code{meta},=20@code{alt},=0A-@code{super},=20or=20@code{hyper}=20makes=20= them=20behave=20like=20the=20corresponding=0A-modifier=20keys;=20a=20= value=20of=20@code{left}=20means=20be=20the=20same=20key=20as=0A= -@code{ns-alternate-modifier};=20a=20value=20of=20@code{none}=20tells=20= Emacs=20to=0A-ignore=20them,=20in=20which=20case=20you=20get=20the=20= default=20behavior=20of=20macOS=0A-accentuation=20system=20from=20the=20= right=20@key{Option}=20key.=0A+The=20modifiers=20themselves=20can=20be=20= customised;=0A+@pxref{Mac=20/=20GNUstep=20Customization}.=0A=20=0A=20=20=20= @kbd{S-mouse-1}=20adjusts=20the=20region=20to=20the=20click=20position,=0A= =20just=20like=20@kbd{mouse-3}=20(@code{mouse-save-then-kill});=20it=20= does=20not=20pop=0A@@=20-107,6=20+97,52=20@@=20Mac=20/=20GNUstep=20= Customization=0A=20keys=20and=20the=20fullscreen=20behavior.=20=20To=20= see=20all=20such=20options,=20use=0A=20@kbd{M-x=20customize-group=20= @key{RET}=20ns=20@key{RET}}.=0A=20=0A+@subsection=20Modifier=20keys=0A+=0A= +The=20following=20variables=20control=20the=20behaviour=20of=20the=20= actual=20modifier=0A+keys:=0A+=0A+@table=20@code=0A+@vindex=20= ns-alternate-modifier=0A+@vindex=20ns-right-alternate-modifier=0A+@item=20= ns-alternate-modifier=0A+@itemx=20ns-right-alternate-modifier=0A+The=20= left=20and=20right=20@key{Option}=20or=20@key{Alt}=20keys.=0A+=0A= +@vindex=20ns-command-modifier=0A+@vindex=20ns-right-command-modifier=0A= +@item=20ns-command-modifier=0A+@itemx=20ns-right-command-modifier=0A= +The=20left=20and=20right=20@key{Command}=20keys.=0A+=0A+@vindex=20= ns-control-modifier=0A+@vindex=20ns-right-control-modifier=0A+@item=20= ns-control-modifier=0A+@itemx=20ns-right-control-modifier=0A+The=20left=20= and=20right=20@key{Control}=20keys.=0A+=0A+@vindex=20= ns-function-modifier=0A+@item=20ns-function-modifier=0A+The=20= @key{Function}=20(fn)=20key.=0A+@end=20table=0A+=0A+The=20value=20of=20= each=20variable=20is=20either=20a=20symbol,=20describing=20the=20key=20= for=0A+any=20purpose,=20or=20a=20list=20on=20the=20form=0A= +@code{(:ordinary=20@var{symbol}=20:function=20@var{symbol}=20:mouse=20= @var{symbol})},=0A+which=20describes=20the=20modifier=20when=20used=20= with=20ordinary=20keys,=20function=20keys=0A+(that=20do=20not=20produce=20= a=20character,=20such=20as=20arrow=20keys),=20and=20mouse=20clicks.=0A+=0A= +If=20the=20@var{symbol}=20is=20one=20of=20@code{control},=20= @code{meta},=20@code{alt},=0A+@code{super}=20or=20@code{hyper},=20this=20= describes=20the=20Emacs=20modifier=20it=0A+represents.=20=20If=20= @var{symbol}=20is=20@code{none},=20Emacs=20does=20not=20use=20the=0A= +key,=20which=20retains=20its=20standard=20behaviour.=20=20For=20= instance,=20the=0A+@key{Option}=20key=20in=20macOS=20is=20normally=20= used=20for=20composing=20additional=0A+characters.=0A+=0A+The=20= variables=20for=20right-hand=20keys,=20like=20= @code{ns-right-alternate-modifier},=0A+may=20also=20be=20set=20to=20= @code{left},=20which=20means=20to=20use=20the=20same=20behaviour=20as=0A= +the=20corresponding=20left-hand=20key.=0A+=0A=20@subsection=20Font=20= Panel=0A=20=0A=20@findex=20ns-popup-font-panel=0Adiff=20--git=20= a/etc/NEWS=20b/etc/NEWS=0Aindex=20edd536f2f0..7056b99878=20100644=0A---=20= a/etc/NEWS=0A+++=20b/etc/NEWS=0A@@=20-3241,6=20+3241,12=20@@=20= Previously=20it=20was=20supported=20only=20in=20the=20Cygwin-w32=20= build.=0A=20**=20Emacs=20now=20handles=20key=20combinations=20involving=20= the=20macOS=20"command"=0A=20and=20"option"=20modifier=20keys=20more=20= correctly.=0A=20=0A+**=20MacOS=20modifier=20key=20behaviour=20is=20now=20= more=20adjustable.=0A+The=20behaviour=20of=20the=20macOS=20"Option",=20= "Command",=20"Control"=20and=0A+"Function"=20keys=20can=20now=20be=20= specified=20separately=20for=20use=20with=0A+ordinary=20keys,=20function=20= keys=20and=20mouse=20clicks.=20=20This=20allows=20using=20them=0A+in=20= their=20standard=20macOS=20way=20for=20composing=20characters.=0A+=0A=20= **=20The=20special=20handling=20of=20'frame-title-format'=20on=20NS=20= where=20setting=20it=0A=20to=20't'=20would=20enable=20the=20macOS=20= proxy=20icon=20has=20been=20replaced=20with=20a=0A=20separate=20= variable,=20'ns-use-proxy-icon'.=20=20'frame-title-format'=20will=20now=0A= diff=20--git=20a/lisp/cus-start.el=20b/lisp/cus-start.el=0Aindex=20= e4b6d8f2d6..1c497ee5ae=20100644=0A---=20a/lisp/cus-start.el=0A+++=20= b/lisp/cus-start.el=0A@@=20-424,16=20+424,23=20@@=20= minibuffer-prompt-properties--setter=0A=20=09=20=20=20=20=20;;=20msdos.c=0A= =20=09=20=20=20=20=20(dos-unsupported-char-glyph=20display=20integer)=0A=20= =09=20=20=20=20=20;;=20nsterm.m=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20= ;;=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20FIXME:=20Why=20does=20= =E2=8C=83=20use=20nil=20instead=20of=20none?=20=20Also=20the=0A-=20=20=20= =20=20=20=20=20=20=20=20=20=20;;=20description=20is=20confusing;=20= setting=20it=20to=20nil=20disables=20=E2=8C=83=0A-=20=20=20=20=20=20=20=20= =20=20=20=20=20;;=20entirely.=0A=20=09=20=20=20=20=20= (ns-control-modifier=0A=20=09=20=20=20=20=20=20ns=0A-=09=20=20=20=20=20=20= (choice=20(const=20:tag=20"No=20modifier"=20nil)=0A+=09=20=20=20=20=20=20= (choice=20(const=20:tag=20"No=20modifier"=20none)=0A=20=09=09=20=20=20=20= =20=20(const=20control)=20(const=20meta)=0A=20=09=09=20=20=20=20=20=20= (const=20alt)=20(const=20hyper)=0A-=09=09=20=20=20=20=20=20(const=20= super))=20"23.1")=0A+=09=09=20=20=20=20=20=20(const=20super)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(plist=20= :key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(const=20:function)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:mouse))=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20:value-type=20(choice=20(const=20control)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20meta)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= alt)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20hyper)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(const=20super)=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:tag=20"No=20= modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20"23.1")=0A=20=09=20=20=20=20=20(ns-right-control-modifier=0A=20= =09=20=20=20=20=20=20ns=0A=20=09=20=20=20=20=20=20(choice=20(const=20= :tag=20"No=20modifier=20(work=20as=20control)"=20none)=0A@@=20-441,13=20= +448,35=20@@=20minibuffer-prompt-properties--setter=0A=20=09=09=09=20=20=20= =20=20left)=0A=20=09=09=20=20=20=20=20=20(const=20control)=20(const=20= meta)=0A=20=09=09=20=20=20=20=20=20(const=20alt)=20(const=20hyper)=0A-=09= =09=20=20=20=20=20=20(const=20super))=20"24.1")=0A+=09=09=20=20=20=20=20=20= (const=20super)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(plist=20:key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= :function)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20:mouse))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20:value-type=20(choice=20(const=20= control)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(const=20meta)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(const=20alt)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(const=20hyper)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20super)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (const=20:tag=20"No=20modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20"24.1")=0A=20=09=20=20=20=20=20= (ns-command-modifier=0A=20=09=20=20=20=20=20=20ns=0A=20=09=20=20=20=20=20= =20(choice=20(const=20:tag=20"No=20modifier=20(work=20as=20layout=20= switch)"=20none)=0A=20=09=09=20=20=20=20=20=20(const=20control)=20(const=20= meta)=0A=20=09=09=20=20=20=20=20=20(const=20alt)=20(const=20hyper)=0A-=09= =09=20=20=20=20=20=20(const=20super))=20"23.1")=0A+=09=09=20=20=20=20=20=20= (const=20super)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(plist=20:key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= :function)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20:mouse))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20:value-type=20(choice=20(const=20= control)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(const=20meta)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(const=20alt)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(const=20hyper)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20super)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (const=20:tag=20"No=20modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20"23.1")=0A=20=09=20=20=20=20=20= (ns-right-command-modifier=0A=20=09=20=20=20=20=20=20ns=0A=20=09=20=20=20= =20=20=20(choice=20(const=20:tag=20"No=20modifier=20(work=20as=20layout=20= switch)"=20none)=0A@@=20-455,13=20+484,35=20@@=20= minibuffer-prompt-properties--setter=0A=20=09=09=09=20=20=20=20=20left)=0A= =20=09=09=20=20=20=20=20=20(const=20control)=20(const=20meta)=0A=20=09=09= =20=20=20=20=20=20(const=20alt)=20(const=20hyper)=0A-=09=09=20=20=20=20=20= =20(const=20super))=20"24.1")=0A+=09=09=20=20=20=20=20=20(const=20super)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (plist=20:key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:function)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= :mouse))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20:value-type=20(choice=20(const=20control)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= meta)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20alt)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(const=20hyper)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(const=20super)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:tag=20= "No=20modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20"24.1")=0A=20=09=20=20=20=20=20(ns-alternate-modifier=0A= =20=09=20=20=20=20=20=20ns=0A=20=09=20=20=20=20=20=20(choice=20(const=20= :tag=20"No=20modifier=20(work=20as=20alternate/option)"=20none)=0A=20=09=09= =20=20=20=20=20=20(const=20control)=20(const=20meta)=0A=20=09=09=20=20=20= =20=20=20(const=20alt)=20(const=20hyper)=0A-=09=09=20=20=20=20=20=20= (const=20super))=20"23.1")=0A+=09=09=20=20=20=20=20=20(const=20super)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (plist=20:key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:function)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= :mouse))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20:value-type=20(choice=20(const=20control)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= meta)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20alt)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(const=20hyper)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(const=20super)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:tag=20= "No=20modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20"23.1")=0A=20=09=20=20=20=20=20= (ns-right-alternate-modifier=0A=20=09=20=20=20=20=20=20ns=0A=20=09=20=20=20= =20=20=20(choice=20(const=20:tag=20"No=20modifier=20(work=20as=20= alternate/option)"=20none)=0A@@=20-469,13=20+520,35=20@@=20= minibuffer-prompt-properties--setter=0A=20=09=09=09=20=20=20=20=20left)=0A= =20=09=09=20=20=20=20=20=20(const=20control)=20(const=20meta)=0A=20=09=09= =20=20=20=20=20=20(const=20alt)=20(const=20hyper)=0A-=09=09=20=20=20=20=20= =20(const=20super))=20"23.3")=0A+=09=09=20=20=20=20=20=20(const=20super)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (plist=20:key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:function)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= :mouse))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20:value-type=20(choice=20(const=20control)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= meta)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20alt)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20(const=20hyper)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20(const=20super)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:tag=20= "No=20modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20"23.3")=0A=20=09=20=20=20=20=20(ns-function-modifier=0A= =20=09=20=20=20=20=20=20ns=0A=20=09=20=20=20=20=20=20(choice=20(const=20= :tag=20"No=20modifier=20(work=20as=20function)"=20none)=0A=20=09=09=20=20= =20=20=20=20(const=20control)=20(const=20meta)=0A=20=09=09=20=20=20=20=20= =20(const=20alt)=20(const=20hyper)=0A-=09=09=20=20=20=20=20=20(const=20= super))=20"23.1")=0A+=09=09=20=20=20=20=20=20(const=20super)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(plist=20= :key-type=20(choice=20(const=20:ordinary)=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(const=20:function)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:mouse))=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20:value-type=20(choice=20(const=20control)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20meta)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20= alt)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(const=20hyper)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(const=20super)=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(const=20:tag=20"No=20= modifier"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20none))))=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20"23.1")=0A=20=09=20=20=20=20=20(ns-antialias-text=20ns=20= boolean=20"23.1")=0A=20=09=20=20=20=20=20(ns-auto-hide-menu-bar=20ns=20= boolean=20"24.1")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (ns-confirm-quit=20ns=20boolean=20"25.1")=0Adiff=20--git=20= a/src/nsterm.m=20b/src/nsterm.m=0Aindex=20e1d745e332..52a9830be8=20= 100644=0A---=20a/src/nsterm.m=0A+++=20b/src/nsterm.m=0A@@=20-354,6=20= +354,19=20@@=20-=20(NSColor=20*)colorUsingDefaultColorSpace=0A=20#define=20= NSLeftAlternateKeyMask=20=20(0x000020=20|=20NSEventModifierFlagOption)=0A= =20#define=20NSRightAlternateKeyMask=20(0x000040=20|=20= NSEventModifierFlagOption)=0A=20=0A+/*=20MODIFIER=20if=20a=20symbol;=20= otherwise=20its=20property=20KIND,=20if=20a=20symbol.=20=20*/=0A+static=20= Lisp_Object=0A+mod_of_kind=20(Lisp_Object=20modifier,=20Lisp_Object=20= kind)=0A+{=0A+=20=20if=20(SYMBOLP=20(modifier))=0A+=20=20=20=20return=20= modifier;=0A+=20=20else=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= Lisp_Object=20val=20=3D=20Fplist_get=20(modifier,=20kind);=0A+=20=20=20=20= =20=20return=20SYMBOLP=20(val)=20?=20val=20:=20Qnil;=0A+=20=20=20=20}=0A= +}=0A+=0A=20static=20unsigned=20int=0A=20ev_modifiers_helper=20(unsigned=20= int=20flags,=20unsigned=20int=20left_mask,=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20unsigned=20int=20right_mask,=20= unsigned=20int=20either_mask,=0A@@=20-380,30=20+393,35=20@@=20-=20= (NSColor=20*)colorUsingDefaultColorSpace=0A=20=20=20return=20modifiers;=0A= =20}=0A=20=0A-#define=20EV_MODIFIERS2(flags)=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20\=0A+#define=20EV_MODIFIERS2(flags,=20kind)=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20(((flags=20&=20= NSEventModifierFlagHelp)=20?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20=20= hyper_modifier=20:=200)=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20\=0A=20=20=20=20|=20((flags=20&=20= NSEventModifierFlagShift)=20?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20=20=20=20= shift_modifier=20:=200)=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20\=0A-=20=20=20|=20((flags=20&=20NS_FUNCTION_KEY_MASK)=20?=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20\=0A-=20=20=20=20=20=20parse_solitary_modifier=20= (ns_function_modifier)=20:=200)=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20\=0A+=20=20=20|=20((flags=20&=20NS_FUNCTION_KEY_MASK)=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20\=0A+=20=20=20=20=20=20?=20parse_solitary_modifier=20= (mod_of_kind=20(ns_function_modifier,=20=20=20=20=20\=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20kind))=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20\=0A+=20=20=20=20=20=20:=200)=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20\=0A=20=20=20=20|=20ev_modifiers_helper=20= (flags,=20NSLeftControlKeyMask,=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20\=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20NSRightControlKeyMask,=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= NSEventModifierFlagControl,=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20\=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20ns_control_modifier,=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ns_right_control_modifier)=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20\=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20mod_of_kind=20(ns_control_modifier,=20kind),=20=20=20= =20=20=20\=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20mod_of_kind=20(ns_right_control_modifier,=20=20=20=20=20= =20=20\=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20kind))=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20= =20=20=20|=20ev_modifiers_helper=20(flags,=20NSLeftCommandKeyMask,=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= NSRightCommandKeyMask,=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20\=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20NSEventModifierFlagCommand,=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20ns_command_modifier,=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= \=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20ns_right_command_modifier)=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20\=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20mod_of_kind=20(ns_command_modifier,=20= kind),=20=20=20=20=20=20\=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20mod_of_kind=20= (ns_right_command_modifier,=20=20=20=20=20=20=20\=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20kind))=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20|=20ev_modifiers_helper=20= (flags,=20NSLeftAlternateKeyMask,=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20\=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20NSRightAlternateKeyMask,=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20NSEventModifierFlagOption,=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A-=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ns_alternate_modifier,=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20\=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20ns_right_alternate_modifier))=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= mod_of_kind=20(ns_alternate_modifier,=20kind),=20=20=20=20\=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= mod_of_kind=20(ns_right_alternate_modifier,=20=20=20=20=20\=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20kind)))=0A=20=0A-#define=20EV_MODIFIERS(e)=20= EV_MODIFIERS2=20([e=20modifierFlags])=0A+#define=20EV_MODIFIERS(e)=20= EV_MODIFIERS2=20([e=20modifierFlags],=20QCmouse)=0A=20=0A=20#define=20= EV_UDMODIFIERS(e)=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=20=20=20=20= =20((([e=20type]=20=3D=3D=20NSEventTypeLeftMouseDown)=20?=20= down_modifier=20:=200)=20=20=20=20=20=20=20\=0A@@=20-2599,6=20+2617,18=20= @@=20so=20some=20key=20presses=20(TAB)=20are=20swallowed=20by=20the=20= system.=20=20*/=0A=20}=0A=20=0A=20#ifdef=20NS_IMPL_COCOA=0A+static=20= Lisp_Object=0A+right_mod=20(Lisp_Object=20left,=20Lisp_Object=20right)=0A= +{=0A+=20=20return=20EQ=20(right,=20Qleft)=20?=20left=20:=20right;=0A+}=0A= +=0A+static=20bool=0A+nil_or_none=20(Lisp_Object=20val)=0A+{=0A+=20=20= return=20NILP=20(val)=20||=20EQ=20(val,=20Qnone);=0A+}=0A+=0A=20static=20= UniChar=0A=20ns_get_shifted_character=20(NSEvent=20*event)=0A=20/*=20= Look=20up=20the=20character=20corresponding=20to=20the=20key=20pressed=20= on=20the=0A@@=20-2630,25=20+2660,25=20@@=20so=20some=20key=20presses=20= (TAB)=20are=20swallowed=20by=20the=20system.=20=20*/=0A=20=20=20NSTRACE=20= ("ns_get_shifted_character");=0A=20=0A=20=20=20if=20((flags=20&=20= NSRightAlternateKeyMask)=20=3D=3D=20NSRightAlternateKeyMask=0A-=20=20=20=20= =20=20&&=20(EQ=20(ns_right_alternate_modifier,=20Qnone)=0A-=20=20=20=20=20= =20=20=20=20=20||=20(EQ=20(ns_right_alternate_modifier,=20Qleft)=0A-=20=20= =20=20=20=20=20=20=20=20=20=20=20=20&&=20EQ=20(ns_alternate_modifier,=20= Qnone))))=0A+=20=20=20=20=20=20&&=20nil_or_none=20(mod_of_kind=20= (right_mod=20(ns_alternate_modifier,=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20ns_right_alternate_modifier),=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20QCordinary)))=0A=20=20=20=20=20modifiers=20|=3D=20= rightOptionKey;=0A=20=0A=20=20=20if=20((flags=20&=20= NSLeftAlternateKeyMask)=20=3D=3D=20NSLeftAlternateKeyMask=0A-=20=20=20=20= =20=20&&=20EQ=20(ns_alternate_modifier,=20Qnone))=0A+=20=20=20=20=20=20= &&=20nil_or_none=20(mod_of_kind=20(ns_alternate_modifier,=20= QCordinary)))=0A=20=20=20=20=20modifiers=20|=3D=20optionKey;=0A=20=0A=20=20= =20if=20((flags=20&=20NSRightCommandKeyMask)=20=3D=3D=20= NSRightCommandKeyMask=0A-=20=20=20=20=20=20&&=20(EQ=20= (ns_right_command_modifier,=20Qnone)=0A-=20=20=20=20=20=20=20=20=20=20||=20= (EQ=20(ns_right_command_modifier,=20Qleft)=0A-=20=20=20=20=20=20=20=20=20= =20=20=20=20=20&&=20EQ=20(ns_command_modifier,=20Qnone))))=0A+=20=20=20=20= =20=20&&=20nil_or_none=20(mod_of_kind=20(right_mod=20= (ns_command_modifier,=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20ns_right_command_modifier),=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20QCordinary)))=0A=20=20=20=20=20/*=20Carbon=20doesn't=20differentiate=20= between=20left=20and=20right=20command=0A=20=20=20=20=20=20=20=20keys.=20= =20*/=0A=20=20=20=20=20modifiers=20|=3D=20cmdKey;=0A=20=0A=20=20=20if=20= ((flags=20&=20NSLeftCommandKeyMask)=20=3D=3D=20NSLeftCommandKeyMask=0A-=20= =20=20=20=20=20&&=20EQ=20(ns_command_modifier,=20Qnone))=0A+=20=20=20=20=20= =20&&=20nil_or_none=20(mod_of_kind=20(ns_command_modifier,=20= QCordinary)))=0A=20=20=20=20=20modifiers=20|=3D=20cmdKey;=0A=20=0A=20=20=20= result=20=3D=20UCKeyTranslate=20(layout,=20[event=20keyCode],=20= kUCKeyActionDown,=0A@@=20-6287,7=20+6317,8=20@@=20In=20that=20case=20we=20= use=20UCKeyTranslate=20(ns_get_shifted_character)=0A=20=20=20=20=20=20=20= =20=20=20modifier=20keys,=20which=20returns=200=20for=20shift-like=20= modifiers.=0A=20=20=20=20=20=20=20=20=20=20Therefore=20its=20return=20= value=20is=20the=20set=20of=20control-like=0A=20=20=20=20=20=20=20=20=20=20= modifiers.=20=20*/=0A-=20=20=20=20=20=20emacs_event->modifiers=20=3D=20= EV_MODIFIERS2=20(flags);=0A+=20=20=20=20=20=20Lisp_Object=20kind=20=3D=20= fnKeysym=20?=20QCfunction=20:=20QCordinary;=0A+=20=20=20=20=20=20= emacs_event->modifiers=20=3D=20EV_MODIFIERS2=20(flags,=20kind);=0A=20=0A=20= =20=20=20=20=20=20/*=20Function=20keys=20(such=20as=20the=20F-keys,=20= arrow=20keys,=20etc.)=20set=0A=20=20=20=20=20=20=20=20=20=20modifiers=20= as=20though=20the=20fn=20key=20has=20been=20pressed=20when=20it=0A@@=20= -6296,7=20+6327,9=20@@=20In=20that=20case=20we=20use=20UCKeyTranslate=20= (ns_get_shifted_character)=0A=20=20=20=20=20=20=20=20=20=20).=20=20= We=20need=20to=20unset=20the=20fn=20modifier=20in=20these=20cases.=0A=20=20= =20=20=20=20=20=20=20=20FIXME:=20Can=20we=20avoid=20setting=20it=20in=20= the=20first=20place?=20=20*/=0A=20=20=20=20=20=20=20if=20(fnKeysym=20&&=20= (flags=20&=20NS_FUNCTION_KEY_MASK))=0A-=20=20=20=20=20=20=20=20= emacs_event->modifiers=20^=3D=20parse_solitary_modifier=20= (ns_function_modifier);=0A+=20=20=20=20=20=20=20=20= emacs_event->modifiers=0A+=20=20=20=20=20=20=20=20=20=20^=3D=20= parse_solitary_modifier=20(mod_of_kind=20(ns_function_modifier,=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= QCfunction));=0A=20=0A=20=20=20=20=20=20=20if=20(NS_KEYLOG)=0A=20=20=20=20= =20=20=20=20=20fprintf=20(stderr,=20"keyDown:=20code=20=3D%x\tfnKey=20= =3D%x\tflags=20=3D=20%x\tmods=20=3D=20%x\n",=0A@@=20-9399,57=20+9432,75=20= @@=20Convert=20an=20X=20font=20name=20(XLFD)=20to=20an=20NS=20font=20= name.=0A=20=0A=20=20=20DEFVAR_LISP=20("ns-alternate-modifier",=20= ns_alternate_modifier,=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= "This=20variable=20describes=20the=20behavior=20of=20the=20alternate=20= or=20option=20key.\n\=0A-Set=20to=20the=20symbol=20control,=20meta,=20= alt,=20super,=20or=20hyper=20means=20it=20is=20taken=20to=20be\n\=0A= -that=20key.\n\=0A-Set=20to=20none=20means=20that=20the=20alternate=20/=20= option=20key=20is=20not=20interpreted=20by=20Emacs\n\=0A-at=20all,=20= allowing=20it=20to=20be=20used=20at=20a=20lower=20level=20for=20accented=20= character=20entry.");=0A+Either=20SYMBOL,=20describing=20the=20behaviour=20= for=20any=20event,\n\=0A+or=20(:ordinary=20SYMBOL=20:function=20SYMBOL=20= :mouse=20SYMBOL),=20describing=20behaviour\n\=0A+separately=20for=20= ordinary=20keys,=20function=20keys,=20and=20mouse=20events.\n\=0A+\n\=0A= +Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20`super',=20`hyper'=20= or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20ignored=20by=20Emacs=20= and=20retains=20its=20standard=20meaning.");=0A=20=20=20= ns_alternate_modifier=20=3D=20Qmeta;=0A=20=0A=20=20=20DEFVAR_LISP=20= ("ns-right-alternate-modifier",=20ns_right_alternate_modifier,=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20= the=20behavior=20of=20the=20right=20alternate=20or=20option=20key.\n\=0A= -Set=20to=20the=20symbol=20control,=20meta,=20alt,=20super,=20or=20hyper=20= means=20it=20is=20taken=20to=20be\n\=0A-that=20key.\n\=0A-Set=20to=20= left=20means=20be=20the=20same=20key=20as=20`ns-alternate-modifier'.\n\=0A= -Set=20to=20none=20means=20that=20the=20alternate=20/=20option=20key=20= is=20not=20interpreted=20by=20Emacs\n\=0A-at=20all,=20allowing=20it=20to=20= be=20used=20at=20a=20lower=20level=20for=20accented=20character=20= entry.");=0A+Either=20SYMBOL,=20describing=20the=20behaviour=20for=20any=20= event,\n\=0A+or=20(:ordinary=20SYMBOL=20:function=20SYMBOL=20:mouse=20= SYMBOL),=20describing=20behaviour\n\=0A+separately=20for=20ordinary=20= keys,=20function=20keys,=20and=20mouse=20events.\n\=0A+It=20can=20also=20= be=20`left'=20to=20use=20the=20value=20of=20`ns-alternate-modifier'=20= instead.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_right_alternate_modifier=20=3D=20Qleft;=0A=20=0A=20=20=20= DEFVAR_LISP=20("ns-command-modifier",=20ns_command_modifier,=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20the=20= behavior=20of=20the=20command=20key.\n\=0A-Set=20to=20the=20symbol=20= control,=20meta,=20alt,=20super,=20or=20hyper=20means=20it=20is=20taken=20= to=20be\n\=0A-that=20key.");=0A+Either=20SYMBOL,=20describing=20the=20= behaviour=20for=20any=20event,\n\=0A+or=20(:ordinary=20SYMBOL=20= :function=20SYMBOL=20:mouse=20SYMBOL),=20describing=20behaviour\n\=0A= +separately=20for=20ordinary=20keys,=20function=20keys,=20and=20mouse=20= events.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_command_modifier=20=3D=20Qsuper;=0A=20=0A=20=20=20DEFVAR_LISP=20= ("ns-right-command-modifier",=20ns_right_command_modifier,=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20the=20= behavior=20of=20the=20right=20command=20key.\n\=0A-Set=20to=20the=20= symbol=20control,=20meta,=20alt,=20super,=20or=20hyper=20means=20it=20is=20= taken=20to=20be\n\=0A-that=20key.\n\=0A-Set=20to=20left=20means=20be=20= the=20same=20key=20as=20`ns-command-modifier'.\n\=0A-Set=20to=20none=20= means=20that=20the=20command=20/=20option=20key=20is=20not=20interpreted=20= by=20Emacs\n\=0A-at=20all,=20allowing=20it=20to=20be=20used=20at=20a=20= lower=20level=20for=20accented=20character=20entry.");=0A+Either=20= SYMBOL,=20describing=20the=20behaviour=20for=20any=20event,\n\=0A+or=20= (:ordinary=20SYMBOL=20:function=20SYMBOL=20:mouse=20SYMBOL),=20= describing=20behaviour\n\=0A+separately=20for=20ordinary=20keys,=20= function=20keys,=20and=20mouse=20events.\n\=0A+It=20can=20also=20be=20= `left'=20to=20use=20the=20value=20of=20`ns-command-modifier'=20= instead.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_right_command_modifier=20=3D=20Qleft;=0A=20=0A=20=20=20= DEFVAR_LISP=20("ns-control-modifier",=20ns_control_modifier,=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20the=20= behavior=20of=20the=20control=20key.\n\=0A-Set=20to=20the=20symbol=20= control,=20meta,=20alt,=20super,=20or=20hyper=20means=20it=20is=20taken=20= to=20be\n\=0A-that=20key.");=0A+Either=20SYMBOL,=20describing=20the=20= behaviour=20for=20any=20event,\n\=0A+or=20(:ordinary=20SYMBOL=20= :function=20SYMBOL=20:mouse=20SYMBOL),=20describing=20behaviour\n\=0A= +separately=20for=20ordinary=20keys,=20function=20keys,=20and=20mouse=20= events.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_control_modifier=20=3D=20Qcontrol;=0A=20=0A=20=20=20DEFVAR_LISP=20= ("ns-right-control-modifier",=20ns_right_control_modifier,=0A=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20the=20= behavior=20of=20the=20right=20control=20key.\n\=0A-Set=20to=20the=20= symbol=20control,=20meta,=20alt,=20super,=20or=20hyper=20means=20it=20is=20= taken=20to=20be\n\=0A-that=20key.\n\=0A-Set=20to=20left=20means=20be=20= the=20same=20key=20as=20`ns-control-modifier'.\n\=0A-Set=20to=20none=20= means=20that=20the=20control=20/=20option=20key=20is=20not=20interpreted=20= by=20Emacs\n\=0A-at=20all,=20allowing=20it=20to=20be=20used=20at=20a=20= lower=20level=20for=20accented=20character=20entry.");=0A+Either=20= SYMBOL,=20describing=20the=20behaviour=20for=20any=20event,\n\=0A+or=20= (:ordinary=20SYMBOL=20:function=20SYMBOL=20:mouse=20SYMBOL),=20= describing=20behaviour\n\=0A+separately=20for=20ordinary=20keys,=20= function=20keys,=20and=20mouse=20events.\n\=0A+It=20can=20also=20be=20= `left'=20to=20use=20the=20value=20of=20`ns-control-modifier'=20= instead.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_right_control_modifier=20=3D=20Qleft;=0A=20=0A=20=20=20= DEFVAR_LISP=20("ns-function-modifier",=20ns_function_modifier,=0A-=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20"This=20variable=20describes=20the=20= behavior=20of=20the=20function=20key=20(on=20laptops).\n\=0A-Set=20to=20= the=20symbol=20control,=20meta,=20alt,=20super,=20or=20hyper=20means=20= it=20is=20taken=20to=20be\n\=0A-that=20key.\n\=0A-Set=20to=20none=20= means=20that=20the=20function=20key=20is=20not=20interpreted=20by=20= Emacs=20at=20all,\n\=0A-allowing=20it=20to=20be=20used=20at=20a=20lower=20= level=20for=20accented=20character=20entry.");=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20"This=20variable=20describes=20the=20behavior=20of=20= the=20function=20(fn)=20key.\n\=0A+Either=20SYMBOL,=20describing=20the=20= behaviour=20for=20any=20event,\n\=0A+or=20(:ordinary=20SYMBOL=20= :function=20SYMBOL=20:mouse=20SYMBOL),=20describing=20behaviour\n\=0A= +separately=20for=20ordinary=20keys,=20function=20keys,=20and=20mouse=20= events.\n\=0A+\n\=0A+Each=20SYMBOL=20is=20`control',=20`meta',=20`alt',=20= `super',=20`hyper'=20or=20`none'.\n\=0A+If=20`none',=20the=20key=20is=20= ignored=20by=20Emacs=20and=20retains=20its=20standard=20meaning.");=0A=20= =20=20ns_function_modifier=20=3D=20Qnone;=0A=20=0A=20=20=20DEFVAR_LISP=20= ("ns-antialias-text",=20ns_antialias_text,=0A@@=20-9529,6=20+9580,9=20@@=20= Nil=20means=20use=20fullscreen=20the=20old=20(<=2010.7)=20way.=20=20The=20= old=20way=20works=20better=20with=0A=20=0A=20=20=20DEFSYM=20(Qcocoa,=20= "cocoa");=0A=20=20=20DEFSYM=20(Qgnustep,=20"gnustep");=0A+=20=20DEFSYM=20= (QCordinary,=20":ordinary");=0A+=20=20DEFSYM=20(QCfunction,=20= ":function");=0A+=20=20DEFSYM=20(QCmouse,=20":mouse");=0A=20=0A=20#ifdef=20= NS_IMPL_COCOA=0A=20=20=20Fprovide=20(Qcocoa,=20Qnil);=0A--=20=0A2.21.0=20= (Apple=20Git-122.2)=0A=0A= --Apple-Mail=_B99C4720-7396-41CE-B779-E4E7890D816A--