2012-01-09 2 views
0

Я пишу игру на C, используя библиотеки Gtk, в которой игрок управляет подвижным символом. Тем не менее, я хочу, чтобы игрок мог держать ключ, чтобы постоянно двигаться в одном направлении. Как переопределить нормальное поведение для хранения ключа, в котором генерируется ключевое событие, происходит кратковременная пауза, а затем события ключа происходят в непрерывном потоке?Удаление задержки нажатия клавиши

Я заметил, что аналогичный вопрос был задан ранее о том, как делать то же самое в Javascript; однако ответ не помогает в реализации той же системы в Gtk. Я заметил, что есть класс GtkDevice; есть ли функция, связанная с этим, которая позволит мне управлять буферизацией ввода с клавиатуры?

+0

Поведение задержка/повторение, вероятно, контролируется вашей операционной системой, а не вашим приложением. Вы можете написать свою собственную поддержку, непосредственно отслеживая события нажатия клавиш/клавиш. –

+1

Вы уверены, что GTK - лучший инструмент для написания игры? Я бы предложил использовать специализированный инструментарий для игр, который автоматически предоставит эти средства. – ptomato

+0

Я хотел изучить GUI в C в любом случае для будущего использования, и игра достаточно проста, что мне не нужно использовать специальный инструментарий. –

ответ

3

Подключитесь к сигналам GT12 key_press_event и key_release_event.

Они будут работать, как вы описываете.

Вы несете ответственность за отслеживание того, нажаты ли клавиши, которые вас интересуют, в данный момент.

+0

Я смог придумать способ обойти его, используя gtk_key_snooper_install(), прежде чем вы прокомментируете. У меня недостаточно репутации, чтобы ответить на мой собственный вопрос, пока прошло 8 часов с тех пор, как я задал этот вопрос, но завтра я отправлю свое решение. Но спасибо за помощь. –

+0

Действительно, вам нужно отслеживать ключевые события нажатия/выпуска, НЕ события генерации символов или аналогичные. –

+0

Да, мое решение делает именно то, что вы предлагаете. Спасибо за помощь. –

Смежные вопросы