Как получить одновременные повторы клавиш с SDL? - PullRequest
0 голосов
/ 12 января 2011

Как вы определяете одновременное повторение клавиш с помощью SDL?Прямо сейчас я могу обнаружить одновременно нажатые клавиши (но не в том случае, если они все нажаты) или нажатую единственную клавишу.Я хочу быть в состоянии обнаружить все клавиши, которые удерживаются в любой момент времени.

Мой код </p> <p>SDL_EnableKeyRepeat (100, 200);</p> <p>while (SDL_PollEvent (&event)) {</p> <p>if (event.type == SDL_KEYDOWN) {</p> <pre><code> if (event.key.keysym.sym == SDLK_t) { } else if (event.key.keysym.sym == SDL_y) { }

} иначе if (бла) {

   //blah blah blah

}

}

1 Ответ

1 голос
/ 23 января 2011

Первое обнаружение всех нажатых клавиш может оказаться невозможным. Из-за ограничений клавиатуры, большинство клавиатур поддерживает 4-6 кнопок, нажимаемых одновременно, после чего нажатие / отпускание клавиши не регистрируется. Во-вторых, я бы не советовал использовать повтор ключей. Не знаю, возможно, опыт других людей отличается, но вы можете получить лучшую точность, сохраняя состояния ключей, которые вас интересуют. То есть в простой игре это были бы клавиши со стрелками. И вы просто устанавливаете движение влево, когда нажимаете левое, и отменяете его, когда отпускается левое или, может быть, когда нажимается правое. Если вам нужно что-то вроде набора текста, вы, вероятно, можете сделать это с помощью некоторого массива selected_keys и поместить туда идентификаторы клавиш, которые были нажаты. (Я предполагаю, что вы пытаетесь сделать что-то похожее на игру).

...