c++ - 我需要自定义 SDL 事件。我应该修改 SDL 还是以其他方式获取输入?

标签 c++ libraries

我想修改一个使用 SDL 的 C++ 编写的 Linux 程序。我想向程序添加一个输入源(使用不寻常的 I/O 设备)。该程序通过 SDL 接收输入。我本质上需要添加一个新的输入源,如下所示......

    while (SDL_PollEvent (&event)) {
        if (!next) {
            switch (event.type) {
                 case SDL_KEYDOWN:
                        SDL_GetMouseState(&x, &y);
                        //do stuff based on x and y
                        break;

                case SDL_NEW_IO_INPUT_FROM_OBSCURE_DEVICE: 
                        SDL_GetDeviceState(&x, &y);   //this would have to be written into SDL
                        //do stuff based on x and y
                        break;

我是一位经验丰富的开发人员 - 但我对 C++ 或 SDL 不太了解。修改 SDL 以接受这种不寻常的输入有多困难?我是否最好使用解决方法来获取输入?这是一个为期一个学期的硕士类(class)项目,而不是一个长期的软件产品。因此,我正在寻找让程序接受输入的最快方法——而不是最优雅或可维护的解决方案。

最佳答案

向 SDL 添加事件应该不难,您只需要创建一个结构来保存事件数据并注册到 SDL_RegisterEvents获取事件 ID。从您的代码中您创建一个新的 sdl user event将事件 ID 设置为您从注册事件中获得的 ID,并将指针填充到您的真实数据。由于数字是动态分配的,因此无法直接在大型 switch 语句中对其进行测试,因此您的用户必须在 switch 中放置默认条目,并使用 if 语句专门检查您的事件 ID。

关于c++ - 我需要自定义 SDL 事件。我应该修改 SDL 还是以其他方式获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122586/

相关文章:

c++ - 嵌入结构和正确的函数调用

c++ - FFTW 性能变化

c++ - 如何调用确切的派生类方法?

android - 将 Android 和 iOS 库导入 Flutter 项目

c++ - C/C++ PLSA 库

java - 导出后从任何位置加载任何库

请求从 C++ 到非标量类型的转换

c++ - 无限模板递归,因为仅使用 gcc 没有 bool 表达式优化

java - MathML 和 Java

Angular 6 : Changing the code of an external library only works with 'ng serve' and not with 'ng build'