TSDL_KeySym

Name

TSDL_KeySym -- Keysym structure

Structure Definition

  TSDL_KeySym = record
scancode: UInt8; // hardware specific scancode
sym: TSDLKey; // SDL virtual keysym
modifier: TSDLMod; // current key modifiers
unicode: UInt16; // translated character
end;

Structure Data

scancode Hardware specific scancode
sym SDL virtual keysym
mod Current key modifiers
unicode Translated character

Description

The TSDL_KeySym structure is used by reporting key presses and releases since it is a part of the TSDL_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 ) > 0 ) do
begin
case event.type_ of
SDL_KEYDOWN:
begin
if ( event.key.keysym.sym = SDLK_LEFT ) then
move_left;
end;
.
.
.
}
end;
.
.
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:
ch : char;
.
.
.
if ( ( keysym.unicode and $FF80) = 0 ) then
begin
ch := keysym.unicode and $7F;
end
else
begin
printf("An International Character.\n");
end;
UNICODE translation does have a slight overhead so don't enable it unless its needed.

See Also

SDLKey