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. 如何理解java反射?

    一.反射基本概念 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产 ...

  2. the-swift-programming-language 学习笔记

    常量和变量 常量是定义是不可以修改的,在类中定义的常量,可以在构造函数中赋值.let修饰变量是可以修改的.var修饰字符串中字符的遍历for code in string {}for codeunit ...

  3. ES6 Promise的resolved深入理解

    Promise的概念在ES6标准推出来之前已经深入人心,很多框架和第三方库都有类似的实现.但在深入理解ES6的Promise对象的时候,受之前经验的影响,很多概念给人似是而非的感觉,其中有一个特别明显 ...

  4. 【CodeForces 788B】奇妙的一笔画问题

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=61845295 题目大意 给定n个点m条边的无向图 ...

  5. 基于avalon+jquery做的bootstrap分页控件

    刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js:基于BootStrap样式这个大家都很熟悉 在这里推荐下国产前端神器avalon:确实好用,帮我解决了很多前端问题. 不多说了,代 ...

  6. Using xcodebuild To Export a .ipa From an Archive

    Xcode 6 changes how you export a .ipa from an archive for adhoc distribution. It used to be that you ...

  7. 计算GPS两点间的距离[单位为:米]

    /**     * 计算GPS两点间的距离[单位为:米]     * @param center GPS当前数据(LonLat对象表示,LonLat.lon表示经度,LonLat.lat表示纬度)   ...

  8. Java HashMap工作原理深入探讨

    大部分Java开发者都在使用Map,特别是HashMap.HashMap是一种简单但强大的方式去存储和获取数据.但有多少开发者知道HashMap内部如何工作呢?几天前,我阅读了java.util.Ha ...

  9. 获取本机IP,用户代理

    1.获取本机IP:http://httpbin.org/ip 2.获取用户代理 https://httpbin.org/user-agent https://httpbin.org/ httpbin( ...

  10. SparkMLlib分类算法之逻辑回归算法

    SparkMLlib分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/5169383 ...