Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Обработка клавиатуры GLUT


Автор: AnLun 23.11.2008, 12:01
По обработке клавиатуры в GLUT я нашел 2 функции:
Код

(1) void glutKeyboardFunc(void (*func) (unsigned char key, int x, int y)); 

(2) void glutSpecialFunc(void (*func) (int key, int x, int y)); 


Можно ли каким-то способом обрабатывать коды клавиш (т.к. (2) обрабатывает только определенный набор клавиш, а (1) символы)?
Т.е. не зависимо от выбранной раскладки обрабатывать, к примеру, клавишу 'A' (не описывая 'a', 'Ф', 'ф' итд).

При этом надо, чтобы обрабатывалось несколько одновременных нажатий. 'W' и 'A' к примеру.

Автор: sgi1981 25.11.2008, 01:12
Какую среду программирования используешь ?

Автор: AnLun 25.11.2008, 20:56
CodeBlocks

Автор: Gongex 15.2.2009, 00:43
Код

GLvoid Controls(GLvoid)
{

if(GetAsyncKeyState(VK_UP)) //нажата стрелка "вверх"?
  {
  
  }
if(GetAsyncKeyState(VK_DOWN)) //нажата стрелка "вниз"?
  {
  
  }
if(GetAsyncKeyState(VK_RIGHT)) //нажата стрелка "вправо"?
  {
  
  }
if(GetAsyncKeyState(VK_LEFT)) //нажата стрелка "влево"?
  {
 

  }
}


и потом вызываешь её 

                                                                TranslateMessage(&msg);                
                DispatchMessage(&msg);                
            }
        }
        else                                        
        {
             DrawGLScene()
            if (active)                                
            {
                if (keys[VK_ESCAPE])                
                {
                    done=TRUE;                        
                }
                else                                
                {
                    DrawGLScene();    
                    Controls(); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



M
Alexeis
Модератор: используйте подсветку кода

Автор: AnLun 18.3.2009, 19:47
Спасибо, наконец ответили, даже не заметил до сего дня smile 
Сразу несколько вопросов:
1)GetAsyncKeyState - на сколько понимаю не glut'овская функция. Она из какой библиотеки?(просто мне нужно именно средствами glut, т.к. проект кроссплатформенный)
2)А как обрабатывать буквы? GetAsyncKeyState('X')?

Автор: KaraKum 19.3.2009, 17:21
Используя GLUT ничего серьёзного не напишешь - эта библиотека в основном создана для быстрых и простых примеров OpenGL. Например толком нельзя отловить момент отпускания нажатой клавиши - иногда это вообще не нужно, а иногда критично.
Используй SDL - кроссплатформенная  smile .

Автор: AnLun 22.3.2009, 17:56
Мне нужен OpenGL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)