mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-21 20:11:12 +00:00
sdl2: restore keyboard input
This commit is contained in:
parent
63e47c1f0e
commit
5273989dcd
1 changed files with 70 additions and 25 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue