Problem with uppercase characters

hi guys,

i’m trying to write a simple gui system with sdl and opengl. but i get
trouble with uppercase character inputing ( a text field ).

i use “event.key.keysym.unicode” and "event.key.keysym.mod " (SDL_Event
event;) to get the unicode and modifier.

but every time i press left shift, the modifier is 4096 and the unicode is
always 0.

so, how can i deal with this. why the unicode is always zero?

Thank you.

Did you do SDL_EnableUnicode(1)?

I’m pretty sure that’s the function name but I can’t verify it - libsdl.org
seems to be down for maintenance at the moment._____

From: sdl-bounces+atrix2=cox.net@libsdl.org
[mailto:sdl-bounces+atrix2=cox.net at libsdl.org] On Behalf Of Bill Conan
Sent: Saturday, January 06, 2007 10:21 AM
To: sdl at libsdl.org
Subject: [SDL] Problem with uppercase characters.

hi guys,

i’m trying to write a simple gui system with sdl and opengl. but i get
trouble with uppercase character inputing ( a text field ).

i use “event.key.keysym.unicode” and "event.key.keysym.mod " (SDL_Event
event;) to get the unicode and modifier.

but every time i press left shift, the modifier is 4096 and the unicode is
always 0.

so, how can i deal with this. why the unicode is always zero?

Thank you.

to Alan Wolfe:

thank you for replying, but i’m pretty sure that i used
SDL_EnableUNICODE(1); before everything.

the program is fine when i type lowercase characters.

is there any examples?

here is my current code:

in the loop:

		SDL_Event event;
		while(SDL_PollEvent(&event))
		{
			switch(event.type)
			{
				case SDL_QUIT:
				{
					break;
				}
				case SDL_MOUSEBUTTONUP:
				{
					AssortedWidgets::UI::getSingleton().importMouseRelease(event.button.button,event.button.x,event.button.y);
					break;
				}
				case SDL_MOUSEBUTTONDOWN:
				{
					AssortedWidgets::UI::getSingleton().importMousePress(event.button.button,event.button.x,event.button.y);
					break;
				}
				case SDL_KEYDOWN:
				{
					AssortedWidgets::UI::getSingleton().importKeyDown(event.key.keysym.unicode,event.key.keysym.mod);
					break;
				}
				case SDL_KEYUP:
				{
					//out=true;
					AssortedWidgets::UI::getSingleton().importKeyUp(event.key.keysym.unicode,event.key.keysym.mod);
					break;
				}
			}
		}

and this is the function to handle the key event:

	void importKeyDown(int keyCode,int modifier)
	{
                    //if i press shift, the keyCode is zero and

modifier is 4096
if(Manager::TypeActiveManager::getSingleton().isActive())
{
Manager::TypeActiveManager::getSingleton().onCharTyped(static_cast(keyCode),modifier);
}
printf("%d",keyCode);
};

can i determine whether the key event is generated by normal keys or
by modifiers? i think every time i press the shift key, it generates a
key down event before i press the character key. and that is why i
always get the keycode 0.

thank you for replying, but i’m pretty sure that i used
SDL_EnableUNICODE(1); before everything.

Sorry if this was already answered, but what platform are you using?

–ryan.

Bill Conan wrote:

can i determine whether the key event is generated by normal keys or
by modifiers? i think every time i press the shift key, it generates a
key down event before i press the character key. and that is why i
always get the keycode 0.

Yes, every key generates an event.

You need another switch statement inside the case SDL_KEYDOWN which does
stuff for each key. Hint, do a case for each special key (like shift) and
let default do all the usual keys (like characters).

Colin–
Colin Tuckley | @Colin_Tuckley | PGP/GnuPG Key Id
+44(0)1903 236872 | +44(0)7799 143369 | 0x1B3045CE

“Apple” © Copyright 1767, Sir Isaac Newton.