diff -urN fceux-2.2.2-orig/src/drivers/sdl/input.cpp fceux-2.2.2/src/drivers/sdl/input.cpp
--- fceux-2.2.2-orig/src/drivers/sdl/input.cpp	2013-06-27 10:58:10 +0900
+++ fceux-2.2.2/src/drivers/sdl/input.cpp	2016-01-22 23:25:30 +0900
@@ -52,6 +52,8 @@
 extern Config *g_config;
 extern bool bindSavestate, frameAdvanceLagSkip, lagCounterDisplay;
 
+static bool turboState = false;
+
 
 /* UsrInputType[] is user-specified.  CurInputType[] is current
         (game loading can override user settings)
@@ -683,10 +685,18 @@
 
 	// Toggle throttling
 	NoWaiting &= ~1;
-	if (g_keyState[Hotkeys[HK_TURBO]])
+	if (_keyonly(Hotkeys[HK_TURBO]) && is_shift)
+	{
+		turboState = !turboState;
+	}
+	if (turboState)
 	{
 		NoWaiting |= 1;
 	}
+	if (g_keyState[Hotkeys[HK_TURBO]] && !is_shift)
+	{
+		NoWaiting ^= 1;
+	}
 
 	static bool frameAdvancing = false;
 	if (g_keyState[Hotkeys[HK_FRAME_ADVANCE]])
