Есть слово на английском 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]));
}
}
Для русского языка выведет: Рщьу
Комментариев нет:
Отправить комментарий