2

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 を変更するのはどれほど難しいでしょうか? 入力を取得するために回避策を使用したほうがよいでしょうか? これは、修士レベルのコースの 1 学期間にわたるプロジェクトのためのものであり、長期的なソフトウェア製品ではありません。そのため、プログラムに入力を取得させる最も簡単な方法を探しています。最も洗練された、または保守可能なソリューションではありません。

4

1 に答える 1

2

SDL にイベントを追加するのは難しくありません。イベント データを保持する構造を作成し、SDL_RegisterEventsに登録してイベント ID を取得するだけです。コードから新しいsdl ユーザー イベントを作成し、イベント ID を登録イベントから取得したものに設定し、実際のデータへのポインターを設定します。番号は動的に割り当てられるため、大きな switch ステートメントで直接テストすることはできません。ユーザーはデフォルト エントリを switch に配置し、if ステートメントを使用してイベント ID を具体的に確認する必要があります。

于 2013-10-01T15:03:22.883 に答える