Subject: Re: bug#10299: Emacs doesn't handle Unicode characters in keyboard layout on MS Windows

From: Joakim Hårsman <[email-masked]>
Date: Thu, 15 Dec 2011 21:50:58 +0100

On 15 December 2011 18:34, Eli Zaretskii <[email-masked]> wrote:
>> From: Jason Rumney <[email-masked]>
>> Cc: Joakim Hårsman <[email-masked]>,
>>   [email-masked],  [email-masked]
>> Date: Thu, 15 Dec 2011 22:40:15 +0800
>>
>> > Yes, Emacs on Windows uses the ANSI codepage to read the keyboard
>> > input.  Does it help to play with the value of keyboard-coding-system?
>>
>> It tries to use Unicode if the Windows input method is sending it.
>
> But am I right that, except for perhaps IME, we mostly get WM_CHAR
> messages with ANSI character set, because we call the ANSI version of
> RegisterClass?
>
> If that is the reason, are there any complications to call
> RegisterClassW instead (on NT and later systems; I think Windows 9X
> are safer with ANSI)?
>
>> Some input methods will send WM_UNICHAR messages with the Unicode
>> character, which can be intercepted before they are turned into question
>> marks by Windows. These will just work with Emacs.
>>
>> Others will send character codes corresponding to the codepoints in the
>> default Windows codepage for that language (regardless of your system
>> codepage). These can be handled by changing keyboard-coding-system
>> within Emacs.
>>
>> Others will not send anything useful unless your system codepage is set
>> appropriately for the language being input.
>>
>> It sounds like this one may be in the third category.
>
> I'm not sure MKLC works through IME.  Do you know that for a fact?

No, I'm just guessing since Emacs has worked with Unicode IMEs I've
tried in the past, but doesn't work with MKLC layouts. Instead of
debating, it seems easier to just get Emacs running with a debugger
and see what messages get delivered and what happens to them.

Anyway, I've gotten the latest Bazaar trunk but I haven't managed to
get it to build, compilation of make-docfile.c fails because it can't
find config.h:

gcc -I. -c -gdwarf-2 -g3  -mtune=pentium4 -O2      -Demacs=1 -DHAVE_CONFIG_H -I.
./lib -I../nt/inc -DHAVE_NTGUI=1 -DUSE_CRT_DLL=1 -DPURESIZE=5000000 -DPURESIZE=5
000000 -o oo-spd/i386/make-docfile.o make-docfile.c
make-docfile.c:36:20: config.h: No such file or directory
make-docfile.c:79: error: syntax error before "NO_RETURN"
make-docfile.c:79: warning: data definition has no type or storage class
make[8]: *** [oo-spd/i386/make-docfile.o] Error 1
make[8]: Leaving directory `D:/Dev_projects/emacs/trunk/lib-src'
make[7]: *** [bootstrap-gmake] Error 2
make[7]: Leaving directory `D:/Dev_projects/emacs/trunk/nt'

I'm not really sure what to make of this, config.h is in trunk/src,
but gcc doesn't seem to be looking there from what I can see. Are
there more detailed build instructions available or is nt/INSTALL all
there is?

All I'm doing is cd:ing into the nt directory, running configure and
then make bootstrap.