diff src/macterm.c @ 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 5030a4c296d2
children 532fc9301fcd
line wrap: on
line diff
--- 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);