Lighthouse3d.com >> GLUT Tutorial >> Input >> Advanced Keyboard

本节我们会介绍另外4个处理键盘事件的函数.这些函数手把手的把我们从处理自动重复输入按键的问题中释放.

第一个函数允许我们关闭键盘自动重复输入.原型如下:

int glutSetKeyRepeat(int repeatMode);

repeatMode - 开启,关闭和恢复自动重复输入模式.可选值如下:

GLUT_KEY_REPEAT_OFF – 关闭自动重复输入模式

GLUT_KEY_REPEAT_ON – 开启自动重复输入模式

GLUT_KEY_REPEAT_DEFAULT – 重置为默认值

注意,该函数是全局的,该设置会影响所有窗体,不只包括我们创建的窗体.所以当使用完该函数后,最好用重置到用之前的状态.

GLUT提供一个安全途径来禁用键盘按键重复输入的回调函数.这让我们安全的忽略键盘重复,并且不会影响操作系统的其它应用.原型如下:

int glutIgnoreKeyRepeat(int repeatMode);

repeatMode – 0是禁止自动重复输入,正值是允许.

有的时候我们想要停止接收按键重复发生时的回调.另外当你想要在按键释放时做处理,GLUT提供了两个函数来处理按键释放事件.

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

void glutSpecialUpFunc(void (*func)(int key,int x, int y));

func – 绑定的回调函数的名字

该绑定函数的参数定义跟上一节的键盘事件一样.

[译]GLUT教程 - 键盘高级特性的更多相关文章

  1. [译]GLUT教程 - 键盘

    Lighthouse3d.com >> GLUT Tutorial >> Input >> Keyboard GLUT可以让应用程序自动监测键盘输入,包括普通按键和 ...

  2. [译]GLUT教程(目录)

    http://www.lighthouse3d.com/tutorials/glut-tutorial/ GLUT是OpenGL Utility Toolkit的意思.作者Mark J. Kilgar ...

  3. [译]GLUT教程 - 移动镜头2

    Lighthouse3d.com >> GLUT Tutorial >> Input >> Move the Camera II 本节的最后一个示例是回顾.现在我们 ...

  4. [译]GLUT教程 - 鼠标

    Lighthouse3d.com >> GLUT Tutorial >> Input >> The Mouse 上一节我们讨论了怎么用GLUT的键盘函数跟OpenG ...

  5. [译]GLUT教程 - glutPostRedisplay函数

    Lighthouse3d.com >> GLUT Tutorial >> Avoiding the Idle Func >> glutPostRedisplay 直 ...

  6. [译]GLUT教程 - 渲染到子窗体

    Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Rendering to Subwindows 先回顾一下之前 ...

  7. [译]GLUT教程 - 创建和关闭子窗体

    Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Creating and Destroying Subwind ...

  8. [译]GLUT教程 - 游戏模式

    Lighthouse3d.com >> GLUT Tutorial >> Extras >> Game Mode 根据GLUT官网的说明,GLUT的游戏模式是为开启 ...

  9. [译]GLUT教程 - 每秒帧数

    Lighthouse3d.com >> GLUT Tutorial >> Extras >> Frames per Second 你的程序实际上跑得多快? 有时我们 ...

随机推荐

  1. 中国石油大学(华东)OJ题目的HTML爬取

    这几天刷华东OJ的题,写博客还要复制HTML的代码,感觉麻烦的一批,然后就去摸鱼写了个小爬虫.. 看一下运行效果吧- 输入详细的pid.cid或id即可爬取相应的html代码 一些注意要点: 关键的还 ...

  2. CV

    Business Analyst Resume Name:  Zhou Heng Cell:  15821661982  Email :  jackyzhouheng@gmail.com Self A ...

  3. [BZOJ 1567] Blue Mary的战役地图

    Link: BZOJ 1567 传送门 Solution: 矩阵Hash/二维$Hash$模板题 涉及到需要快速查询.匹配的题目,考虑直接上$Hash$ 矩阵$Hash$其实就是每行先各$Hash$一 ...

  4. Bean 生命周期&&模块化配置

    (一)审生命周期 1,配置一个方法作为生命初始化方法Spring会在对象创建后调用(init-method) 2,配置一个方法生命周期的销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用. ...

  5. sql cast函数

    一.语法: CAST (expression AS data_type) 参数说明: expression:任何有效的SQLServer表达式. AS:用于分隔两个参数,在AS之前的是要处理的数据,在 ...

  6. 使用ffmpeg截取视频封面并批量上传

    需求:将视频文件压入zip包,然后上传服务器.服务器对zip解压,使用bat/shell,使用ffmpeg对视频进行封面截取.再使用OSS对视频和封面进行批量上传.最后将信息存入数据库 遇到的问题 1 ...

  7. swftools使用

    为了支持gif转swf以及pdf转swf.编译swftools过程中遇见几个问题,记录一下. 首先下载swftools:http://www.swftools.org/ 它依赖几个包,这里我使用的版本 ...

  8. 2017.6.30 使用git新建项目、仓库并拉取、提交代码

    1.在码云上新建一个项目rms 2.在本地指定位置新建仓库,生成.git文件夹 3.同步远程仓库,并拉取最新代码 远程仓库默认名为orgin.可以修改,这里就是用默认名了. 注意:这里使用ssh方式的 ...

  9. FizzBuzz and Fibonacci优化

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  10. WCF configure

    1. maxBufferSize 一个正整数,指定内存中用于存储消息的缓冲区的最大大小(字节). 如果 transferMode 属性等于 Buffered,则此属性应等于 maxReceivedMe ...