So you never actually catch a WM_UNICHAR message, only WM_CHAR?
https://msdn.microsoft.com/de-de/library/windows/desktop/ms646288(v=vs.85).aspx
See comment concerning wParam:
The Unicode DefWindowProc posts a WM_CHAR message with the same parameters and the ANSI DefWindowProc function posts either one or two WM_CHAR messages with the corresponding ANSI character(s).
Sounds like what is happening to you.
Then you could build your own inkeyw based on custom message handling.
#include <acknex.h>
#include <windows.h>
LRESULT CALLBACK OriginalHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK MyMessageHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (WM_UNICHAR == message)
{
printf("OMG it's Unicode!");
return 0;
}
return OriginalHandler(hwnd,message,wParam,lParam);
}
function main()
{
OriginalHandler = on_message; // store the original message loop
on_message = MyMessageHandler; // and replace it by your own
...
}