Приветствую.
Гипотеза - на каждой нормальной клавиатуре, ориентированной на представителя любой культуры говорящего на любом языке на клавишах вторым рядом выбита латиница.
Как без заморочек о типах раскладок (всякие QWERTY и AZERTY) получить латинскую букву передав на вход что-то из нелатинской раскладки? Например:
char translate(wchar_t sym);
cout << translate(L'й')
<< translate(L'ц')
<< translate(L'у')
<< translate(L'к')
<< translate(L'е')
<< translate(L'н');
// cout: qwerty
Т.е. какая-то либа, которая спросит у системы тип клавиатуры, может раскладки, и даст ответ, на регистр можно забить и всегда выдавать в нижнем или верхнем.