您的位置:首页 > 运维架构

OpenGL键盘事件处理

2015-04-19 18:10 169 查看
GLUT提供了两个函数用于设置键盘事件的回调函数,一个用于处理普通按键,一个处理特殊功能按键(如箭头、F1~F12)。

先看看处理普通按键的函数:

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


回调函数func的第一个参数是按键的ASCII码,剩下的是按键时候的鼠标坐标。鼠标坐标是相对窗口的左上角的。

示例:

void processNormalKeys(unsigned char key, int x, int y) {
if (key == 27)
exit(0);
}


另一个处理特殊按键的函数是:

void glutSpecialFunc(void (*func) (int key, int x, int y));
回调函数的第一个参数可以是:

key常量

描述

GLUT_KEY_F1

F1功能键

GLUT_KEY_F2

F2功能键

GLUT_KEY_F3

F3功能键

GLUT_KEY_F4

F4功能键

GLUT_KEY_F5

F5功能键

GLUT_KEY_F6

F6功能键

GLUT_KEY_F7

F7功能键

GLUT_KEY_F8

F8功能键

GLUT_KEY_F9

F9功能键

GLUT_KEY_F10

F10功能键

GLUT_KEY_F11

F11功能键

GLUT_KEY_F12

F12功能键

GLUT_KEY_LEFT

左方向键

GLUT_KEY_UP

上方向键

GLUT_KEY_RIGHT

右方向键

GLUT_KEY_DOWN

下方向键

GLUT_KEY_PAGE_UP

PageUp键

GLUT_KEY_PAGE_DOWN

PageDown键

GLUT_KEY_HOME

Home键

GLUT_KEY_END

End键

GLUT_KEY_INSERT

Insert键

后两个参数是鼠标的坐标。
除了以上两个函数,还有一个函数用于判断CTRL,ALT和SHIFT键的状态:

int glutGetModifiers(void);
它的返回值是GLUT_ACTIVE_SHIFT、GLUT_ACTIVE_CTRL和GLUT_ACTIVE_ALT的按位或。示例:

mod = glutGetModifiers();
if (mod == (GLUT_ACTIVE_CTRL|GLUT_ACTIVE_ALT)) {
//TODO
}


通常这个函数会在键盘事件的回调函数中被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: