7

Pearson, Computer Graphics with OpenGL我正在使用's 的书自学。

我目前正在尝试做一个简单的方形移动,但在我超越自己之前,我需要确保我了解 Glut 中内置了哪些键。

我知道以下键:

  • GLUT_KEY_F1, GLUT_KEY_F2, ..., GLUT_KEY_F12- F1 到 F12 键
  • GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN- Page Up 和 Page Down 键
  • GLUT_KEY_HOME, GLUT_KEY_END- 主页和结束键
  • GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP, GLUT_KEY_DOWN- 方向键
  • GLUT_KEY_INSERT- 插入键

我要么在我的书中找到它们,要么在另一篇文章的 Stackoverflow 上找到它们。

但是还有吗?例如,对于键盘和鼠标上的所有键?

谢谢。

4

2 回答 2

7

glut将键盘中的键除以glutSpecialFuncw/c 采用特殊键,例如 F1、F2...、NUMPADS 等,同时glutKeyboardFunc采用可以用字母、数字、ESC(“ASCII”中的 27)等字符表示的所有键, ENTER('ASCII' 中的 32)等。

总之,在任何字符之前glutKeyboardFunc获取char可以不使用任何'\'(反斜杠,如'\t','\n')来表示的参数,其余的由处理glutSpecialFunc

于 2013-03-15T15:17:54.337 回答
6

键盘有两组按钮:可以用 ASCII 码表示的按钮和不能用 ASCII 码表示的按钮。可以用 ASCII 表示的那些在按下时返回 1 个字节,那些不能返回两个字节的第一个是NULL

glut 通过为您提供两组处理键盘事件的函数来抽象这一点:一组处理普通的 ASCII 标准按钮glutKeyboardFunc,另一组处理特殊的两字节按钮 glutSpecialFunc

特殊功能具有常用键盘特殊按钮的常量:

GLUT_KEY_F1:0x0001, GLUT_KEY_F2:0x0002, GLUT_KEY_F3:0x0003, GLUT_KEY_F4:0x0004, GLUT_KEY_F5:0x0005, GLUT_KEY_F6:0x0006, GLUT_KEY_F7:0x0007,:0x0007, GLUT_KEY_F8:0x0008, 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:0x0068, GLUT_KEY_PAGE_UP:0x0067 , 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:0x0001, GLUT_KEY_REPEAT_DEFAULT:0x0002。

鼠标点击可以用 处理,glutMouseFunc与鼠标按钮相关的常量是 GLUT_LEFT_BUTTON::0x0000, GLUT_MIDDLE_BUTTON:0x0001, GLUT_RIGHT_BUTTON:0x0002

glut 还可以处理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:0x0001, GLUT_JOYSTICK_BUTTON_B:0x0002, GLUT_JOYSTICK_BUTTON_C:0x0004, GLUT_JOYSTICK_BUTTON_D:0x0008。

如果您使用的是游戏鼠标或带有更多按钮的键盘/操纵杆,您可以通过将按下的按钮输出到控制台来测试每个按钮返回的内容,然后直接在代码中使用此值来了解是否按下了其中一个按钮

于 2014-03-30T22:16:46.863 回答