Конференция "Основная" » Нет эффекта от переключения раскладки
 
  • Трин (15.07.08 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 показывает, что текущий язык Английский, но обработка клавиш не происходит, поэтому мне приходится переключать сначала на русский язык, а потом снова на английский и только тогда программа начинает обрабатывать нажатия клавиш.
  • Трин (15.07.08 12:57) [1]
    Использую TurboDelphi под WindowsXP
  • KilkennyCat © (15.07.08 13:10) [2]
    использовать конструкцию case
    использовать коды клавиш
  • Johnmen © (15.07.08 13:43) [3]
    Обработка клавиш в играх никаким боком не связана с раскладками и прочими локальными явлениями.
    Обрабатываются скан-коды клавиш. Они абсолютны :)
    Обрати внимание на WM_KEYDOWN, читай здесь
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=169
  • Трин (17.07.08 14:10) [4]
    сянкс, думаю тему можно закрывать
 
Конференция "Основная" » Нет эффекта от переключения раскладки
Есть новые Нет новых   [134491   +13][b:0][p:0.001]