diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index af79d5ebd448d741ec02a18d93c9e1697cd338a9..e585781acb6c934df785dd63189179e67b66d40c 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -670,7 +670,7 @@ static unsigned int sdl_get_char_code(unsigned int keysym, unsigned int mod)
 			if(mod & KMOD_CTRL)
 				expect=sdl_keyval[i].ctrl;
 			else if(mod & KMOD_SHIFT) {
-				if(mod & KMOD_CAPS)
+				if((mod & KMOD_CAPS) && keysym != '\t')
 					expect=sdl_keyval[i].key;
 				else
 					expect=sdl_keyval[i].shift;
@@ -878,6 +878,8 @@ void sdl_video_event_thread(void *data)
 							break;
 						}
 					}
+					if ((ev.key.keysym.mod & KMOD_SHIFT) && (ev.key.keysym.sym == '\t'))
+						block_text = 1;
 					if (block_text || ev.key.keysym.sym < 0 || ev.key.keysym.sym > 127) {
 						// NUMLOCK makes 
 						if ((ev.key.keysym.mod & KMOD_NUM) && ((ev.key.keysym.sym >= SDLK_KP_1 && ev.key.keysym.sym <= SDLK_KP_0)
@@ -890,7 +892,6 @@ void sdl_video_event_thread(void *data)
 						sdl_add_key(sdl_get_char_code(ev.key.keysym.sym, ev.key.keysym.mod));
 					}
 					else if (!isprint(ev.key.keysym.sym)) {
-
 						if (ev.key.keysym.sym < 128)
 							sdl_add_key(ev.key.keysym.sym);
 					}