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
Bookmarks