changeset 48926:fc0983df599f

* macterm.c (XTread_socket): Call KeyTranslate for control and meta to deal correctly shifted non-alpha characters, like C-S-5 being treated like C-%. Does not look for shift key to deal with masking off control-key with mac-reverse-ctrl-meta.
author Steven Tamm <steventamm@mac.com>
date Sun, 22 Dec 2002 21:09:20 +0000
parents cd1c70649388
children 148675770a17
files src/ChangeLog src/macterm.c
diffstat 2 files changed, 14 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sun Dec 22 00:21:06 2002 +0000
+++ b/src/ChangeLog	Sun Dec 22 21:09:20 2002 +0000
@@ -1,3 +1,10 @@
+2002-12-22  Steven Tamm  <steventamm@mac.com>
+
+	* macterm.c (XTread_socket): Call KeyTranslate for control and
+	meta to deal correctly shifted non-alpha characters, like C-S-5
+	being treated like C-%.  Does not look for shift key to deal
+	with masking off control-key with mac-reverse-ctrl-meta.
+
 2002-12-21  Richard M. Stallman  <rms@gnu.org>
 
 	* xmenu.c (popup_get_selection): Now static.  New arg DO_TIMERS.
--- a/src/macterm.c	Sun Dec 22 00:21:06 2002 +0000
+++ b/src/macterm.c	Sun Dec 22 21:09:20 2002 +0000
@@ -12931,26 +12931,19 @@
 	      bufp->code = 0xff00 | xkeysym;
 	      bufp->kind = NON_ASCII_KEYSTROKE_EVENT;
 	    }	   
-	  else if (!NILP (Vmac_reverse_ctrl_meta) && (er.modifiers & controlKey))
-	    {
-	      /* This is a special case to deal with converting from
-		 a control character to non-control character */
-	      int new_modifiers = er.modifiers & ~controlKey;
-	      int new_keycode = keycode | new_modifiers;	      
-	      Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
-	      unsigned long some_state = 0;
-	      bufp->code = KeyTranslate (kchr_ptr, new_keycode, &some_state) & 0xff;
-	      bufp->kind = ASCII_KEYSTROKE_EVENT;
-	    }
 	  else
 	    {
-	      if (er.modifiers & macMetaKey)
+	      if (er.modifiers & (controlKey | 
+				  (NILP (Vmac_command_key_is_meta) ? optionKey 
+				   : cmdKey)))
 		{
 		  /* This code comes from Keyboard Resource, Appendix
 		     C of IM - Text.  This is necessary since shift is
 		     ignored in KCHR table translation when option or
-		     command is pressed. */
-		  int new_modifiers = er.modifiers & 0xf600;
+		     command is pressed.  It also does not translate 
+		     correctly control-shift chars like C-% so mask off
+		     shift here also */
+		  int new_modifiers = er.modifiers & 0xe600;
 		  /* mask off option and command */
 		  int new_keycode = keycode | new_modifiers;
 		  Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);