# HG changeset patch # User sheepluva # Date 1447266356 -3600 # Node ID b8b208501475e78a00d161b75ebdf6bf63084f23 # Parent b0df3f2fcafcdba63eb7e2f049bf47e25834c300 reenable cursor movement etc. diff -r b0df3f2fcafc -r b8b208501475 hedgewars/SDLh.pas --- a/hedgewars/SDLh.pas Tue Nov 10 22:37:54 2015 +0100 +++ b/hedgewars/SDLh.pas Wed Nov 11 19:25:56 2015 +0100 @@ -241,7 +241,7 @@ MIX_INIT_MODPLUG = $00000004; MIX_INIT_MP3 = $00000008; MIX_INIT_OGG = $00000010; - MIX_INIT_FLUIDSYNTH = $00000020; + MIX_INIT_FLUIDSYNTH = $00000020; {* SDL_TTF *} TTF_STYLE_NORMAL = 0; @@ -264,7 +264,8 @@ IMG_INIT_PNG = $00000002; IMG_INIT_TIF = $00000004; - {* SDL_keysym *} + {* SDL_keycode *} + SDLK_UNKNOWN = 0; SDLK_BACKSPACE = 8; SDLK_RETURN = 13; SDLK_ESCAPE = 27; @@ -285,6 +286,8 @@ SDLK_PAGEUP = 280; SDLK_PAGEDOWN = 281; + // special keycodes (for modifier keys etc. will have this bit set) + SDLK_SCANCODE_MASK = (1 shl 30); ///////////////////////////////////////////////////////////////// /////////////////////// TYPE DEFINITIONS /////////////////////// @@ -301,9 +304,254 @@ PSDL_GLContext= Pointer; TSDL_TouchId = Int64; TSDL_FingerId = Int64; + TSDL_Keycode = LongInt; TSDL_eventaction = (SDL_ADDEVENT, SDL_PEEPEVENT, SDL_GETEVENT); + TSDL_Scancode = ( + SDL_SCANCODE_UNKNOWN := 0, + SDL_SCANCODE_A := 4, + SDL_SCANCODE_B := 5, + SDL_SCANCODE_C := 6, + SDL_SCANCODE_D := 7, + SDL_SCANCODE_E := 8, + SDL_SCANCODE_F := 9, + SDL_SCANCODE_G := 10, + SDL_SCANCODE_H := 11, + SDL_SCANCODE_I := 12, + SDL_SCANCODE_J := 13, + SDL_SCANCODE_K := 14, + SDL_SCANCODE_L := 15, + SDL_SCANCODE_M := 16, + SDL_SCANCODE_N := 17, + SDL_SCANCODE_O := 18, + SDL_SCANCODE_P := 19, + SDL_SCANCODE_Q := 20, + SDL_SCANCODE_R := 21, + SDL_SCANCODE_S := 22, + SDL_SCANCODE_T := 23, + SDL_SCANCODE_U := 24, + SDL_SCANCODE_V := 25, + SDL_SCANCODE_W := 26, + SDL_SCANCODE_X := 27, + SDL_SCANCODE_Y := 28, + SDL_SCANCODE_Z := 29, + SDL_SCANCODE_1 := 30, + SDL_SCANCODE_2 := 31, + SDL_SCANCODE_3 := 32, + SDL_SCANCODE_4 := 33, + SDL_SCANCODE_5 := 34, + SDL_SCANCODE_6 := 35, + SDL_SCANCODE_7 := 36, + SDL_SCANCODE_8 := 37, + SDL_SCANCODE_9 := 38, + SDL_SCANCODE_0 := 39, + SDL_SCANCODE_RETURN := 40, + SDL_SCANCODE_ESCAPE := 41, + SDL_SCANCODE_BACKSPACE := 42, + SDL_SCANCODE_TAB := 43, + SDL_SCANCODE_SPACE := 44, + SDL_SCANCODE_MINUS := 45, + SDL_SCANCODE_EQUALS := 46, + SDL_SCANCODE_LEFTBRACKET := 47, + SDL_SCANCODE_RIGHTBRACKET := 48, + SDL_SCANCODE_BACKSLASH := 49, + SDL_SCANCODE_NONUSHASH := 50, + SDL_SCANCODE_SEMICOLON := 51, + SDL_SCANCODE_APOSTROPHE := 52, + SDL_SCANCODE_GRAVE := 53, + SDL_SCANCODE_COMMA := 54, + SDL_SCANCODE_PERIOD := 55, + SDL_SCANCODE_SLASH := 56, + SDL_SCANCODE_CAPSLOCK := 57, + SDL_SCANCODE_F1 := 58, + SDL_SCANCODE_F2 := 59, + SDL_SCANCODE_F3 := 60, + SDL_SCANCODE_F4 := 61, + SDL_SCANCODE_F5 := 62, + SDL_SCANCODE_F6 := 63, + SDL_SCANCODE_F7 := 64, + SDL_SCANCODE_F8 := 65, + SDL_SCANCODE_F9 := 66, + SDL_SCANCODE_F10 := 67, + SDL_SCANCODE_F11 := 68, + SDL_SCANCODE_F12 := 69, + SDL_SCANCODE_PRINTSCREEN := 70, + SDL_SCANCODE_SCROLLLOCK := 71, + SDL_SCANCODE_PAUSE := 72, + SDL_SCANCODE_INSERT := 73, + SDL_SCANCODE_HOME := 74, + SDL_SCANCODE_PAGEUP := 75, + SDL_SCANCODE_DELETE := 76, + SDL_SCANCODE_END := 77, + SDL_SCANCODE_PAGEDOWN := 78, + SDL_SCANCODE_RIGHT := 79, + SDL_SCANCODE_LEFT := 80, + SDL_SCANCODE_DOWN := 81, + SDL_SCANCODE_UP := 82, + SDL_SCANCODE_NUMLOCKCLEAR := 83, + SDL_SCANCODE_KP_DIVIDE := 84, + SDL_SCANCODE_KP_MULTIPLY := 85, + SDL_SCANCODE_KP_MINUS := 86, + SDL_SCANCODE_KP_PLUS := 87, + SDL_SCANCODE_KP_ENTER := 88, + SDL_SCANCODE_KP_1 := 89, + SDL_SCANCODE_KP_2 := 90, + SDL_SCANCODE_KP_3 := 91, + SDL_SCANCODE_KP_4 := 92, + SDL_SCANCODE_KP_5 := 93, + SDL_SCANCODE_KP_6 := 94, + SDL_SCANCODE_KP_7 := 95, + SDL_SCANCODE_KP_8 := 96, + SDL_SCANCODE_KP_9 := 97, + SDL_SCANCODE_KP_0 := 98, + SDL_SCANCODE_KP_PERIOD := 99, + SDL_SCANCODE_NONUSBACKSLASH := 100, + SDL_SCANCODE_APPLICATION := 101, + SDL_SCANCODE_POWER := 102, + SDL_SCANCODE_KP_EQUALS := 103, + SDL_SCANCODE_F13 := 104, + SDL_SCANCODE_F14 := 105, + SDL_SCANCODE_F15 := 106, + SDL_SCANCODE_F16 := 107, + SDL_SCANCODE_F17 := 108, + SDL_SCANCODE_F18 := 109, + SDL_SCANCODE_F19 := 110, + SDL_SCANCODE_F20 := 111, + SDL_SCANCODE_F21 := 112, + SDL_SCANCODE_F22 := 113, + SDL_SCANCODE_F23 := 114, + SDL_SCANCODE_F24 := 115, + SDL_SCANCODE_EXECUTE := 116, + SDL_SCANCODE_HELP := 117, + SDL_SCANCODE_MENU := 118, + SDL_SCANCODE_SELECT := 119, + SDL_SCANCODE_STOP := 120, + SDL_SCANCODE_AGAIN := 121, + SDL_SCANCODE_UNDO := 122, + SDL_SCANCODE_CUT := 123, + SDL_SCANCODE_COPY := 124, + SDL_SCANCODE_PASTE := 125, + SDL_SCANCODE_FIND := 126, + SDL_SCANCODE_MUTE := 127, + SDL_SCANCODE_VOLUMEUP := 128, + SDL_SCANCODE_VOLUMEDOWN := 129, + SDL_SCANCODE_KP_COMMA := 133, + SDL_SCANCODE_KP_EQUALSAS400 := 134, + SDL_SCANCODE_INTERNATIONAL1 := 135, + SDL_SCANCODE_INTERNATIONAL2 := 136, + SDL_SCANCODE_INTERNATIONAL3 := 137, + SDL_SCANCODE_INTERNATIONAL4 := 138, + SDL_SCANCODE_INTERNATIONAL5 := 139, + SDL_SCANCODE_INTERNATIONAL6 := 140, + SDL_SCANCODE_INTERNATIONAL7 := 141, + SDL_SCANCODE_INTERNATIONAL8 := 142, + SDL_SCANCODE_INTERNATIONAL9 := 143, + SDL_SCANCODE_LANG1 := 144, (*< Hangul/English toggle *) + SDL_SCANCODE_LANG2 := 145, (*< Hanja conversion *) + SDL_SCANCODE_LANG3 := 146, (*< Katakana *) + SDL_SCANCODE_LANG4 := 147, (*< Hiragana *) + SDL_SCANCODE_LANG5 := 148, (*< Zenkaku/Hankaku *) + SDL_SCANCODE_LANG6 := 149, (*< reserved *) + SDL_SCANCODE_LANG7 := 150, (*< reserved *) + SDL_SCANCODE_LANG8 := 151, (*< reserved *) + SDL_SCANCODE_LANG9 := 152, (*< reserved *) + SDL_SCANCODE_ALTERASE := 153, + SDL_SCANCODE_SYSREQ := 154, + SDL_SCANCODE_CANCEL := 155, + SDL_SCANCODE_CLEAR := 156, + SDL_SCANCODE_PRIOR := 157, + SDL_SCANCODE_RETURN2 := 158, + SDL_SCANCODE_SEPARATOR := 159, + SDL_SCANCODE_OUT := 160, + SDL_SCANCODE_OPER := 161, + SDL_SCANCODE_CLEARAGAIN := 162, + SDL_SCANCODE_CRSEL := 163, + SDL_SCANCODE_EXSEL := 164, + SDL_SCANCODE_KP_00 := 176, + SDL_SCANCODE_KP_000 := 177, + SDL_SCANCODE_THOUSANDSSEPARATOR := 178, + SDL_SCANCODE_DECIMALSEPARATOR := 179, + SDL_SCANCODE_CURRENCYUNIT := 180, + SDL_SCANCODE_CURRENCYSUBUNIT := 181, + SDL_SCANCODE_KP_LEFTPAREN := 182, + SDL_SCANCODE_KP_RIGHTPAREN := 183, + SDL_SCANCODE_KP_LEFTBRACE := 184, + SDL_SCANCODE_KP_RIGHTBRACE := 185, + SDL_SCANCODE_KP_TAB := 186, + SDL_SCANCODE_KP_BACKSPACE := 187, + SDL_SCANCODE_KP_A := 188, + SDL_SCANCODE_KP_B := 189, + SDL_SCANCODE_KP_C := 190, + SDL_SCANCODE_KP_D := 191, + SDL_SCANCODE_KP_E := 192, + SDL_SCANCODE_KP_F := 193, + SDL_SCANCODE_KP_XOR := 194, + SDL_SCANCODE_KP_POWER := 195, + SDL_SCANCODE_KP_PERCENT := 196, + SDL_SCANCODE_KP_LESS := 197, + SDL_SCANCODE_KP_GREATER := 198, + SDL_SCANCODE_KP_AMPERSAND := 199, + SDL_SCANCODE_KP_DBLAMPERSAND := 200, + SDL_SCANCODE_KP_VERTICALBAR := 201, + SDL_SCANCODE_KP_DBLVERTICALBAR := 202, + SDL_SCANCODE_KP_COLON := 203, + SDL_SCANCODE_KP_HASH := 204, + SDL_SCANCODE_KP_SPACE := 205, + SDL_SCANCODE_KP_AT := 206, + SDL_SCANCODE_KP_EXCLAM := 207, + SDL_SCANCODE_KP_MEMSTORE := 208, + SDL_SCANCODE_KP_MEMRECALL := 209, + SDL_SCANCODE_KP_MEMCLEAR := 210, + SDL_SCANCODE_KP_MEMADD := 211, + SDL_SCANCODE_KP_MEMSUBTRACT := 212, + SDL_SCANCODE_KP_MEMMULTIPLY := 213, + SDL_SCANCODE_KP_MEMDIVIDE := 214, + SDL_SCANCODE_KP_PLUSMINUS := 215, + SDL_SCANCODE_KP_CLEAR := 216, + SDL_SCANCODE_KP_CLEARENTRY := 217, + SDL_SCANCODE_KP_BINARY := 218, + SDL_SCANCODE_KP_OCTAL := 219, + SDL_SCANCODE_KP_DECIMAL := 220, + SDL_SCANCODE_KP_HEXADECIMAL := 221, + SDL_SCANCODE_LCTRL := 224, + SDL_SCANCODE_LSHIFT := 225, + SDL_SCANCODE_LALT := 226, + SDL_SCANCODE_LGUI := 227, + SDL_SCANCODE_RCTRL := 228, + SDL_SCANCODE_RSHIFT := 229, + SDL_SCANCODE_RALT := 230, + SDL_SCANCODE_RGUI := 231, + SDL_SCANCODE_MODE := 257, + SDL_SCANCODE_AUDIONEXT := 258, + SDL_SCANCODE_AUDIOPREV := 259, + SDL_SCANCODE_AUDIOSTOP := 260, + SDL_SCANCODE_AUDIOPLAY := 261, + SDL_SCANCODE_AUDIOMUTE := 262, + SDL_SCANCODE_MEDIASELECT := 263, + SDL_SCANCODE_WWW := 264, + SDL_SCANCODE_MAIL := 265, + SDL_SCANCODE_CALCULATOR := 266, + SDL_SCANCODE_COMPUTER := 267, + SDL_SCANCODE_AC_SEARCH := 268, + SDL_SCANCODE_AC_HOME := 269, + SDL_SCANCODE_AC_BACK := 270, + SDL_SCANCODE_AC_FORWARD := 271, + SDL_SCANCODE_AC_STOP := 272, + SDL_SCANCODE_AC_REFRESH := 273, + SDL_SCANCODE_AC_BOOKMARKS := 274, + SDL_SCANCODE_BRIGHTNESSDOWN := 275, + SDL_SCANCODE_BRIGHTNESSUP := 276, + SDL_SCANCODE_DISPLAYSWITCH := 277, + SDL_SCANCODE_KBDILLUMTOGGLE := 278, + SDL_SCANCODE_KBDILLUMDOWN := 279, + SDL_SCANCODE_KBDILLUMUP := 280, + SDL_SCANCODE_EJECT := 281, + SDL_SCANCODE_SLEEP := 282, + SDL_SCANCODE_APP1 := 283, + SDL_SCANCODE_APP2 := 284 + ); + PSDL_Rect = ^TSDL_Rect; TSDL_Rect = record x, y, w, h: LongInt; @@ -441,8 +689,8 @@ {* SDL_Event type definition *} TSDL_Keysym = record - scancode: LongInt; - sym: LongInt; + scancode: TSDL_Scancode; + sym: TSDL_Keycode; modifier: Word; unused: LongWord; end; @@ -854,10 +1102,10 @@ function SDL_GetMouseState(x, y: PLongInt): Byte; cdecl; external SDLLibName; -function SDL_GetKeyName(key: LongWord): PChar; cdecl; external SDLLibName; -function SDL_GetScancodeName(key: LongWord): PChar; cdecl; external SDLLibName; -function SDL_GetKeyFromScancode(key: LongWord): LongInt; cdecl; external SDLLibName; - +function SDL_GetKeyName(key: TSDL_Keycode): PChar; cdecl; external SDLLibName; +function SDL_GetScancodeName(key: TSDL_Scancode): PChar; cdecl; external SDLLibName; +function SDL_GetKeyFromScancode(key: TSDL_Scancode): TSDL_Keycode; cdecl; external SDLLibName; +// SDL2 functions has some additional functions (not listed here) for keycode/scancode translation procedure SDL_PumpEvents; cdecl; external SDLLibName; function SDL_PollEvent(event: PSDL_Event): LongInt; cdecl; external SDLLibName; diff -r b0df3f2fcafc -r b8b208501475 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Tue Nov 10 22:37:54 2015 +0100 +++ b/hedgewars/hwengine.pas Wed Nov 11 19:25:56 2015 +0100 @@ -169,7 +169,7 @@ if GameState = gsChat then begin // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 - KeyPressChat(SDL_GetKeyFromScancode(event.key.keysym.sym), event.key.keysym.sym, event.key.keysym.modifier); + KeyPressChat(event.key.keysym); end else if GameState >= gsGame then ProcessKey(event.key); diff -r b0df3f2fcafc -r b8b208501475 hedgewars/uChat.pas --- a/hedgewars/uChat.pas Tue Nov 10 22:37:54 2015 +0100 +++ b/hedgewars/uChat.pas Wed Nov 11 19:25:56 2015 +0100 @@ -29,10 +29,9 @@ procedure CleanupInput; procedure AddChatString(s: shortstring); procedure DrawChat; -procedure KeyPressChat(Key, Sym: Longword; Modifier: Word); +procedure KeyPressChat(keysym: TSDL_Keysym); procedure SendHogSpeech(s: shortstring); procedure CopyToClipboard(var newContent: shortstring); - procedure TextInput(var event: TSDL_TextInputEvent); implementation @@ -572,6 +571,7 @@ FreezeEnterKey; history:= 0; SDL_StopTextInput(); + //SDL_EnableKeyRepeat(0,0); GameState:= gsGame; ResetKbd; end; @@ -780,25 +780,6 @@ end; end; -procedure TextInput(var event: TSDL_TextInputEvent); -var s: shortstring; - l: byte; -begin - DeleteSelected(); - - l:= 0; - while event.text[l] <> #0 do - begin - s[l + 1]:= event.text[l]; - inc(l) - end; - s[0]:= char(l); - - if byte(InputStr.s[0]) + l > 240 then exit; - - InsertIntoInputStr(s); -end; - procedure PasteFromClipboard(); var clip: PChar; begin @@ -815,14 +796,21 @@ end; end; -procedure KeyPressChat(Key, Sym: Longword; Modifier: Word); +procedure KeyPressChat(keysym: TSDL_Keysym); const firstByteMark: array[0..3] of byte = (0, $C0, $E0, $F0); nonStateMask = (not (KMOD_NUM or KMOD_CAPS)); var i, btw, index: integer; utf8: shortstring; action, selMode, ctrl, ctrlonly: boolean; skip: TCharSkip; + Scancode: TSDL_Scancode; + Sym: TSDL_Keycode; + Modifier: Word; begin + Scancode:= keysym.scancode; + Sym:= keysym.sym; + Modifier:= keysym.modifier; + LastKeyPressTick:= RealTicks; action:= true; @@ -831,8 +819,8 @@ ctrlonly:= ctrl and ((modifier and nonStateMask and (not (KMOD_LCTRL or KMOD_RCTRL))) = 0); skip:= none; - case Sym of - SDLK_BACKSPACE: + case Scancode of + SDL_SCANCODE_BACKSPACE: begin if selectedPos < 0 then begin @@ -849,7 +837,7 @@ DeleteSelected(); UpdateCursorCoords(); end; - SDLK_DELETE: + SDL_SCANCODE_DELETE: begin if selectedPos < 0 then begin @@ -866,7 +854,7 @@ DeleteSelected(); UpdateCursorCoords(); end; - SDLK_ESCAPE: + SDL_SCANCODE_ESCAPE: begin if Length(InputStr.s) > 0 then begin @@ -875,7 +863,7 @@ end else CleanupInput end; - SDLK_RETURN, SDLK_KP_ENTER: + SDL_SCANCODE_RETURN, SDL_SCANCODE_KP_ENTER: begin if Length(InputStr.s) > 0 then begin @@ -885,10 +873,10 @@ end; CleanupInput end; - SDLK_UP, SDLK_DOWN: + SDL_SCANCODE_UP, SDL_SCANCODE_DOWN: begin - if (Sym = SDLK_UP) and (history < localLastStr) then inc(history); - if (Sym = SDLK_DOWN) and (history > 0) then dec(history); + if (Scancode = SDL_SCANCODE_UP) and (history < localLastStr) then inc(history); + if (Scancode = SDL_SCANCODE_DOWN) and (history > 0) then dec(history); index:= localLastStr - history + 1; if (index > localLastStr) then begin @@ -902,7 +890,7 @@ ResetSelection(); UpdateCursorCoords(); end; - SDLK_HOME: + SDL_SCANCODE_HOME: begin if cursorPos > 0 then begin @@ -914,7 +902,7 @@ UpdateCursorCoords(); end; - SDLK_END: + SDL_SCANCODE_END: begin i:= Length(InputStr.s); if cursorPos < i then @@ -927,7 +915,7 @@ UpdateCursorCoords(); end; - SDLK_LEFT: + SDL_SCANCODE_LEFT: begin if cursorPos > 0 then begin @@ -956,7 +944,7 @@ UpdateCursorCoords(); end; - SDLK_RIGHT: + SDL_SCANCODE_RIGHT: begin if cursorPos < Length(InputStr.s) then begin @@ -981,11 +969,12 @@ UpdateCursorCoords(); end; - SDLK_PAGEUP, SDLK_PAGEDOWN: + SDL_SCANCODE_PAGEUP, SDL_SCANCODE_PAGEDOWN: begin // ignore me!!! end; - SDLK_a: + // TODO: figure out how to determine those keys better + SDL_SCANCODE_a: begin // select all if ctrlonly then @@ -999,7 +988,7 @@ else action:= false; end; - SDLK_c: + SDL_SCANCODE_c: begin // copy if ctrlonly then @@ -1007,7 +996,7 @@ else action:= false; end; - SDLK_v: + SDL_SCANCODE_v: begin // paste if ctrlonly then @@ -1018,7 +1007,7 @@ else action:= false; end; - SDLK_x: + SDL_SCANCODE_x: begin // cut if ctrlonly then @@ -1032,10 +1021,69 @@ else action:= false; end; + (* + if (not action) and (Sym <> SDLK_UNKNOWN) and ((Sym and SDLK_SCANCODE_MASK) = 0) then + begin + DeleteSelected(); - // TODO: ctrl+c etc. probably won't work anymore while in text input mode + if (Sym < $80) then + btw:= 1 + else if (Sym < $800) then + btw:= 2 + else if (Sym < $10000) then + btw:= 3 + else + btw:= 4; + + utf8:= ''; + + for i:= btw downto 2 do + begin + utf8:= char((Sym or $80) and $BF) + utf8; + Sym:= Sym shr 6 + end; + + utf8:= char(Sym or firstByteMark[Pred(btw)]) + utf8; + + if Length(InputStr.s) + btw > MaxInputStrLen then + exit; + + // if speech bubble quotes are used as first input, add the closing quote and place cursor inbetween + if (Length(InputStr.s) = 0) and (Length(utf8) = 1) and (charIsForHogSpeech(utf8[1])) then + begin + InsertIntoInputStr(utf8); + InsertIntoInputStr(utf8); + cursorPos:= 1; + UpdateCursorCoords(); + end + else + InsertIntoInputStr(utf8); + end + *) end; +procedure TextInput(var event: TSDL_TextInputEvent); +var s: shortstring; + l: byte; +begin + DeleteSelected(); + + l:= 0; + while event.text[l] <> #0 do + begin + s[l + 1]:= event.text[l]; + inc(l) + end; + + if l > 0 then + begin + if byte(InputStr.s[0]) + l > 240 then exit; + s[0]:= char(l); + InsertIntoInputStr(s); + end +end; + + procedure chChatMessage(var s: shortstring); begin AddChatString(s) @@ -1081,7 +1129,9 @@ begin s:= s; // avoid compiler hint GameState:= gsChat; + SDL_StopTextInput(); SDL_StartTextInput(); + //SDL_EnableKeyRepeat(200,45); if length(s) = 0 then SetLine(InputStr, '', true) else @@ -1121,6 +1171,7 @@ LastKeyPressTick:= 0; ResetCursor(); + SDL_StopTextInput(); end; procedure freeModule; diff -r b0df3f2fcafc -r b8b208501475 hedgewars/uInputHandler.pas --- a/hedgewars/uInputHandler.pas Tue Nov 10 22:37:54 2015 +0100 +++ b/hedgewars/uInputHandler.pas Wed Nov 11 19:25:56 2015 +0100 @@ -210,7 +210,8 @@ procedure ProcessKey(event: TSDL_KeyboardEvent); inline; var code: LongInt; begin - code:= event.keysym.scancode; + // TODO + code:= LongInt(event.keysym.scancode); //writelntoconsole('[KEY] '+inttostr(code)+ ' -> ''' +KeyNames[code] + ''', type = '+inttostr(event.type_)); ProcessKey(code, event.type_ = SDL_KEYDOWN); end; @@ -315,7 +316,7 @@ for i:= 0 to cKeyMaxIndex - 5 do begin - s:= shortstring(SDL_GetScancodeName(i)); + s:= shortstring(SDL_GetScancodeName(TSDL_Scancode(i))); for t:= 1 to Length(s) do if s[t] = ' ' then