SDL 键盘异常行为
SDL keyboard strange behaviors
只有功能键被 SDL_KEYDOWN 捕捉到并且它们被正常打印,正常的字母和数字有时会被 SDL_TEXTINPUT 捕捉到(不可预测)但是当我尝试打印它们时我什么也得不到或者诸如“Æëçó”之类的东西,关键根本不会被 if 语句捕获。有没有人遇到同样的问题?
这是在 win 10 Visual Studio 19 上,我在使用屏幕键盘时得到了相同的结果。
switch (g_event->type)
{
case SDL_KEYDOWN: //here only ctrl , alt , caps get caught
std::cout << SDL_GetKeyName(g_event->key.keysym.sym); //this prints out the names correctly
break;
case SDL_TEXTINPUT: //here normal keys get caught sometimes(letters,numbers...)
std::cout << SDL_GetKeyName(g_event->key.keysym.sym); //this prints out things like this "ⁿÆëçó" or nothing at all
if(g_event->key.keysym.sym==SDLK_f) //the key isn't caught no matter what
{std::cout<<"f";}
break;
}
您不会在 SDL_TEXTINPUT 活动中访问 g_event.key.keysym.sym。
它为您提供了一个参数 g_event.text.text,您可以在其中将输入的文本作为字符数组。
只有功能键被 SDL_KEYDOWN 捕捉到并且它们被正常打印,正常的字母和数字有时会被 SDL_TEXTINPUT 捕捉到(不可预测)但是当我尝试打印它们时我什么也得不到或者诸如“Æëçó”之类的东西,关键根本不会被 if 语句捕获。有没有人遇到同样的问题?
这是在 win 10 Visual Studio 19 上,我在使用屏幕键盘时得到了相同的结果。
switch (g_event->type)
{
case SDL_KEYDOWN: //here only ctrl , alt , caps get caught
std::cout << SDL_GetKeyName(g_event->key.keysym.sym); //this prints out the names correctly
break;
case SDL_TEXTINPUT: //here normal keys get caught sometimes(letters,numbers...)
std::cout << SDL_GetKeyName(g_event->key.keysym.sym); //this prints out things like this "ⁿÆëçó" or nothing at all
if(g_event->key.keysym.sym==SDLK_f) //the key isn't caught no matter what
{std::cout<<"f";}
break;
}
您不会在 SDL_TEXTINPUT 活动中访问 g_event.key.keysym.sym。 它为您提供了一个参数 g_event.text.text,您可以在其中将输入的文本作为字符数组。