diff --git a/src/winio.c b/src/winio.c
index e2042d9eaeaf1f60f9c96dd316078fe228e683f1..7e3d69c09cd6b8b3651f53a17a37e17ffe165fed 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -475,7 +475,7 @@ int parse_kbinput(WINDOW *win)
 						 * or control character sequence mode. */
 						if (!solitary) {
 							meta_key = TRUE;
-							retval = keycode;
+							retval = tolower(keycode);
 						} else
 							retval = get_control_kbinput(keycode);
 					else {
@@ -502,8 +502,10 @@ int parse_kbinput(WINDOW *win)
 			break;
 		case 3:
 			if (key_buffer_len == 0) {
-				if (!solitary)
+				if (!solitary) {
 					meta_key = TRUE;
+					retval = tolower(keycode);
+				} else
 				/* Three escapes followed by a non-escape, and no
 				 * other codes are waiting: normal input mode. */
 				retval = keycode;