2

我想修改一个用 C++ 编写的使用 SDL 的 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 以接受这种不寻常的输入有多难?我最好使用解决方法来获取输入吗?这是一个为期一学期的硕士课程项目,而不是长期的软件产品。所以我正在寻找让程序接受输入的最快方法——而不是最优雅或可维护的解决方案。

4

1 回答 1

2

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

于 2013-10-01T15:03:22.883 回答