From 5d0eafb26a020239e3d84b10a01d505a8ec7c1df Mon Sep 17 00:00:00 2001
From: Ronald Kinard <ronkinard93@gmail.com>
Date: Thu, 13 Nov 2014 15:31:32 -0600
Subject: [PATCH] Fix MOUSE4/MOUSE5

MOUSE6-8 will not be supported on SDL2 as there is no interface for them.
---
 src/sdl/i_video.c | 228 +---------------------------------------------
 1 file changed, 5 insertions(+), 223 deletions(-)

diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c
index ceb13ffe5..566fb5b96 100644
--- a/src/sdl/i_video.c
+++ b/src/sdl/i_video.c
@@ -424,226 +424,6 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code)
 	return 0;
 }
 
-//
-//  Translates the SDL scancode into SRB2 key
-//
-//  Deprecated: keycodes in SDL2 are not scancode based.
-//  They do not work with non-US keyboards anymore.
-//
-
-static INT32 SDLatekey(SDL_Keycode sym)
-{
-	INT32 rc = sym + 0x80;
-
-	switch (sym)
-	{
-		case SDLK_LEFT:
-			rc = KEY_LEFTARROW;
-			break;
-		case SDLK_RIGHT:
-			rc = KEY_RIGHTARROW;
-			break;
-		case SDLK_DOWN:
-			rc = KEY_DOWNARROW;
-			break;
-		case SDLK_UP:
-			rc = KEY_UPARROW;
-			break;
-
-		case SDLK_ESCAPE:
-			rc = KEY_ESCAPE;
-			break;
-		case SDLK_SPACE:
-			rc = KEY_SPACE;
-			break;
-		case SDLK_RETURN:
-		case SDLK_KP_ENTER:
-			rc = KEY_ENTER;
-			break;
-		case SDLK_TAB:
-			rc = KEY_TAB;
-			break;
-		case SDLK_F1:
-			rc = KEY_F1;
-			break;
-		case SDLK_F2:
-			rc = KEY_F2;
-			break;
-		case SDLK_F3:
-			rc = KEY_F3;
-			break;
-		case SDLK_F4:
-			rc = KEY_F4;
-			break;
-		case SDLK_F5:
-			rc = KEY_F5;
-			break;
-		case SDLK_F6:
-			rc = KEY_F6;
-			break;
-		case SDLK_F7:
-			rc = KEY_F7;
-			break;
-		case SDLK_F8:
-			rc = KEY_F8;
-			break;
-		case SDLK_F9:
-			rc = KEY_F9;
-			break;
-		case SDLK_F10:
-			rc = KEY_F10;
-			break;
-		case SDLK_F11:
-			rc = KEY_F11;
-			break;
-		case SDLK_F12:
-			rc = KEY_F12;
-			break;
-
-		case SDLK_BACKSPACE:
-			rc = KEY_BACKSPACE;
-			break;
-		case SDLK_DELETE:
-			rc = KEY_DEL;
-			break;
-
-		case SDLK_KP_EQUALS: //Alam & Logan: WTF? Mac KB haves one! XD
-		case SDLK_PAUSE:
-			rc = KEY_PAUSE;
-			break;
-
-		case SDLK_EQUALS:
-		case SDLK_PLUS:
-			rc = KEY_EQUALS;
-			break;
-
-		case SDLK_MINUS:
-			rc = KEY_MINUS;
-			break;
-
-		case SDLK_LSHIFT:
-			rc = KEY_LSHIFT;
-			break;
-
-		case SDLK_RSHIFT:
-			rc = KEY_RSHIFT;
-			break;
-
-		case SDLK_CAPSLOCK:
-			rc = KEY_CAPSLOCK;
-			break;
-
-		case SDLK_LCTRL:
-			rc = KEY_LCTRL;
-			break;
-		case SDLK_RCTRL:
-			rc = KEY_RCTRL;
-			break;
-
-		case SDLK_LALT:
-			rc = KEY_LALT;
-			break;
-		case SDLK_RALT:
-			rc = KEY_RALT;
-			break;
-
-		case SDLK_NUMLOCKCLEAR:
-			rc = KEY_NUMLOCK;
-			break;
-		case SDLK_SCROLLLOCK:
-			rc = KEY_SCROLLLOCK;
-			break;
-
-		case SDLK_PAGEUP:
-			rc = KEY_PGUP;
-			break;
-		case SDLK_PAGEDOWN:
-			rc = KEY_PGDN;
-			break;
-		case SDLK_END:
-			rc = KEY_END;
-			break;
-		case SDLK_HOME:
-			rc = KEY_HOME;
-			break;
-		case SDLK_INSERT:
-			rc = KEY_INS;
-			break;
-
-		case SDLK_KP_0:
-			rc = KEY_KEYPAD0;
-			break;
-		case SDLK_KP_1:
-			rc = KEY_KEYPAD1;
-			break;
-		case SDLK_KP_2:
-			rc = KEY_KEYPAD2;
-			break;
-		case SDLK_KP_3:
-			rc = KEY_KEYPAD3;
-			break;
-		case SDLK_KP_4:
-			rc = KEY_KEYPAD4;
-			break;
-		case SDLK_KP_5:
-			rc = KEY_KEYPAD5;
-			break;
-		case SDLK_KP_6:
-			rc = KEY_KEYPAD6;
-			break;
-		case SDLK_KP_7:
-			rc = KEY_KEYPAD7;
-			break;
-		case SDLK_KP_8:
-			rc = KEY_KEYPAD8;
-			break;
-		case SDLK_KP_9:
-			rc = KEY_KEYPAD9;
-			break;
-
-		case SDLK_KP_PERIOD:
-			rc = KEY_KPADDEL;
-			break;
-		case SDLK_KP_DIVIDE:
-			rc = KEY_KPADSLASH;
-			break;
-		case SDLK_KP_MULTIPLY:
-			rc = '*';
-			break;
-		case SDLK_KP_MINUS:
-			rc = KEY_MINUSPAD;
-			break;
-		case SDLK_KP_PLUS:
-			rc = KEY_PLUSPAD;
-			break;
-
-		case SDLK_LMETA:
-			rc = KEY_LEFTWIN;
-			break;
-		case SDLK_RMETA:
-			rc = KEY_RIGHTWIN;
-			break;
-
-		case SDLK_MENU:
-			rc = KEY_MENU;
-			break;
-
-		default:
-			if (sym >= SDLK_SPACE && sym <= SDLK_DELETE)
-				rc = sym - SDLK_SPACE + ' ';
-			else if (sym >= 'A' && sym <= 'Z')
-				rc = sym - 'A' + 'a';
-			else if (sym)
-			{
-				I_OutputMsg("Unknown Keycode %i, Name: %s\n",sym, SDL_GetKeyName( sym ));
-			}
-			else if (!sym) rc = 0;
-			break;
-	}
-
-	return rc;
-}
-
 static void SDLdoUngrabMouse(void)
 {
 	SDL_SetWindowGrab(window, SDL_FALSE);
@@ -1020,9 +800,11 @@ static void Impl_HandleMouseButtonEvent(SDL_MouseButtonEvent evt, Uint32 type)
 		else if (evt.button == SDL_BUTTON_RIGHT)
 			event.data1 = KEY_MOUSE1+1;
 		else if (evt.button == SDL_BUTTON_LEFT)
-			event.data1= KEY_MOUSE1;
-		else if (evt.button <= MOUSEBUTTONS)
-			event.data1 = KEY_MOUSE1 + evt.which - SDL_BUTTON_LEFT;
+			event.data1 = KEY_MOUSE1;
+		else if (evt.button == SDL_BUTTON_X1)
+			event.data1 = KEY_MOUSE1+3;
+		else if (evt.button == SDL_BUTTON_X2)
+			event.data1 = KEY_MOUSE1+4;
 		if (event.type == ev_keyup || event.type == ev_keydown)
 		{
 			D_PostEvent(&event);
-- 
GitLab