ToUnicodeEx: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646322(v=vs.85).aspx
ToUnicode: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646320(v=vs.85).aspx
It seems that the only difference between the two is that ToUnicodeEx allows the passing of the input locale indentifier parameter as ToUnicode does not. My question is: Does ToUnicode itself call ToUnicodeEx?
Also, at the bottom of the ToUnicodeEx msdn page, in the remarks section, we see: As ToUnicodeEx translates the virtual-key code, it also changes the state of the kernel-mode keyboard buffer. This state-change affects dead keys, ligatures, alt+numpad key entry, and so on. It might also cause undesired side-effects if used in conjunction with TranslateMessage (which also changes the state of the kernel-mode keyboard buffer).
Does anyone know exactly what it is doing the kernel-mode kb buffer?