Try something like this:
Code:
bool key_state[256] = { false };
void update_func()
{
if(key_state['a'] == true) {
// move left
}
if(key_state['d'] == true) {
// move right
}
if(key_state['w'] == true) {
// move up
}
if(key_state['s'] == true) {
// move down
}
}
void key_down_func(unsigned char key, int x, int y)
{
key_state[key] = true;
}
void key_up_func(unsigned char key, int x, int y)
{
key_state[key] = false;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(800, 600);
glutInitWindowPosition(0, 0);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutCreateWindow("Foobar");
glutDisplayFunc(update_func);
glutIdleFunc(update_func);
glutKeyboardFunc(key_down_func);
glutKeyboardUpFunc(key_up_func);
glutIgnoreKeyRepeat(true);
glutMainLoop();
return 0;
}