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,您可以在其中将输入的文本作为字符数组。