2013-03-15 137 views
4

我正在學習使用Pearson, Computer Graphics with OpenGL的書。OpenGL/Glut按鈕和鍵

我目前正在嘗試做一個簡單的方形移動,但在我超越自己之前,我需要確定我明白在Glut中構建了哪些鍵。

我知道下面的鍵:

  • GLUT_KEY_F1, GLUT_KEY_F2, ..., GLUT_KEY_F12 - Page Up和Page Down鍵
  • GLUT_KEY_HOME, GLUT_KEY_END - - Home和End鍵
  • GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP, GLUT_KEY_DOWN通過F12鍵
  • GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN F1 - Arrow keys
  • GLUT_KEY_INSERT - Insert key

我發現他們在我的書或Stackoverflow在另一篇文章中。

但還有更多嗎?例如,鍵盤和鼠標上的所有鍵?

謝謝。

+1

在glut.h文件中看 – yattering 2013-03-15 15:17:40

回答

4

glut通過glutSpecialFunc瓦特除以在鍵盤鍵/ C需要特殊鍵,如F1,F2 ...,NUMPADS等而glutKeyboardFunc需要可以表示所有的鍵由如字母,數字,ESC的字符( ('ASCII'中的27)等等。

in summary,glutKeyboardFunc take char參數可以不使用'\'(反斜槓,如'\ t','\ n')之前的任何字符其餘處理由glutSpecialFunc

+0

輸入鍵似乎是13. – PALEN 2015-01-14 23:10:00

+0

esc不適用於27 – vipin8169 2016-09-25 05:38:13

5

鍵盤有兩組按鈕:那些可以使用ASCII代碼和那些t帽子不能。可以用ASCII表示的那個按下時返回1個字節,不能返回兩個字節的那個首先是NULL

glut通過給你提供兩組函數來處理鍵盤事件:1處理正常的ASCII標準按鈕glutKeyboardFunc,其他特殊處理兩個字節按鈕glutSpecialFunc

特殊功能對普通鍵盤的特殊按鈕常數:

GLUT_KEY_F1:0×0001, GLUT_KEY_F2:0×0002, GLUT_KEY_F3:爲0x0003, GLUT_KEY_F4:0x0004, GLUT_KEY_F5:0×0005, GLUT_KEY_F6:0x0006, GLUT_KEY_F7:0x0007, GLUT_KEY_F8:0×0008, GLUT_KEY_F9:爲0x0009, GLUT_KEY_F10:0x000A, GLUT_KEY_F11:0x000B, GLUT_KEY_F12:0x000C, GLUT_KEY_LEFT:0x0064, GLUT_KEY_UP:0x0065, GLUT_KEY_RIGHT:0x0066, GLUT_KEY_DOWN:0x0067, GLUT_KEY_PAGE_UP:0x0068, GLUT_KEY_PAGE_DOWN:0x0069, GLUT_KEY_HOME:0x006A, GLUT_KEY_END:0x006B, GLUT_KEY_INSERT:0x006C, GLUT_KEY_REPEAT_OFF:爲0x0000, GLUT_KEY_REPEAT_ON:0×0001, GLUT_KEY_REPEAT_DEFAULT:0×0002。

鼠標點擊可與glutMouseFunc來處理並用鼠標按鈕相關聯的常數爲: GLUT_LEFT_BUTTON:0×0000, GLUT_MIDDLE_BUTTON:0×0001, GLUT_RIGHT_BUTTON:0×0002

過剩還可以處理與它具有glutJoystickFunc操縱桿以下常量: GLUT_HAS_JOYSTICK:0x0264, GLUT_OWNS_JOYSTICK:0x0265, GLUT_JOYSTICK_BUTTONS:0x0266, GLUT_JOYSTICK_AXES:0x0267, GLUT_JOYSTICK_POLL_RATE:0x0268, GLUT_JOYSTICK_BUTTON_A:0×0001, GLUT_JOYSTICK_BUTTON_B:0×0002, GLUT_JOYSTICK_BUTTON_C:0x0004, GLUT_JOYSTICK_BUTTON_D:0×0008。

如果您正在使用帶有更多按鈕的遊戲鼠標或鍵盤/遊戲杆,您可以通過將按鈕按下到控制檯來測試每個按鈕的返回情況,然後直接在您的代碼中使用該值來知道其中一個按鈕被按下