Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Как перевести текст из одной раскладки в другую (“Home” --> “Рщьу”)

Есть слово на английском Home его нужно перевести в слово Рщьу
Т.е. перевести из английской раскладки в русскую. Понятно, что для двух раскладок можно составить словарь перевода.
Есть ли готовые инструменты для нескольких раскладок?
Например для следующих переводов:
EN > RU
RU > EN
ES > EN
EN > ES
JA > EN
ZH > EN
AR > EN


Ответ

Можно попробовать сделать так:
[DllImport("user32.dll")] public static extern int ToUnicode(uint virtualKeyCode, uint scanCode, byte[] keyboardState, [Out, MarshalAs(UnmanagedType.LPWStr, SizeConst = 64)] StringBuilder receivingBuffer, int bufferSize, uint flags);
static char GetChar(char key) { bool isUpper = char.IsUpper(key); var buf = new StringBuilder(256); var keyboardState = new byte[256];
ToUnicode((uint)char.ToUpper(key), 0, keyboardState, buf, 256, 0); return isUpper ? char.ToUpper(buf[0]) : buf[0]; }
static void Main(string[] args) { var str = "Home";
for (int i = 0; i < str.Length; i++) { Console.Write(GetChar(str[i])); } }
Для русского языка выведет: Рщьу

Комментариев нет:

Отправить комментарий