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

时间:2018-06-01 01:14:03

标签: c++ sdl sdl-2

我想接管我的程序中密钥重复的方式,这意味着禁用SDL2如何自动执行。

可以忽略SDL_KEYDOWN重复事件,因为Event联盟成员key有一个repeat布尔值可以过滤(此问题探讨了这个解决方案:{{3 }})。但SDL_TEXTINPUT事件中没有相同的信息,因此无法过滤掉重复的字符。

有没有办法彻底禁用密钥重复?

2 个答案:

答案 0 :(得分:0)

似乎目前没有简单的方法可以执行此操作,因为我也需要此方法,所以我做了一张票:https://bugzilla.libsdl.org/show_bug.cgi?id=4598

如果还有另一个用例,为什么要这样做,请随时在Bug票证上添加注释,以便开发人员了解这对什么用途至关重要。 (我为那些在Android上具有键键卡住的蓝牙键盘的人提供了紧急禁用选项,这些人仍然希望能够在没有重大事故的情况下键入文本)

答案 1 :(得分:-2)

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++;
//
//