C 带Glut的键盘处理程序

C 带Glut的键盘处理程序,c,linux,glut,C,Linux,Glut,我写这段代码是为了使用Glut处理键盘 #include <stdio.h> #include <GL/glut.h> void process_Normal_Keys(int key, int x, int y) { switch (key) { case 27 : break; case 100 : printf("GLUT_KEY_LEFT %d\n",key); break; c

我写这段代码是为了使用Glut处理键盘

#include <stdio.h>
#include <GL/glut.h>

void process_Normal_Keys(int key, int x, int y) 
{
    switch (key) 
    {    
       case 27 :      break;
       case 100 : printf("GLUT_KEY_LEFT %d\n",key);   break;
       case 102: printf("GLUT_KEY_RIGHT %d\n",key);  ;  break;
       case 101   : printf("GLUT_KEY_UP %d\n",key);  ;  break;
       case 103 : printf("GLUT_KEY_DOWN %d\n",key);  ;  break;
    }
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutKeyboardFunc( process_Normal_Keys );  
    glutMainLoop();
    return 0;
}
#包括
#包括
无效进程\u正常\u键(int键、int x、int y)
{
开关(钥匙)
{    
案例27:断裂;
案例100:printf(“GLUT\u键\u左%d\n”,键);中断;
案例102:printf(“GLUT_KEY_RIGHT%d\n”,KEY);;break;
案例101:printf(“GLUT_KEY_UP%d\n”,KEY);;break;
案例103:printf(“GLUT_KEY_DOWN%d\n”,KEY);;break;
}
}
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutKeyboardFunc(处理正常按键);
glutMainLoop();
返回0;
}
当我运行这个程序时,我什么都没有。有人能帮忙吗?

几点注意事项:

  • A-NORMAL-keyboard func将
    无符号字符,int,int
    作为参数,而不是
    int,int,int
    ,您只是占用了更多内存空间

  • 您应该使用
    glutSpecialFunc
    ,因为
    glutKeyboardFunc
    用于普通键,如“W”、“A”等,而
    glutSpecialFunc
    用于箭头键和转义键等,并获取指向具有3
    int
    s的函数的函数指针

  • 键有常量,请更轻松地使用它们:p


  • 你的建议很有用,但没有解决我的问题;)@这是因为你甚至没有初始化一个窗口,我以为你是在理论上讲这段代码。您的代码应该如下所示:好吧,给定的代码运行良好。但我不喜欢任何窗口显示,我只需要控制台应用程序中的键盘处理程序。