Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
ВнизКлавиатура Найти похожие ветки
← →
BAY (2002-07-12 15:44) [0]Можно как нибудь определить по латинской букве, какая на той-же клавише русская и наоборот, не набивая массив.
← →
Kaban (2002-07-12 15:46) [1]класс, нет точно пора клюкву вводить
← →
Viewer (2002-07-12 15:50) [2]Собственно, что написано на клавишах - то системе не известно.
Так, что скан код один и тот же.
Раскладка определяется через ActivateKeyboardLayout
← →
Eugene Lachinov (2002-07-12 15:53) [3]function TranslateChar(Ch : Char; UpperCase : Boolean) : Char;
const
TranslateChars : array[#65..#90] of char =
("Ф", "И", "С", "В", "У", "А", "П", "Р", "Ш", "О", "Л", "Д", "Ь", "Т",
"Щ", "З", "Й", "К", "Ы", "Е", "Г", "М", "Ц", "Ч", "Н", "Я");
begin
case Ch of
#34, #39 : Result := "Э";
#58, #59 : Result := "Ж";
#44, #60 : Result := "Б";
#46, #62 : Result := "Ю";
#91, #123 : Result := "Х";
#93, #125 : Result := "Ъ";
#65..#90 : Result := TranslateChars[Ch];
#97..#122 : begin
Result := TranslateChars[Char(Byte(Ch)- 32)];
if not UpperCase then
Result := Char(Byte(Result) + 32)
end;
#224..#255 : if UpperCase then
Result := Char(Byte(Ch)- 32)
else
Result := Ch
else
Result := Ch
end
end;
← →
Eugene Lachinov (2002-07-12 15:56) [4]Что-то тут странное написано, но видимо хватало :)
← →
BAY (2002-07-12 16:16) [5]>>Собственно, что написано на клавишах - то системе не известно.
>>Так, что скан код один и тот же.
Ну это и ежу понятно
>>Раскладка определяется через ActivateKeyboardLayout
А вот это то, что нужно :)
← →
BAY (2002-07-12 16:17) [6]>>Eugene Lachinov
не набивая массив.
← →
Malder (2002-07-12 17:04) [7]Позволю себе вмешаться.
Можно как нибудь определить по латинской букве, какая на той-же клавише русская
это невохможно сделать, даже набивая массив. Так как вы, вероятно, привыкли к обычной раскладке клавиатуры. Но есть же и другие варианты, например, Дворака (точно не помню).
И вообще не факт, что в последствии соответствия между русскими-английскаи буквами не будет исправлено (навряд ли, конечно).
← →
BAY (2002-07-12 17:12) [8]>>Malder
Позволю с тобой не согласиться. Я отказался от набивки массива, как раз по этой причине. По следующей схеме всегда можно определить соответствия латинской и русской буквы на клавише:
латинская буква <-(латинская раскладка)-> скан код <-(русская раскладка)-> русская буква
Через ActivateKeyboardLayout узнаю раскладки.
← →
Eugene Lachinov (2002-07-12 17:32) [9]>BAY
Если не жалко, приведи пожалуйста в форуме код, который у тебя получился для определения по латинской букве соответствующую русскую.
← →
Malder (2002-07-12 17:39) [10]BAY, ну вообще можно. Но ты узнаешь то, что считает драйвер клавиатуры. А на самом деле, на клавиатуре может быть нарисовано совсем другое =)
← →
BAY (2002-07-12 17:54) [11]>Malder
Да, но если я нажимаю на клавишу и у меня печатается буква Зю на латинском и быква Пю на русском, то я найду это соответствие
>Eugene Lachinov
Ок
← →
BAY (2002-07-12 19:19) [12]Код еще не отлажен, но уже из строчных русских перекодирует в латинские:
type
TKBLayout = array [0..1] of HKL;
PKBLayout = ^TKBLayout;
rec = record
c, c1, c2, c3: char;
end;
var
i :Integer;
KBLayoutList : PKBLayout;
begin
New(KBLayoutList);
GetKeyboardLayoutList(2,KBLayoutList^);
For i := 1 to Length(S) do
S[i] := rec(MapVirtualKeyEx(VkKeyScanEx(S[i],KBLayoutList^[1]), 2,KBLayoutList^[0])).c;
Dispose(KBLayoutList);
end;
← →
начинающий програмер (2002-07-12 20:58) [13]
> Код еще не отлажен, но уже из строчных русских перекодирует
> в латинские:
Прикольно
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c