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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL级联复制的同步问题(一) (r9笔记第71天)

今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,...

3164
来自专栏闵开慧

ERROR: org.apache.hadoop.hbase.MasterNotRunnin...

 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 这是为什么...

29410
来自专栏杨建荣的学习笔记

Linux下配置MySQL主从复制(r5笔记第13天)

MySQL的主从复制是自己一直想学习的一个实战经历,因为Oracle中的主从复制也是需要不少的配置选项,相比来说感觉重量级一些(数据量也重量级). 今天试了一下...

3546
来自专栏运维小白

17.4 配置从

主从配置 - 从上操作 安装mysql 查看my.cnf,配置server-id=132,要求和主不一样 修改完配置文件后,启动或者重启mysqld服务 把主上...

1986
来自专栏Java架构解析

MySQL主从同步报error 1236

【一】前言:作为MySQL的数据库管理员经常会碰到主从同步的问题,比较常见的有error 1236的报错。刚好最近又碰到了这个报错,以下是整理的文档;

1380
来自专栏Laoqi's Linux运维专列

MySQL两主(多主)多从架构配置

1.5K8
来自专栏酷玩时刻

MySql 5.7.18 数据库主从(Master/Slave)同步安装与配置详解

MySql复制的优点: 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从...

863
来自专栏cmazxiaoma的架构师之路

MySQL主从复制

MySQL复制功能提供分担读负载。 基于二进制日志的复制是异步的,那么复制有什么好处? 1.实现在不同服务器上的数据分布,利用二进制日志增量进行,不需要太多...

1542
来自专栏Laoqi's Linux运维专列

Centos7.3 RabbitMQ分布式集群搭建

1284
来自专栏别先生

org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.

1、启动hive的过程中,[hadoop@slaver1 soft]$ hive --service metastore & 错误如下所示: 原因:之前启动hi...

3645

扫码关注云+社区