diff --git a/src/rcfile.c b/src/rcfile.c
index cb9aa1cd608f92f7a68a7cf3158acaf677046e81..2a12d38c49549e0b30decb7ca6b7fdee5baa23c8 100644
--- a/src/rcfile.c
+++ b/src/rcfile.c
@@ -399,7 +399,11 @@ void parse_binding(char *ptr, bool dobind)
     else if (keycopy[0] != '^' && keycopy[0] != 'M' && keycopy[0] != 'F') {
 	rcfile_error(N_("Key name must begin with \"^\", \"M\", or \"F\""));
 	goto free_copy;
-    } else if (keycopy[0] == '^' && (keycopy[1] < 64 || keycopy[1] > 127)) {
+    } else if ((keycopy[0] == 'M' && keycopy[1] != '-') ||
+		(keycopy[0] == '^' && ((keycopy[1] < 64 || keycopy[1] > 127) ||
+		(strlen(keycopy) > 2 && strcmp(keycopy, "^Space") != 0))) ||
+		(strlen(keycopy) > 3 && strcmp(keycopy, "^Space") != 0 &&
+		strcmp(keycopy, "M-Space") != 0)) {
 	rcfile_error(N_("Key name %s is invalid"), keycopy);
 	goto free_copy;
     }