Implementing SMP on a UTF-16 OS (was: Windows keyboard limitations)

Marcel Schneider charupdate at
Mon Aug 10 06:10:34 CDT 2015

On 08 Aug 2015, at 16:39, Eli Zaretskii  wrote:

> The Windows WCHAR is a 16-bit data type. What Windows documentation
> calls "Unicode characters" are Unicode codepoints encoded in UTF-16.

I turn out to be unable to use Unicode codepoints encoded in UTF-16 in the C source of the keyboard driver. When in the static ALLOC_SECTION_LDATA VK_TO_WCHARS9 aVkToWch9[], I use
I get the error “initializer is not a constant”, and when I simply use
[...],0xd835 0xdcea,0xd835 0xdcd0,[...]
I get the syntax error “constant” with a cascade of comma errors.

I note that the MSKLC converts to ligatures of a surrogates pair any SMP character mapped on a key, and that it cannot admit any SMP character in a dead list.
Such an MSKLC layout with U+1D4EA �� and U+1D4D0 �� works on the built-in Notepad, while Word displays .notdef boxes that convert to code points and then to glyphs using Alt+C twice. About LibreOffice and Notepad++, they are unable to display these characters even when pasted from Word or Notepad.

Please donʼt dismiss this issue towards other mailing lists or fora, because on such topics it is very hard out there to get any useful answer. And please donʼt lock it out of the Unicode Mailing List, because itʼs a Unicode implementation topic.

Best regards,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Unicode mailing list