Possible to add new precomposed characters for local language in Togo?

Marcel Schneider charupdate at orange.fr
Fri Nov 4 22:33:00 CDT 2016

Sorry, while trying to look up MSDN, I lost touch with the discussion 
and didnʼt notice that my information about “more than 4 code units”, 
more precisely “16 code units” by a live key press has been questioned 
again. Even if primarily off-topic, it is a rather useful subject, along 
with the input of several code units by dead keys (which admittedly is 
more important). 

To achieve the requested materialization, you are welcome to do the 
following steps:
1) Open http://dispoclavier.com
2) Click the download button [Télécharger]
3) Unzip the folder 
4) Browse to ‘DTM_Dispoclavier_v0.9.0.44\DTMD_v0.9.0.44_(installation)\
kbdfrf81 azerty déployé capitales et chiffres v0.9.0.44 installation’
5) Read the ‘Note’
6) Run the ‘setup.exe’ (noticing that it has been provided by MSKLC)
7) Click the Language button in the Language bar and select ‘French (France)’
8) Eventually click the Keyboard button and select ‘DTMD France azerty déployé
capitales et chiffres’
9) Make sure to use an ISO keyboard with a key for VK_OEM_105; 
or remap the left Windows key to it: if no key is already remapped, merge this:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,56,00,5b,e0,5b,e0,56,00,\

(When this is used with an ISO keyboard, the two keys are swapped.)
10) Press the following three keys together: Left Shift; the ISO key or if 
remapped, the Left Windows key; Q (on AZERTY) or A (on QWERTY).
The expected keyboard input is: ‘ ↑q_n’existe_pas’ [“superscript small q 
does not exist”] preceded by a white space for quick erase by Ctrl+Backspace.
Please note that in the next version. ‘↑’ will be replaced by ‘^’, since ‘^’ 
will be the character of the superscript dead key, while the character of the 
circumflex dead key is ‘ê’.

Along with this test, you may wish to look up the sources in the other main 
folder. 16 is the empirically stated maximum number of inserted code units.

Best regards,

> Message du 04/11/16 21:58
> De : "Doug Ewell" 
> A : verdy_p at wanadoo.fr
> Copie à : "Marcel Schneider" , "Denis Jacquerye" , "Mats Blakstad" , 
"Unicode Mailing List" 
> Objet : RE: Possible to add new precomposed characters for local language in Togo?
> Philippe Verdy wrote:
> > Consider this source code (based on Microsfot "kbd.h", even if it is
> > ported to ReadOS)
> >
> > https://doxygen.reactos.org/d7/df4/kbd_8h_source.html
> >
> > Look for the structures named with "LIGATURE"
> >
> > And now look at the special entry value "WCH_LGTR"=0xF002 (i.e. a
> > PUA), which indicate these keys are mapped using those "LIGATUREn"
> > structures (which have arbitrary lengths in WCHAR/UTF-16 code units),
> > instead of storing a 16-bit code unit directly.
> >
> >  predefines LIGATURE1 to LIGATURE5 but longer lengths are
> > possible (see cbLgEntry and nLgMaxd members in the KBDTABLE structure)
> >
> > The table of ligatures in linked from the pLigature member of the
> > KBDTABLES structure, which points to the first set of LIGATURE1
> > mappings.
> OK, I understand now. We are rehashing the discussion on this list from
> August 2015, in which Marcel claimed that the presence of these lines in
> kbd.h:
> #define TYPEDEF_LIGATURE(i) \
> typedef struct _LIGATURE ## i { \
> BYTE VirtualKey; \
> WORD ModificationNumber; \
> WCHAR wch[i]; \
> } LIGATURE ## i, *PLIGATURE ## i;
> was proof that some version of Windows actually supported ligatures
> longer than 4 code units (WCHARs). But no such proof ever materialized.
> There is still no documentation and no examples of any native Windows
> keyboard that generates more than 4 code units from one keystroke.
> kbd.h could declare:
> and a user could compile it, and that would have nothing to do with
> whether the Windows runtime could actually handle a LIGATURE structure
> of that size.
> Going beyond 4 seems like such a useful and intriguing enhancement, for
> some folks anyway, that if it were possible, it should be easy to find
> at least one example where some DDK developer has utilized it.
> And once again, that is not what Mats was talking about. He was talking
> about dead-key combinations not being able to generate more than ONE
> code unit. And if you go back and look at kbd.h, you will see this:
> typedef struct _DEADKEY {
> DWORD dwBoth;
> WCHAR wchComposed;
> USHORT uFlags;
> Notice the absence of any array of 4, 6, or 8192 WCHARs. Only one WCHAR
> can be composed from a dead-key sequence. This is why Mats was unable to
> create a keyboard for double-accented letters that don't map to a single
> BMP code point using dead keys. (Correct, Mats?)
> A clarification: When I said "send or post the *actual code*", I assumed
> you were creating KLC files and running them through kbdutool (bypassing
> MSKLC), as you implied yesterday, not examining C++ code from the DDK. I
> apologize for this unstated assumption and the confusion it caused, but
> I still don't see any facts to support either the claim that a single
> keystroke can generate more than 4 code units, or the claim that a dead
> key combination can generate more than 1.
> I'm currently trying to see if there is a Microsoft employee or business
> unit that can resolve these questions for us once and for all.
> --
> Doug Ewell | Thornton, CO, US | ewellic.org

More information about the Unicode mailing list