在 SDL 中,如何查找 SDL_Event.type 的名称

In SDL how do I find the name of an SDL_Event.type

提问人:Different 提问时间:11/15/2023 最后编辑:HolyBlackCatDifferent 更新时间:11/15/2023 访问量:48

问:

我看到 SDL_Event.type 是一个对应于特定类型事件的数字,除了对我遇到的每个新事件使用 google 之外,有没有办法将它们转换为带有其名称的字符串?

例如,我在网上找不到任何关于 1024 或 0x400 类型的内容,我滚动浏览了常量的所有可能值,发现它是鼠标移动。

C SDL

评论

0赞 genpfault 11/15/2023
SDL_events.c:SDL_LogEvent();可悲的是,它不是公共的,也没有返回字符串。但确实包含一个梯子,你可以偷:)switch
1赞 TheNomad 11/15/2023
您可以在 SDL_events.h 中找到这些事件。为什么你需要它是一个字符串?
0赞 Ted Lyngmo 11/15/2023
您也可以在文档中找到它: wiki.libsdl.org/SDL2/SDL_EventType

答:

0赞 Ted Lyngmo 11/15/2023 #1

可以在 SDL_events.h 中找到 s 的完整列表。通过一些格式,你可以得到这个备忘单:SDL_EventType

SDL_EventType 价值 笔记
SDL_FIRSTEVENT 0x0000 未使用(不删除)
SDL_QUIT 0x0100 用户请求的退出
SDL_APP_TERMINATING 0x0101 应用程序被 OS
在 iOS 上调用 在 Android 上
调用
applicationWillTerminate()onDestroy()
SDL_APP_LOWMEMORY 0x0102 应用程序内存不足,如果可能,请释放内存。
在 iOS 上调用 在 Android 上调用 在
applicationDidReceiveMemoryWarning()onLowMemory()
SDL_APP_WILLENTERBACKGROUND 0x0103 应用程序即将进入后台
在 iOS 上调用 在 Android 上调用 在
applicationWillResignActive()onPause()
SDL_APP_DIDENTERBACKGROUND 0x0104 该应用程序确实进入了后台,并且可能在一段时间内无法获得 CPU 在 iOS 上调用 在 Android 上

调用
applicationDidEnterBackground()onPause()
SDL_APP_WILLENTERFOREGROUND 0x0105 应用程序即将进入前台
Called on iOS in Called on Android in
applicationWillEnterForeground()onResume()
SDL_APP_DIDENTERFOREGROUND 0x0106 该应用程序现在是交互式
的 在 iOS 上调用 在 Android 上调用 在
applicationDidBecomeActive()onResume()
SDL_LOCALECHANGED 0x0107 用户的区域设置首选项已更改。
SDL_DISPLAYEVENT 0x0150 显示状态更改
SDL_WINDOWEVENT 0x0200 窗口状态更改
SDL_SYSWMEVENT 0x0201 系统特定事件
SDL_KEYDOWN 0x0300 按键
SDL_KEYUP 0x0301 密钥已发布
SDL_TEXTEDITING 0x0302 键盘文本编辑(合成)
SDL_TEXTINPUT 0x0303 键盘文本输入
SDL_KEYMAPCHANGED 0x0304 键盘映射因系统事件(如输入语言或键盘布局更改)而更改
SDL_TEXTEDITING_EXT 0x0305 扩展的键盘文本编辑(合成)
SDL_MOUSEMOTION 0x0400 鼠标移动
SDL_MOUSEBUTTONDOWN 0x0401 按下鼠标按钮
SDL_MOUSEBUTTONUP 0x0402 鼠标按钮松开
SDL_MOUSEWHEEL 0x0403 鼠标滚轮运动
SDL_JOYAXISMOTION 0x0600 操纵杆轴运动
SDL_JOYBALLMOTION 0x0601 操纵杆轨迹球运动
SDL_JOYHATMOTION 0x0602 操纵杆帽位置更改
SDL_JOYBUTTONDOWN 0x0603 按下操纵杆按钮
SDL_JOYBUTTONUP 0x0604 操纵杆按钮松开
SDL_JOYDEVICEADDED 0x0605 系统已插入新的操纵杆
SDL_JOYDEVICEREMOVED 0x0606 已移除打开的操纵杆
SDL_JOYBATTERYUPDATED 0x0607 操纵杆电池电量变化
SDL_CONTROLLERAXISMOTION 0x0650 游戏控制器轴运动
SDL_CONTROLLERBUTTONDOWN 0x0651 按下游戏控制器按钮
SDL_CONTROLLERBUTTONUP 0x0652 游戏控制器按钮发布
SDL_CONTROLLERDEVICEADDED 0x0653 新的游戏控制器已插入到系统中
SDL_CONTROLLERDEVICEREMOVED 0x0654 已打开的游戏控制器已被移除
SDL_CONTROLLERDEVICEREMAPPED 0x0655 控制器映射已更新
SDL_CONTROLLERTOUCHPADDOWN 0x0656 触摸游戏控制器触摸板
SDL_CONTROLLERTOUCHPADMOTION 0x0657 游戏控制器触摸板手指已移动
SDL_CONTROLLERTOUCHPADUP 0x0658 游戏控制器触摸板手指被抬起
SDL_CONTROLLERSENSORUPDATE 0x0659 游戏控制器传感器已更新
SDL_FINGERDOWN 0x0700
SDL_FINGERUP 0x0701
SDL_FINGERMOTION 0x0702
SDL_DOLLARGESTURE 0x0800
SDL_DOLLARRECORD 0x0801
SDL_MULTIGESTURE 0x0802
SDL_CLIPBOARDUPDATE 0x0900 剪贴板或主要选择已更改
SDL_DROPFILE 0x1000 系统请求打开文件
SDL_DROPTEXT 0x1001 文本/纯拖放事件
SDL_DROPBEGIN 0x1002 一组新的删除正在开始(NULL 文件名)
SDL_DROPCOMPLETE 0x1003 当前放置集现已完成(NULL 文件名)
SDL_AUDIODEVICEADDED 0x1100 新的音频设备可用
SDL_AUDIODEVICEREMOVED 0x1101 音频设备已被移除
SDL_SENSORUPDATE 0x1200 传感器已更新
SDL_RENDER_TARGETS_RESET 0x2000 渲染目标已重置,其内容需要更新
SDL_RENDER_DEVICE_RESET 0x2001 设备已重置,需要重新创建所有纹理
SDL_POLLSENTINEL 0x7F00 表示事件轮询周期的结束
SDL_USEREVENT 0x8000 事件 through 供你使用,并应使用SDL_USEREVENTSDL_LASTEVENTSDL_RegisterEvents()
SDL_LASTEVENT 0xFFFF 最后一个事件仅用于边界内部数组