Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.25;
Скачать: CL | DM;

Вниз

Клавиатура   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
6-81395
demona
2002-05-15 17:25
2002.07.25
Как можно отслеживать и передавать сообщение через netsend


3-81181
alexvan
2002-07-04 11:10
2002.07.25
Не могу вывести в DBComboBox весь список


3-81123
AFROLOV
2002-07-03 11:11
2002.07.25
как узнать сколько записей удовлетворяют фильтру для Dataset


1-81239
Andy BitOff
2002-07-14 16:13
2002.07.25
Как добавить элемент на форму программно


3-81161
Sergey_
2002-07-04 09:06
2002.07.25
Помогите кто знает. Как задекларировать в Delphi переменные ...