专栏首页代码GG之家SDL系列讲解(十) 按键处理流程

SDL系列讲解(十) 按键处理流程

SDL系列讲解(一) 简介

SDL系列讲解(二) 环境搭建

SDL系列讲解(三) 工具安装

SDL是什么,能干什么,为什么我们要学习它?

SDL系列讲解(四) demo讲解

SDL系列讲解(五) 调试c代码

SDL系列讲解(六) SDL_Activity流程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(八) SDL_ttf教程

SDL系列讲解(九) 异常退出分析

SDL 按键消息流程时序图

代码剖析

按键消息处理,路径比较简单,就是我们Android上面的SurfaceView的onKey方法处理,使用 onNativeKeyDown 或者onNativeKeyUp将按键消息传递到c代码中,c代码接收到按键事件,使用TranslateKeycode方法,将android的按键映射成SDL的扫描码(SDL_scancode.h)

,同时使用keyboard->keymap[scancode]拿到扫描码对应的SDL按键值,具体在SDL_default_keymap[SDL_NUM_SCANCODES]存储。

按键值都在这里SDL_keycode.h,

然后填充一个SDL_Event联合体,按照key结构体去填写,

具体为:

这里type的值为SDL_KEYDOWN 或者 SDL_KEYUP

state的值为SDL_PRESSED 或者 SDL_RELEASED

repeat 存储是否重复按键

keysym.scancode 存储扫描码,这个取值在SDL_scancode.h,比如 :SDL_SCANCODE_AC_BACK

keysym.sym 存储按键值:这个取值在SDL_keycode.h 比如:SDLK_AC_BACK

keysym.mod 存储特殊键,处理组合键使用

windowID存储focus窗口值

演示代码

修改main.c

然后我们安装到手机上测试,查看log可以看到输出结果。

可以看到按键信息。

本文分享自微信公众号 - 代码GG之家(code_gg_home),作者:陆晓明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SDL系列讲解(一) 简介

    什么是 SDL Simple DirectMedia Layer(SDL)是一个跨平台开发库,主要提供对音频,键盘,鼠标,操纵杆的操作,通过OpenGL和Di...

    用户1263308
  • SDL系列讲解(四) demo讲解

    整体流程框架 SDL作为一款渲染器,我们首先掌握下它的一些基础要素,本文通过渲染一张图片,熟悉SDL的整个流程。 #include "SDL.h" 扩入我们...

    用户1263308
  • SDL系列讲解(二) 环境搭建

    准备环境 这一节,我们讲解下如何搭建SDL 的 Android开发环境。我们当前的电脑环境为: 系统 Window 7 64位 内存 8...

    用户1263308
  • SDL系列讲解(二) 环境搭建

    准备环境 这一节,我们讲解下如何搭建SDL 的 Android开发环境。我们当前的电脑环境为: 系统 Window 7 64位 内存 8...

    用户1263308
  • C语言+SDL2 图形化编程

    程设大作业小火车第一版本是命令行界面,第二版本是图形化界面,由于egg库对以后工程开发没有用,我不想用egg库,花了很长时间浏览了一下OpenGL的中文教程,觉...

    饶文津
  • SDL系列讲解(一) 简介

    什么是 SDL Simple DirectMedia Layer(SDL)是一个跨平台开发库,主要提供对音频,键盘,鼠标,操纵杆的操作,通过OpenGL和Di...

    用户1263308
  • 「SDL第四篇」事件处理

    要想了解 SDL 的事件处理,我们必须要知道的一个原理是,SDL将所有事件都存放在一个队列中。所有对事件的操作,其实就是对队列的操作。了解了这个原理后,我们再来...

    音视频_李超
  • 「SDL第五篇」彻底理解纹理(Texture)

    这是SDL系列文章的第五篇,本文将彻底让你理解什么是纹理。并带你深入探讨SDL的几个重要概念SDL_Window、SDL_Render、SDL_Surface ...

    音视频_李超
  • SDL系列讲解(十一) SDL_QUIT流程

    明天会将自己的很早的一部小说发出,一次发出写的所有的六章,如果时间,或者某天突然觉得可以续写了,那么就是它又一次起航了。 工作期间,码了一个记录工作的小说,有兴...

    用户1263308
  • SDL系列讲解(四) demo讲解

    整体流程框架 SDL作为一款渲染器,我们首先掌握下它的一些基础要素,本文通过渲染一张图片,熟悉SDL的整个流程。 #include "SDL.h" 扩入我们...

    用户1263308

扫码关注云+社区

领取腾讯云代金券