OpenGL / Glut 按钮和键

OpenGL / Glut Buttons and Keys

本文关键字:按钮 Glut OpenGL      更新时间:2023-10-16

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

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

我知道以下键:

  • GLUT_KEY_F1, GLUT_KEY_F2, ..., GLUT_KEY_F12 - F1 到 F12 键
  • GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN - 向上翻页和向下翻页键
  • GLUT_KEY_HOME, GLUT_KEY_END - 主页和结束键
  • GLUT_KEY_LEFT, GLUT_KEY_RIGHT, GLUT_KEY_UP, GLUT_KEY_DOWN - 箭头钥匙
  • GLUT_KEY_INSERT - 插入键

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

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

谢谢。

>glut将键盘中的键除以glutSpecialFunc w/c采用特殊键,如F1,F2...,NUMPADS等,而glutKeyboardFunc采用所有可以用字符表示的键,如字母,数字,ESC("ASCII"中的27(,ENTER("ASCII"中的32(等。

总之,glutKeyboardFunc char参数,这些参数可以在不使用任何"\"(反斜杠,如"\t"、""(的情况下表示,其余字符由glutSpecialFunc

处理

键盘有两组按钮:可以使用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, 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 :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 :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。

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