SDL_keysym — Keysym structure
| typedef | struct { | |||
| Uint8 |
scancode; |
|||
| SDLKey |
sym; |
|||
| SDLMod |
mod; |
|||
| Uint16 |
unicode; |
|||
| } SDL_keysym; | ||||
scancodeHardware specific scancode
symSDL virtual keysym
modCurrent key modifiers
unicodeTranslated character
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.