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

时间:2013-10-01 14:24:58

标签: c++ libraries

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

1 个答案:

答案 0 :(得分:2)

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