Home | History | Annotate | Download | only in man3
"SDL_keysym" "3" "Tue 11 Sep 2001, 23:00" "SDL" "SDL API Reference"
"NAME"
SDL_keysym - Keysym structure
"STRUCTURE DEFINITION"

typedef struct{
 Uint8 scancode;
 SDLKey sym;
 SDLMod mod;
 Uint16 unicode;
} SDL_keysym;

"STRUCTURE DATA"

20 scancode Hardware specific scancode

20 sym SDL virtual keysym

20 mod Current key modifiers

20 unicode Translated character

"DESCRIPTION"

The SDL_keysym structure is used by reporting key presses and releases since it is a part of the SDL_KeyboardEvent.

The scancode field should generally be left alone, it is the hardware dependent scancode returned by the keyboard. The sym field is extremely useful. It is the SDL-defined value of the key (see SDL Key Syms. This field is very useful when you are checking for certain key presses, like so:

.
.
while(SDL_PollEvent(&event)){
 switch(event.type){
 case SDL_KEYDOWN:
 if(event.key.keysym.sym==SDLK_LEFT)
 move_left();
 break;
 .
 .
 .
 }
}
.
.

mod stores the current state of the keyboard modifiers as explained in SDL_GetModState. The unicode is only used when UNICODE translation is enabled with SDL_EnableUNICODE. If unicode is non-zero then this a the UNICODE character corresponding to the keypress. If the high 9 bits of the character are 0, then this maps to the equivalent ASCII character:

char ch;
if ( (keysym.unicode & 0xFF80) == 0 ) {
 ch = keysym.unicode & 0x7F;
}
else {
 printf("An International Character.
");
}

UNICODE translation does have a slight overhead so don't enable it unless its needed.

"SEE ALSO"

SDLKey created by instant / docbook-to-man, Tue 11 Sep 2001, 23:00