diff -urN fceux-2.2.3-orig/src/drivers/sdl/config.cpp fceux-2.2.3/src/drivers/sdl/config.cpp
--- fceux-2.2.3-orig/src/drivers/sdl/config.cpp	2016-07-29 05:52:39 +0900
+++ fceux-2.2.3/src/drivers/sdl/config.cpp	2017-04-12 03:54:43 +0900
@@ -379,7 +379,9 @@
 		SDLK_0, SDLK_1, SDLK_2, SDLK_3, SDLK_4, SDLK_5,
 		SDLK_6, SDLK_7, SDLK_8, SDLK_9,
 		SDLK_PAGEUP, // select state next
-		SDLK_PAGEDOWN}; // select state prev
+		SDLK_PAGEDOWN, // select state prev
+		SDLK_KP_DIVIDE, // reset joysticks
+	};
 
 	prefix = "SDL.Hotkeys.";
 	for(int i=0; i < HK_MAX; i++)
diff -urN fceux-2.2.3-orig/src/drivers/sdl/config.h fceux-2.2.3/src/drivers/sdl/config.h
--- fceux-2.2.3-orig/src/drivers/sdl/config.h	2016-07-29 05:52:39 +0900
+++ fceux-2.2.3/src/drivers/sdl/config.h	2017-04-12 03:55:36 +0900
@@ -20,6 +20,7 @@
 	HK_SELECT_STATE_4, HK_SELECT_STATE_5, HK_SELECT_STATE_6, HK_SELECT_STATE_7,
 	HK_SELECT_STATE_8, HK_SELECT_STATE_9, 
 	HK_SELECT_STATE_NEXT, HK_SELECT_STATE_PREV, HK_VOLUME_DOWN, HK_VOLUME_UP,
+	HK_RESET_JOYSTICKS,
 	HK_MAX};
 
 
@@ -52,6 +53,8 @@
 		"SelectState0", "SelectState1", "SelectState2", "SelectState3",
 		"SelectState4", "SelectState5", "SelectState6", "SelectState7", 
 		"SelectState8", "SelectState9", "SelectStateNext", "SelectStatePrev",
-		"VolumeDown", "VolumeUp" };
+		"VolumeDown", "VolumeUp",
+		"ResetJoysticks",
+};
 #endif
 
diff -urN fceux-2.2.3-orig/src/drivers/sdl/input.cpp fceux-2.2.3/src/drivers/sdl/input.cpp
--- fceux-2.2.3-orig/src/drivers/sdl/input.cpp	2016-07-29 05:52:39 +0900
+++ fceux-2.2.3/src/drivers/sdl/input.cpp	2017-04-12 03:54:43 +0900
@@ -794,6 +794,11 @@
 		FCEUD_SoundVolumeAdjust(1);
 	}
 
+	if (_keyonly (Hotkeys[HK_RESET_JOYSTICKS]))
+	{
+		KillJoysticks ();
+		InitJoysticks ();
+	}
 	// VS Unisystem games
 	if (gametype == GIT_VSUNI)
 	{
