Как отключить повторение клавиш при вводе текста SDL2 - PullRequest
0 голосов
/ 01 июня 2018

Я хотел бы рассмотреть, как клавиши повторяются в моей программе, что означает отключение того, как SDL2 делает это автоматически.

Можно игнорировать SDL_KEYDOWN повторяющиеся события, поскольку Event член объединения key имеет логическое значение repeat, с помощью которого вы можете фильтровать (этот вопрос посвящен этому решению: Как отключить повторение ключав SDL2? ).Но у событий SDL_TEXTINPUT нет той же самой информации, доступной в них, и поэтому невозможно отфильтровать повторяющиеся символы.

Есть ли способ напрямую отключить повторение клавиш?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Кажется, в настоящее время не существует простого способа сделать это, и, поскольку мне это тоже нужно, я сделал билет: https://bugzilla.libsdl.org/show_bug.cgi?id=4598

Если у вас есть еще один дополнительный вариант использования, почему вы этого хотите, не стесняйтесьдобавить комментарий к заявке об ошибке, чтобы разработчики поняли, для каких целей это важно.(У меня есть опция аварийного отключения для людей с застрявшими на клавиатуре Bluetooth-клавиатурами на Android, которые хотят все еще печатать тексты без серьезных аварий)

0 голосов
/ 13 августа 2018

Что ж, в SDL lib может быть решением, но вы также можете добавить простой код на c ++ для решения вашей проблемы.Например, если вы не хотите играть с SDL_KEYUP, вы можете просто сделать что-то вроде этого:

//before loop 
int keypress_control = 0;
//much Code, loop etc.
//
swich(event.type)
case SDL_KEYDOWN :
/*if or switch again as you want */if (keypress_control == 
2)
{
/*Code here*/ 
keypress_control = 0;
}
else 
{
keypress_control = 0;
} 
}
//after switch but Still in program loop
Keypress_control++;
//
//
...