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

作者: 代码GG陆晓明 | 来源:发表于2017-10-28 20:01 被阅读29次

    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可以看到输出结果。


    可以看到按键信息。

    相关文章

      网友评论

        本文标题:SDL系列讲解(十) 按键处理流程

        本文链接:https://www.haomeiwen.com/subject/rrnspxtx.html