SDL_keysym — Keysym structure
typedef | struct { | |||
Uint8 |
scancode ; |
|||
SDLKey |
sym ; |
|||
SDLMod |
mod ; |
|||
Uint16 |
unicode ; |
|||
} SDL_keysym; |
scancode
Hardware specific scancode
sym
SDL virtual keysym
mod
Current key modifiers
unicode
Translated 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.