Форум: "Основная";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
ВнизНет эффекта от переключения раскладки Найти похожие ветки
← →
Трин (2008-07-15 12:56) [0]Здравствуйте, Мастера!
Пишу игрушку, но появились траблы при обработке нажатий клавиш.
Управление типа WASD, поэтому проверку нажатий осуществляю функцией:
procedure iskeydown(c: Char): boolean;
var
vk: integer;
begin
vk := VkKeyScan(c) and $FF;
if vk <> $FF then
Result := (GetAsyncKeyState(vk)<0)
else Result := False;
end;
В действии это выглядит так:
if iskeydown("w") then Player.Go(dForward);
Но по-умолчанию у многих стоит раскладка, являющаяся стандартной для проживающей страны (Русская, Украинская, Итальянская, пр...).
Чтобы избавиться от этого я в Form.Create добавил:
LoadKeyboardLayout("00000409", KLF_ACTIVATE);
При этом языковая панель Windows показывает, что текущий язык Английский, но обработка клавиш не происходит, поэтому мне приходится переключать сначала на русский язык, а потом снова на английский и только тогда программа начинает обрабатывать нажатия клавиш.
← →
Трин (2008-07-15 12:57) [1]Использую TurboDelphi под WindowsXP
← →
KilkennyCat © (2008-07-15 13:10) [2]использовать конструкцию case
использовать коды клавиш
← →
Johnmen © (2008-07-15 13:43) [3]Обработка клавиш в играх никаким боком не связана с раскладками и прочими локальными явлениями.
Обрабатываются скан-коды клавиш. Они абсолютны :)
Обрати внимание на WM_KEYDOWN, читай здесь
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=169
← →
Трин (2008-07-17 14:10) [4]сянкс, думаю тему можно закрывать
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c