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