sdl2: restore keyboard input

This commit is contained in:
Ronald Kinard 2014-03-19 20:19:31 -05:00
parent 63e47c1f0e
commit 5273989dcd

View file

@ -232,12 +232,8 @@ static void SDLSetMode(INT32 width, INT32 height, INT32 bpp, Uint32 flags)
// Translates the SDL key into SRB2 key // Translates the SDL key into SRB2 key
// //
typedef int SDLKey; // TODO remove this static INT32 SDLatekey(SDL_Keycode sym)
static INT32 SDLatekey(SDLKey sym)
{ {
SDL2STUB();
return 0;
#if 0 // TODO SDL2 overhaul
INT32 rc = sym + 0x80; INT32 rc = sym + 0x80;
switch (sym) switch (sym)
@ -352,10 +348,10 @@ static INT32 SDLatekey(SDLKey sym)
rc = KEY_RALT; rc = KEY_RALT;
break; break;
case SDLK_NUMLOCK: case SDLK_NUMLOCKCLEAR:
rc = KEY_NUMLOCK; rc = KEY_NUMLOCK;
break; break;
case SDLK_SCROLLOCK: case SDLK_SCROLLLOCK:
rc = KEY_SCROLLLOCK; rc = KEY_SCROLLLOCK;
break; break;
@ -375,34 +371,34 @@ static INT32 SDLatekey(SDLKey sym)
rc = KEY_INS; rc = KEY_INS;
break; break;
case SDLK_KP0: case SDLK_KP_0:
rc = KEY_KEYPAD0; rc = KEY_KEYPAD0;
break; break;
case SDLK_KP1: case SDLK_KP_1:
rc = KEY_KEYPAD1; rc = KEY_KEYPAD1;
break; break;
case SDLK_KP2: case SDLK_KP_2:
rc = KEY_KEYPAD2; rc = KEY_KEYPAD2;
break; break;
case SDLK_KP3: case SDLK_KP_3:
rc = KEY_KEYPAD3; rc = KEY_KEYPAD3;
break; break;
case SDLK_KP4: case SDLK_KP_4:
rc = KEY_KEYPAD4; rc = KEY_KEYPAD4;
break; break;
case SDLK_KP5: case SDLK_KP_5:
rc = KEY_KEYPAD5; rc = KEY_KEYPAD5;
break; break;
case SDLK_KP6: case SDLK_KP_6:
rc = KEY_KEYPAD6; rc = KEY_KEYPAD6;
break; break;
case SDLK_KP7: case SDLK_KP_7:
rc = KEY_KEYPAD7; rc = KEY_KEYPAD7;
break; break;
case SDLK_KP8: case SDLK_KP_8:
rc = KEY_KEYPAD8; rc = KEY_KEYPAD8;
break; break;
case SDLK_KP9: case SDLK_KP_9:
rc = KEY_KEYPAD9; rc = KEY_KEYPAD9;
break; break;
@ -422,16 +418,10 @@ static INT32 SDLatekey(SDLKey sym)
rc = KEY_PLUSPAD; rc = KEY_PLUSPAD;
break; break;
case SDLK_LSUPER:
#ifdef HAVE_SDLMETAKEYS
case SDLK_LMETA: case SDLK_LMETA:
#endif
rc = KEY_LEFTWIN; rc = KEY_LEFTWIN;
break; break;
case SDLK_RSUPER:
#ifdef HAVE_SDLMETAKEYS
case SDLK_RMETA: case SDLK_RMETA:
#endif
rc = KEY_RIGHTWIN; rc = KEY_RIGHTWIN;
break; break;
@ -453,7 +443,6 @@ static INT32 SDLatekey(SDLKey sym)
} }
return rc; return rc;
#endif
} }
static void SDLdoUngrabMouse(void) static void SDLdoUngrabMouse(void)
@ -728,13 +717,69 @@ static INT32 SDLJoyAxis(const Sint16 axis, evtype_t which)
return raxis; return raxis;
} }
static void Impl_HandleWindowEvent(SDL_WindowEvent evt)
{
switch (evt.type)
{
case SDL_WINDOWEVENT_FOCUS_GAINED:
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
break;
case SDL_WINDOWEVENT_MAXIMIZED:
break;
}
}
static void Impl_HandleKeyboardEvent(SDL_KeyboardEvent evt, Uint32 type)
{
event_t event;
if (type == SDL_KEYUP)
{
event.type = ev_keyup;
}
else if (type == SDL_KEYDOWN)
{
event.type = ev_keydown;
}
else
{
return;
}
event.data1 = SDLatekey(evt.keysym.sym);
if (event.data1) D_PostEvent(&event);
}
static void Impl_HandleMouseMotionEvent(SDL_MouseMotionEvent evt)
{
}
void I_GetEvent(void) void I_GetEvent(void)
{ {
SDL2STUB();
SDL_Event evt; SDL_Event evt;
while (SDL_PollEvent(&evt)) while (SDL_PollEvent(&evt))
{ {
if (evt.type == SDL_WINDOWEVENT)
{
Impl_HandleWindowEvent(evt.window);
}
if (evt.type == SDL_KEYUP || evt.type == SDL_KEYDOWN)
{
Impl_HandleKeyboardEvent(evt.key, evt.type);
}
if (evt.type == SDL_MOUSEMOTION)
{
Impl_HandleMouseMotionEvent(evt.motion);
}
if (evt.type == SDL_QUIT)
{
I_Quit();
M_QuitResponse('y');
}
} }
#if 0 #if 0
SDL_Event inputEvent; SDL_Event inputEvent;