如何在SDL2文本输入中禁用键重复

3
我想要掌控程序中键盘按键的重复,也就是禁用SDL2自动重复的功能。
可以通过过滤Event联合成员key的repeat布尔值来忽略SDL_KEYDOWN重复事件(此问题讨论了这个解决方案:如何在SDL2中禁用按键重复?)。但是,SDL_TEXTINPUT事件中没有相同的可用信息,因此无法过滤出已经重复的字符。
有没有办法完全禁用按键重复?

1
在研究了库的代码并在IRC上聊天后,没有(简单的)方法可以禁用键重复。所以我不得不接受它,并确保文本编辑按钮(如退格和箭头键)不忽略重复标志,以便它们“感觉”相同。 - Anne Quinn
2个回答

0

看起来目前没有简单的方法来实现这个,因为我也需要这个功能,所以我创建了一个工单:https://bugzilla.libsdl.org/show_bug.cgi?id=4598

如果你有其他的使用场景,想要这个功能,欢迎在工单上添加评论,这样开发人员就能了解到这个功能的重要性和用途。(我的用例是为那些在安卓上使用键盘时出现按键卡住问题的人提供紧急禁用选项,以便他们仍然能够输入文本而不会发生重大事故)


-2

在SDL库中可能有解决方案,但您也可以添加一些简单的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++;
//
//

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接