I guess I could do something like this (seems to work), but then I'm afraid I will be locked into only Latin type keyboards?

Code:
function  Window_KeyCodeToStr(KeyCode: Cardinal): PWideChar;
var
  KeyName: TxeString;
begin
  Result := '';

  if KeyCode > cMaxKeyCode then Exit;

  if (KeyCode > $20) and (KeyCode < $7F) then
    KeyName := SDL_GetKeyName(KeyCode)
  else
  begin
    case KeyCode of
      SDLK_DELETE      : KeyName := 'DELETE';
      SDLK_BACKSPACE   : KeyName := 'BACKSPACE';
      SDLK_TAB         : KeyName := 'TAB';
      SDLK_CLEAR       : KeyName := 'CLEAR';
      SDLK_RETURN      : KeyName := 'RETURN';
      SDLK_PAUSE       : KeyName := 'PAUSE';
      SDLK_ESCAPE      : KeyName := 'ESCAPE';
      SDLK_SPACE       : KeyName := 'SPACE';
      // Numeric keypad
      SDLK_KP0         : KeyName := 'KP0';
      SDLK_KP1         : KeyName := 'KP1';
      SDLK_KP2         : KeyName := 'KP2';
      SDLK_KP3         : KeyName := 'KP3';
      SDLK_KP4         : KeyName := 'KP4';
      SDLK_KP5         : KeyName := 'KP5';
      SDLK_KP6         : KeyName := 'KP6';
      SDLK_KP7         : KeyName := 'KP7';
      SDLK_KP8         : KeyName := 'KP8';
      SDLK_KP9         : KeyName := 'KP9';
      SDLK_KP_PERIOD   : KeyName := 'KP_PERIOD';
      SDLK_KP_DIVIDE   : KeyName := 'KP_DIVIDE';
      SDLK_KP_MULTIPLY : KeyName := 'KP_MULTIPLY';
      SDLK_KP_MINUS    : KeyName := 'KP_MINUS';
      SDLK_KP_PLUS     : KeyName := 'KP_PLUS';
      SDLK_KP_ENTER    : KeyName := 'KP_ENTER';
      SDLK_KP_EQUALS   : KeyName := 'KP_EQUALS';
      // Arrows + Home/End pad
      SDLK_UP          : KeyName := 'UP';
      SDLK_DOWN        : KeyName := 'DOWN';
      SDLK_RIGHT       : KeyName := 'RIGHT';
      SDLK_LEFT        : KeyName := 'LEFT';
      SDLK_INSERT      : KeyName := 'INSERT';
      SDLK_HOME        : KeyName := 'HOME';
      SDLK_END         : KeyName := 'END';
      SDLK_PAGEUP      : KeyName := 'PAGEUP';
      SDLK_PAGEDOWN    : KeyName := 'PAGEDOWN';
      // Function keys
      SDLK_F1          : KeyName := 'F1';
      SDLK_F2          : KeyName := 'F2';
      SDLK_F3          : KeyName := 'F3';
      SDLK_F4          : KeyName := 'F4';
      SDLK_F5          : KeyName := 'F5';
      SDLK_F6          : KeyName := 'F6';
      SDLK_F7          : KeyName := 'F7';
      SDLK_F8          : KeyName := 'F8';
      SDLK_F9          : KeyName := 'F9';
      SDLK_F10         : KeyName := 'F10';
      SDLK_F11         : KeyName := 'F11';
      SDLK_F12         : KeyName := 'F12';
      SDLK_F13         : KeyName := 'F13';
      SDLK_F14         : KeyName := 'F14';
      SDLK_F15         : KeyName := 'F15';
      // Key state modifier keys
      SDLK_NUMLOCK     : KeyName := 'NUMLOCK';
      SDLK_CAPSLOCK    : KeyName := 'CAPSLOCK';
      SDLK_SCROLLOCK   : KeyName := 'SCROLLOCK';
      SDLK_RSHIFT      : KeyName := 'RSHIFT';
      SDLK_LSHIFT      : KeyName := 'LSHIFT';
      SDLK_RCTRL       : KeyName := 'RCTRL';
      SDLK_LCTRL       : KeyName := 'LCTRL';
      SDLK_RALT        : KeyName := 'RALT';
      SDLK_LALT        : KeyName := 'LALT';
      SDLK_RMETA       : KeyName := 'RMETA';
      SDLK_LMETA       : KeyName := 'LMETA';
      SDLK_LSUPER      : KeyName := 'LSUPER';
      SDLK_RSUPER      : KeyName := 'RSUPER';
      SDLK_MODE        : KeyName := 'MODE';
      SDLK_COMPOSE     : KeyName := 'COMPOSE';
      // Miscellaneous function keys
      SDLK_HELP        : KeyName := 'HELP';
      SDLK_PRINT       : KeyName := 'PRINT';
      SDLK_SYSREQ      : KeyName := 'SYSREQ';
      SDLK_BREAK       : KeyName := 'BREAK';
      SDLK_MENU        : KeyName := 'MENU';
      SDLK_POWER       : KeyName := 'POWER';
      SDLK_EURO        : KeyName := 'EURO';
    else
    end;
  end;

  Result := PWideChar(KeyName);
end;
cheers,
Paul