diff --git a/src/winio.c b/src/winio.c
index 7ab42e7c3cf94d4e44cc5bbe71e8b722b2513d8e..b5f1d10bcd37230b8b96f8b315ca0ca657ef0d57 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -388,6 +388,8 @@ int parse_kbinput(WINDOW *win)
 		case 1:
 			if (keycode >= 0x80)
 				retval = keycode;
+			else if (keycode == TAB_CODE)
+				retval = SHIFT_TAB;
 			else if ((keycode != 'O' && keycode != 'o' && keycode != '[') ||
 						key_buffer_len == 0 || *key_buffer == ESC_CODE) {
 				/* One escape followed by a single non-escape: