Unicode 如何在SDL中处理大写的击键?

Unicode 如何在SDL中处理大写的击键?,unicode,event-handling,sdl,uppercase,Unicode,Event Handling,Sdl,Uppercase,如何让SDL理解大写锁定打开和大写锁定关闭,或shift+'a'='a',或shift+'1'='!',轻敲字母之间的区别。。。etc?首先添加此命令: SDL_启用Unicode(SDL_启用) 这基本上允许SDL识别大小写之间的差异,甚至是按住shift和aa字符之间的差异(如shift+'a'='a'或shift+'1'='!')) 在此之后,假设您知道如何提取常规键(event.key.keysym.sym),只需使用event.key.keysym.unicode 例如: #inclu

如何让SDL理解大写锁定打开和大写锁定关闭,或shift+'a'='a',或shift+'1'='!',轻敲字母之间的区别。。。etc?

首先添加此命令:
SDL_启用Unicode(SDL_启用)
这基本上允许SDL识别大小写之间的差异,甚至是按住shift和aa字符之间的差异(如shift+'a'='a'或shift+'1'='!'))
在此之后,假设您知道如何提取常规键(
event.key.keysym.sym
),只需使用
event.key.keysym.unicode

例如:

#include <string>
#include <iostream>
using namespace std;

string stringinput()
{
    string input;
    SDL_EnableUNICODE( SDL_ENABLE );
    SDL_Event uin;
    while(!(uin.type==SDL_KEYDOWN&&uin.key.keysym.sym==SDLK_RETURN))
    {
        while(SDL_PollEvent(&uin))
        {
            if(uin.type==SDL_KEYDOWN)
            {
                if((uin.key.keysym.unicode>='A'&&uin.key.keysym.unicode<='Z')
                ||(uin.key.keysym.unicode>='a'&&uin.key.keysym.unicode<='z')
                ||(uin.key.keysym.unicode>='0'&&uin.key.keysym.sym<='9')
                ||(uin.key.keysym.unicode==SDLK_SPACE))
                {
                    input+=((char)uin.key.keysym.unicode);
                }
                else
                {
                    switch((unsigned int)uin.key.keysym.unicode)
                    {
                    case SDLK_BACKSPACE:
                        input.erase(input.size()-1);
                    break;
                    }
                }
            }
        }
    }
    SDL_EnableUNICODE( SDL_DISABLE );
    return input;
}
int main()
{
    string mystring=stringinput();
    cout<<mystring;
    while(1);
    return 0;
}
#包括
#包括
使用名称空间std;
stringinput()字符串
{
字符串输入;
SDL_启用Unicode(SDL_启用);
SDL_事件单元;
while(!(uin.type==SDL\u KEYDOWN&&uin.key.keysym.sym==SDLK\u RETURN))
{
while(SDL_PollEvent(&uin))
{
if(uin.type==SDL\u KEYDOWN)
{
if((uin.key.keysym.unicode>='A'和&uin.key.keysym.unicode='A'和&uin.key.keysym.unicode='0'和&uin.key.keysym.sym