Subject: bug#12082: 24.1.50; Wrong character showed by "C-h c"

From: Eli Zaretskii <[email-masked]>
Date: Mon, 30 Jul 2012 18:58:44 +0300

> Date: Mon, 30 Jul 2012 17:05:01 +0200
> From: Dani Moncayo <[email-masked]>
> Cc: Juanma Barranquero <[email-masked]>, [email-masked]
> 
> >>   . switch the keyboard to English ("EN" near the system tray), if you
> >>     can, and type a couple of pure ASCII characters
> >
> > [a]
> > warning: w32fns: WM_CHAR 0x61
> > warning: w32term: 0x61 => 0x61 (cp1252)
> >
> > [z]
> > warning: w32fns: WM_CHAR 0x7a
> > warning: w32term: 0x7a => 0x7a (cp1252)
> >
> >>   . switch the keyboard to Spanish and type ç and M-ç
> >
> > [ç]
> > warning: w32fns: WM_CHAR 0xe7
> > warning: w32term: 0xffffffe7 => 0xe7 (cp1252)
> >
> > [M-ç]
> > warning: w32term: 0xffffff87 => 0x2021 (cp1252)
> >
> > (yes, only one message for this character)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This means M-ç gets processed by some code in w32fns.c that doesn't
have a DebPrint.  Can you find out which one (by sticking DebPrint)?
For example, these two fragments look as possible suspects:

1)
	default:
	  /* If not defined as a function key, change it to a WM_CHAR message. */
	  if (wParam > 255 || !lispy_function_keys[wParam])
	    {
	      DWORD modifiers = construct_console_modifiers ();

            ...
	      else
		{
		  /* Let TranslateMessage handle everything else.  */
		  windows_translate = 1;
		}
	    }

2)
    translate:
      if (windows_translate)
	{
	  MSG windows_msg = { hwnd, msg, wParam, lParam, 0, {0,0} };
	  windows_msg.time = GetMessageTime ();
	  TranslateMessage (&windows_msg);
	  goto dflt;
	}

Can you stick a DebPrint into each block and see which one handles
M-ç?