Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-81395
demona
2002-05-15 17:25
2002.07.25
Как можно отслеживать и передавать сообщение через netsend


14-81413
Sergo
2002-06-26 17:07
2002.07.25
AVI


1-81362
SemFLY
2002-07-11 22:35
2002.07.25
Как открыть CD-ROM, но тока тот который Slave, а не Master ?


1-81365
Brand
2002-07-13 23:20
2002.07.25
Edit1.Text (***)


1-81372
maxim2
2002-07-13 10:16
2002.07.25
Можноли в событии MouseDown вызвать событие MouseMove





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский