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: Wed, 20 Nov 2019 11:55:04 +0100 Message-ID: <278BB45E-2B2A-4B98-A658-324F1E6F60D2@acm.org> Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_AAC7929A-58CA-4519-ACF1-7628DFC17887" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="168733"; mail-complaints-to="usenet@blaine.gmane.org" To: 38296@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Nov 20 12:41:15 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 1iXOMF-000hlF-1W for geb-bug-gnu-emacs@m.gmane.org; Wed, 20 Nov 2019 12:41:15 +0100 Original-Received: from localhost ([::1]:56764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXOMD-0000ZO-V7 for geb-bug-gnu-emacs@m.gmane.org; Wed, 20 Nov 2019 06:41:13 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42769) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXOM3-0000Ry-GX for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:41:04 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXOM2-0005pf-Dd for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:41:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40209) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iXOM2-0005pR-A6 for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:41:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iXOM2-0008Tk-5x for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:41:02 -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: Wed, 20 Nov 2019 11:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 38296 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.157425002532534 (code B ref -1); Wed, 20 Nov 2019 11:41:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Nov 2019 11:40:25 +0000 Original-Received: from localhost ([127.0.0.1]:49030 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXOLQ-0008Sg-Jr for submit@debbugs.gnu.org; Wed, 20 Nov 2019 06:40:24 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:51952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iXOLO-0008SY-PV for submit@debbugs.gnu.org; Wed, 20 Nov 2019 06:40:23 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42666) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXOLN-0008FP-Et for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:40:22 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXOLL-0004QH-Be for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:40:20 -0500 Original-Received: from mail1476c50.megamailservers.eu ([91.136.14.76]:60014 helo=mail118c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iXOLK-0004Hr-Lt for bug-gnu-emacs@gnu.org; Wed, 20 Nov 2019 06:40:19 -0500 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1574247306; bh=NWqYtif/+hywgQ3mCUnGexjtdy4Bimepe+AHZYtxXIs=; h=From:Subject:Date:To:From; b=nDFsS8eLberR1JctuxwI/FBi6lHhZHAo7gYTCrGU2ZjsPwGnZZdjRjmf/Q2qDG8Kr jzGhOb4+KSZpO3Il3VnNoj5QXXOn3d9lX5cC0UBI1BtrOz1Qe4kbhvdM9jHswxAIW/ Is0iN3Ah1TCKF08y897nY1EvElQHzOMQfrXMQE9E= Feedback-ID: mattiase@acm.or Original-Received: from [192.168.1.64] (c-ee54e353.032-75-73746f71.bbcust.telenor.se [83.227.84.238]) (authenticated bits=0) by mail118c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id xAKAt5EP031739 for ; Wed, 20 Nov 2019 10:55:06 +0000 X-Mailer: Apple Mail (2.3445.104.11) X-CTCH-RefID: str=0001.0A0B0207.5DD51B8A.003E, 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=dLXYZ9Rb c=1 sm=1 tr=0 a=Fmb7hdz85/yTNbhpOvpRKA==:117 a=Fmb7hdz85/yTNbhpOvpRKA==:17 a=M51BFTxLslgA:10 a=drp3avIr7J7FEIP39kAA:9 a=QEXdDO2ut3YA:10 a=9oTz5h4PX-zHKN-gRuIA:9 a=B2y7HmGcmWMA:10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] 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:172049 Archived-At: --Apple-Mail=_AAC7929A-58CA-4519-ACF1-7628DFC17887 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Mac users, especially those of us with a non-US keyboard, need the = Option keys for entering various characters, and thus set = 'ns-alternate-modifier' to nil, or use 'ns-right-alternate-modifier' to = employ only one of them for this purpose. However, this prevents use of = that key as modifier for function keys (arrows, backspace etc) or mouse = actions. This patch adds the variable 'ns-alternate-modifier-char-entry' which, = when non-nil, inhibits the Option key translation to Emacs modifiers for = character keys but allows it for any other event. For example, setting (setq ns-alternate-modifier 'super) (setq ns-alternate-modifier-char-entry t) makes Option act as Super with function keys and mouse clicks, but = retains the standard macOS semantics for character entry (for example, = Option + p =3D =CF=80). --Apple-Mail=_AAC7929A-58CA-4519-ACF1-7628DFC17887 Content-Disposition: attachment; filename=0001-Add-ns-alternate-modifier-char-entry.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Add-ns-alternate-modifier-char-entry.patch" Content-Transfer-Encoding: quoted-printable =46rom=2057e5811920211a41cfd97db9da30acebc32024e7=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Tue,=2019=20Nov=202019=2020:54:49=20+0100=0A= Subject:=20[PATCH]=20Add=20ns-alternate-modifier-char-entry=0A=0AAllow=20= the=20Option=20keys=20to=20be=20used=20for=20normal=20character=20entry=20= while=0Ahaving=20them=20generate=20Emacs=20modifiers=20for=20other=20= events=0Aby=20setting=20'ns-alternate-modifier-char-entry'=20to=20= non-nil.=0A=0A*=20doc/emacs/macos.texi=20(Mac=20/=20GNUstep=20Basics):=20= Document=20the=20variable.=0A*=20lisp/cus-start.el=20(standard):=20Allow=20= customisation.=0A*=20src/nsterm.m=20(EV_MODIFIERS2):=20Add=20argument.=0A= (EV_MODIFIERS):=20Adapt=20EV_MODIFIERS2=20invocation.=0A= (ns_get_shifted_character,=20[EmacsView=20keyDown:]):=20Use=20the=20new=20= variable.=0A(syms_of_nsterm):=20Define=20the=20new=20variable.=0A*=20= etc/NEWS:=20Mention=20the=20new=20variable.=0A---=0A=20= doc/emacs/macos.texi=20|=20=206=20++++++=0A=20etc/NEWS=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= =201=20+=0A=20src/nsterm.m=20=20=20=20=20=20=20=20=20|=2035=20= +++++++++++++++++++++++++----------=0A=204=20files=20changed,=2038=20= insertions(+),=2010=20deletions(-)=0A=0Adiff=20--git=20= a/doc/emacs/macos.texi=20b/doc/emacs/macos.texi=0Aindex=20= d9920957ad..85ede7bd68=20100644=0A---=20a/doc/emacs/macos.texi=0A+++=20= b/doc/emacs/macos.texi=0A@@=20-61,6=20+61,12=20@@=20Mac=20/=20GNUstep=20= Basics=0A=20ignore=20them,=20in=20which=20case=20you=20get=20the=20= default=20behavior=20of=20macOS=0A=20accentuation=20system=20from=20the=20= right=20@key{Option}=20key.=0A=20=0A+@vindex=20= ns-alternate-modifier-char-entry=0A+=20=20To=20make=20the=20@key{Option}=20= keys=20retain=20their=20macOS=20behaviour=20for=0A+entering=20characters=20= but=20work=20as=20Emacs=20modifiers=20with=20function=20keys=20and=0A= +mouse=20actions,=20set=20the=20@code{ns-alternate-modifier-char-entry}=0A= +variable=20to=20a=20non-nil=20value.=0A+=0A=20=20=20@kbd{S-mouse-1}=20= adjusts=20the=20region=20to=20the=20click=20position,=0A=20just=20like=20= @kbd{mouse-3}=20(@code{mouse-save-then-kill});=20it=20does=20not=20pop=0A= =20up=20a=20menu=20for=20changing=20the=20default=20face,=20as=20= @kbd{S-mouse-1}=20normally=0Adiff=20--git=20a/etc/NEWS=20b/etc/NEWS=0A= index=20db00d40bb6..75f54304fe=20100644=0A---=20a/etc/NEWS=0A+++=20= b/etc/NEWS=0A@@=20-3218,6=20+3218,12=20@@=20Previously=20it=20was=20= supported=20only=20in=20the=20Cygwin-w32=20build.=0A=20**=20Emacs=20now=20= handles=20key=20combinations=20involving=20the=20macOS=20"command"=0A=20= and=20"option"=20modifier=20keys=20more=20correctly.=0A=20=0A++++=0A+**=20= New=20user=20option=20'ns-alternate-modifier-char-entry'.=0A+Set=20to=20= non-nil=20to=20allow=20the=20macOS=20"option"=20keys=20to=20be=20used=20= for=20normal=0A+character=20entry=20while=20treating=20them=20as=20Emacs=20= modifiers=20for=20function=20keys=0A+and=20mouse=20events.=0A+=0A=20**=20= The=20special=20handling=20of=20'frame-title-format'=20on=20NS=20where=20= setting=20it=0A=20to=20't'=20would=20enable=20the=20macOS=20proxy=20icon=20= has=20been=20replaced=20with=20a=0A=20separate=20variable,=20= 'ns-use-proxy-icon'.=20=20'frame-title-format'=20will=20now=0Adiff=20= --git=20a/lisp/cus-start.el=20b/lisp/cus-start.el=0Aindex=20= e4b6d8f2d6..9d50108204=20100644=0A---=20a/lisp/cus-start.el=0A+++=20= b/lisp/cus-start.el=0A@@=20-470,6=20+470,7=20@@=20= minibuffer-prompt-properties--setter=0A=20=09=09=20=20=20=20=20=20(const=20= control)=20(const=20meta)=0A=20=09=09=20=20=20=20=20=20(const=20alt)=20= (const=20hyper)=0A=20=09=09=20=20=20=20=20=20(const=20super))=20"23.3")=0A= +=09=20=20=20=20=20(ns-alternate-modifier-char-entry=20ns=20boolean=20= "27.1")=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=20= modifier=20(work=20as=20function)"=20none)=0Adiff=20--git=20= a/src/nsterm.m=20b/src/nsterm.m=0Aindex=20e1d745e332..38a404620d=20= 100644=0A---=20a/src/nsterm.m=0A+++=20b/src/nsterm.m=0A@@=20-380,7=20= +380,7=20@@=20-=20(NSColor=20*)colorUsingDefaultColorSpace=0A=20=20=20= return=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=20= EV_MODIFIERS2(flags,=20enable_alternate_mod)=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-397,13=20+397,15=20= @@=20-=20(NSColor=20*)colorUsingDefaultColorSpace=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= NSEventModifierFlagCommand,=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=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=20=20= ns_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|=20ev_modifiers_helper=20(flags,=20= NSLeftAlternateKeyMask,=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=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=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(enable_alternate_mod=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=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?=20ev_modifiers_helper=20(flags,=20= NSLeftAlternateKeyMask,=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= =20=20NSRightAlternateKeyMask,=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=20=20NSEventModifierFlagOption,=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=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\=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=20ns_right_alternate_modifier)=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20\=0A+=20=20=20=20=20=20:=200))=0A=20=0A= -#define=20EV_MODIFIERS(e)=20EV_MODIFIERS2=20([e=20modifierFlags])=0A= +#define=20EV_MODIFIERS(e)=20EV_MODIFIERS2=20([e=20modifierFlags],=20= true)=0A=20=0A=20#define=20EV_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=20= NSEventTypeLeftMouseDown)=20?=20down_modifier=20:=200)=20=20=20=20=20=20=20= \=0A@@=20-2630,13=20+2632,15=20@@=20so=20some=20key=20presses=20(TAB)=20= are=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(ns_alternate_modifier_char_entry=0A+=20=20=20=20=20=20=20=20=20=20= ||=20EQ=20(ns_right_alternate_modifier,=20Qnone)=0A=20=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=20&&=20EQ=20(ns_alternate_modifier,=20= Qnone))))=0A=20=20=20=20=20modifiers=20|=3D=20rightOptionKey;=0A=20=0A=20= =20=20if=20((flags=20&=20NSLeftAlternateKeyMask)=20=3D=3D=20= NSLeftAlternateKeyMask=0A-=20=20=20=20=20=20&&=20EQ=20= (ns_alternate_modifier,=20Qnone))=0A+=20=20=20=20=20=20&&=20= (ns_alternate_modifier_char_entry=0A+=20=20=20=20=20=20=20=20=20=20||=20= EQ=20(ns_alternate_modifier,=20Qnone)))=0A=20=20=20=20=20modifiers=20|=3D=20= optionKey;=0A=20=0A=20=20=20if=20((flags=20&=20NSRightCommandKeyMask)=20= =3D=3D=20NSRightCommandKeyMask=0A@@=20-6287,7=20+6291,8=20@@=20In=20that=20= case=20we=20use=20UCKeyTranslate=20(ns_get_shifted_character)=0A=20=20=20= =20=20=20=20=20=20=20modifier=20keys,=20which=20returns=200=20for=20= shift-like=20modifiers.=0A=20=20=20=20=20=20=20=20=20=20Therefore=20its=20= return=20value=20is=20the=20set=20of=20control-like=0A=20=20=20=20=20=20=20= =20=20=20modifiers.=20=20*/=0A-=20=20=20=20=20=20emacs_event->modifiers=20= =3D=20EV_MODIFIERS2=20(flags);=0A+=20=20=20=20=20=20bool=20enable_alt=20= =3D=20fnKeysym=20||=20!ns_alternate_modifier_char_entry;=0A+=20=20=20=20=20= =20emacs_event->modifiers=20=3D=20EV_MODIFIERS2=20(flags,=20enable_alt);=0A= =20=0A=20=20=20=20=20=20=20/*=20Function=20keys=20(such=20as=20the=20= F-keys,=20arrow=20keys,=20etc.)=20set=0A=20=20=20=20=20=20=20=20=20=20= modifiers=20as=20though=20the=20fn=20key=20has=20been=20pressed=20when=20= it=0A@@=20-9414,6=20+9419,16=20@@=20Convert=20an=20X=20font=20name=20= (XLFD)=20to=20an=20NS=20font=20name.=0A=20at=20all,=20allowing=20it=20to=20= be=20used=20at=20a=20lower=20level=20for=20accented=20character=20= entry.");=0A=20=20=20ns_right_alternate_modifier=20=3D=20Qleft;=0A=20=0A= +=20=20DEFVAR_BOOL=20("ns-alternate-modifier-char-entry",=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20ns_alternate_modifier_char_entry,=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20"Whether=20the=20option=20or=20= alternate=20keys=20are=20used=20for=20character=20entry.\n\=0A+When=20= non-nil,=20the=20alternate=20/=20option=20keys=20work=20as=20Emacs=20= modifiers=20for\n\=0A+function=20keys=20and=20mouse=20actions=20but=20= not=20with=20character-generating=20keys.\n\=0A+When=20nil,=20the=20keys=20= are=20interpreted=20by=20Emacs=20for=20all=20events.\n\=0A+In=20either=20= case,=20`ns-alternate-modifier'=20and=20`ns-right-alternate-modifier'\n\=0A= +describe=20what=20Emacs=20modifiers=20are=20being=20generated.");=0A+=20= =20ns_alternate_modifier_char_entry=20=3D=20false;=0A+=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=20Set=20to=20the=20symbol=20= control,=20meta,=20alt,=20super,=20or=20hyper=20means=20it=20is=20taken=20= to=20be\n\=0A--=20=0A2.21.0=20(Apple=20Git-122)=0A=0A= --Apple-Mail=_AAC7929A-58CA-4519-ACF1-7628DFC17887--