Manpages - SDL_keysym.3

Table of Contents

NAME

SDL_keysym - Keysym structure

STRUCTURE DEFINITION

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

STRUCTURE DATA

scancode
Hardware specific scancode
sym
SDL virtual keysym
mod
Current key modifiers
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

Author: dt

Created: 2022-02-21 Mon 13:39