void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
void glutSpecialFunc(void (*func)(int key, int x, int y));
int x, int y 에는 윈도우의 마우스 좌표가 출력되며
glutSpecialFunc는 F1~F12 / 화살표 / PgUp / PgDn / Home / End / Insert 에 대한 입력을 받고
glutKeyboardFunc 는 그 외에 모든 키보드 입력을 받는다.
glutSpecialFunc 관련해서는 아래의 파일에 정의가 되어있고, 샘플용 콜백함수도 같이 투척!
$ vi /usr/include/GL/freeglut_std.h 124 * GLUT API macro definitions -- the special key codes:
125 */
126 #define GLUT_KEY_F1 0x0001
127 #define GLUT_KEY_F2 0x0002
128 #define GLUT_KEY_F3 0x0003
129 #define GLUT_KEY_F4 0x0004
130 #define GLUT_KEY_F5 0x0005
131 #define GLUT_KEY_F6 0x0006
132 #define GLUT_KEY_F7 0x0007
133 #define GLUT_KEY_F8 0x0008
134 #define GLUT_KEY_F9 0x0009
135 #define GLUT_KEY_F10 0x000A
136 #define GLUT_KEY_F11 0x000B
137 #define GLUT_KEY_F12 0x000C
138 #define GLUT_KEY_LEFT 0x0064
139 #define GLUT_KEY_UP 0x0065
140 #define GLUT_KEY_RIGHT 0x0066
141 #define GLUT_KEY_DOWN 0x0067
142 #define GLUT_KEY_PAGE_UP 0x0068
143 #define GLUT_KEY_PAGE_DOWN 0x0069
144 #define GLUT_KEY_HOME 0x006A
145 #define GLUT_KEY_END 0x006B
146 #define GLUT_KEY_INSERT 0x006C
|
void keyboard_spe(int key, int x, int y) { switch (key) { case GLUT_KEY_F1: case GLUT_KEY_F2: case GLUT_KEY_F3: case GLUT_KEY_F4: case GLUT_KEY_F5: case GLUT_KEY_F6: case GLUT_KEY_F7: case GLUT_KEY_F8: case GLUT_KEY_F9: case GLUT_KEY_F10: case GLUT_KEY_F11: case GLUT_KEY_F12: break; case GLUT_KEY_LEFT: case GLUT_KEY_RIGHT: case GLUT_KEY_UP: case GLUT_KEY_DOWN: break; case GLUT_KEY_PAGE_UP: case GLUT_KEY_PAGE_DOWN: break; case GLUT_KEY_HOME: case GLUT_KEY_END: case GLUT_KEY_INSERT: break; default: break; } } void keyboard(unsigned char key, int x, int y) { switch (key) { default: break; } } void main() { // ... glutKeyboardFunc(keyboard); glutSpecialFunc(keyboard_spe); // ... }
연유는 모르겠으나,
glutSpecialFunc()와 glutKeyboardFunc() 의 key는 char와 int 형으로 크기가 다르게 정의되어 있으니 주의요망!
2011/09/27 - [Programming/openGL] - GLUT keyboard callback function
2011/03/28 - [Programming/openGL] - openGL callback function - GLUT 키보드 / 마우스 입력
'Programming > openGL' 카테고리의 다른 글
glutTimerFunc() (0) | 2011.10.05 |
---|---|
gluLookAt() 의 기본값 (0) | 2011.10.02 |
GLUI (0) | 2011.09.30 |
glEnable() / glDisable() (0) | 2011.09.30 |
glGet() (0) | 2011.09.30 |