diff --git a/src/eval.c b/src/eval.c
index 45b8f07..2ab3ee4 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -233,8 +233,6 @@
 static int get_lit_string_tv(char_u **arg, typval_T *rettv, int evaluate);
 static int free_unref_items(int copyID);
 static int get_env_tv(char_u **arg, typval_T *rettv, int evaluate);
-
-
 static int get_env_len(char_u **arg);
 static char_u * make_expanded_name(char_u *in_start, char_u *expr_start, char_u *expr_end, char_u *in_end);
 static void check_vars(char_u *name, int len);
@@ -4926,7 +4924,7 @@
 			  break;
 
 			    /* Special key, e.g.: "\<C-W>" */
-		case '<': extra = trans_special(&p, name, TRUE);
+		case '<': extra = trans_special(&p, name, TRUE, TRUE);
 			  if (extra != 0)
 			  {
 			      name += extra;
@@ -4943,6 +4941,11 @@
 
     }
     *name = NUL;
+    if (p == NUL)
+    {
+	EMSG2(_("E114: Missing quote: %s"), *arg);
+	return FAIL;
+    }
     *arg = p + 1;
 
     return OK;
diff --git a/src/gui_mac.c b/src/gui_mac.c
index b78c903..d750b3b 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -4830,7 +4830,7 @@
 	char_u	    *p_actext;
 
 	p_actext = menu->actext;
-	key = find_special_key(&p_actext, &modifiers, FALSE, FALSE);
+	key = find_special_key(&p_actext, &modifiers, FALSE, FALSE, FALSE);
 	if (*p_actext != 0)
 	    key = 0; /* error: trailing text */
 	/* find_special_key() returns a keycode with as many of the
diff --git a/src/misc2.c b/src/misc2.c
index f44c33c..00c01f4 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2674,13 +2674,14 @@
 trans_special(
     char_u	**srcp,
     char_u	*dst,
-    int		keycode) /* prefer key code, e.g. K_DEL instead of DEL */
+    int		keycode, /* prefer key code, e.g. K_DEL instead of DEL */
+    int		in_string) /* TRUE when inside a double quoted string */
 {
     int		modifiers = 0;
     int		key;
     int		dlen = 0;
 
-    key = find_special_key(srcp, &modifiers, keycode, FALSE);
+    key = find_special_key(srcp, &modifiers, keycode, FALSE, in_string);
     if (key == 0)
 	return 0;
 
@@ -2720,7 +2721,8 @@
     char_u	**srcp,
     int		*modp,
     int		keycode,     /* prefer key code, e.g. K_DEL instead of DEL */
-    int		keep_x_key)  /* don't translate xHome to Home key */
+    int		keep_x_key,  /* don't translate xHome to Home key */
+    int		in_string)   /* TRUE in string, double quote is escaped */
 {
     char_u	*last_dash;
     char_u	*end_of_name;
@@ -2751,10 +2753,14 @@
 		else
 #endif
 		    l = 1;
-		/* Anything accepted, like <C-?>, except <C-">, because the "
-		 * ends the string. */
-		if (bp[l] != '"' && bp[l + 1] == '>')
+		/* Anything accepted, like <C-?>.
+		 * <C-"> or <M-"> are not special in strings as " is
+		 * the string delimiter. With a backslash it works: <M-\"> */
+		if (!(in_string && bp[1] == '"') && bp[2] == '>')
 		    bp += l;
+		else if (in_string && bp[1] == '\\' && bp[2] == '"'
+							       && bp[3] == '>')
+		    bp += 2;
 	    }
 	}
 	if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
@@ -2798,20 +2804,22 @@
 	    }
 	    else
 	    {
-		/*
-		 * Modifier with single letter, or special key name.
-		 */
+		int off = 1;
+
+		/* Modifier with single letter, or special key name.  */
+		if (in_string && last_dash[1] == '\\' && last_dash[2] == '"')
+		    off = 2;
 #ifdef FEAT_MBYTE
 		if (has_mbyte)
-		    l = mb_ptr2len(last_dash + 1);
+		    l = mb_ptr2len(last_dash + off);
 		else
 #endif
 		    l = 1;
-		if (modifiers != 0 && last_dash[l + 1] == '>')
-		    key = PTR2CHAR(last_dash + 1);
+		if (modifiers != 0 && last_dash[l + off] == '>')
+		    key = PTR2CHAR(last_dash + off);
 		else
 		{
-		    key = get_special_key_code(last_dash + 1);
+		    key = get_special_key_code(last_dash + off);
 		    if (!keep_x_key)
 			key = handle_x_keys(key);
 		}
diff --git a/src/option.c b/src/option.c
index d1a2533..f417e9c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -9478,7 +9478,7 @@
     {
 	--arg;			    /* put arg at the '<' */
 	modifiers = 0;
-	key = find_special_key(&arg, &modifiers, TRUE, TRUE);
+	key = find_special_key(&arg, &modifiers, TRUE, TRUE, FALSE);
 	if (modifiers)		    /* can't handle modifiers here */
 	    key = 0;
     }
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index 573dee5..70c7dae 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -64,8 +64,8 @@
 int simplify_key(int key, int *modifiers);
 int handle_x_keys(int key);
 char_u *get_special_key_name(int c, int modifiers);
-int trans_special(char_u **srcp, char_u *dst, int keycode);
-int find_special_key(char_u **srcp, int *modp, int keycode, int keep_x_key);
+int trans_special(char_u **srcp, char_u *dst, int keycode, int in_string);
+int find_special_key(char_u **srcp, int *modp, int keycode, int keep_x_key, int in_string);
 int extract_modifiers(int key, int *modp);
 int find_special_key_in_table(int c);
 int get_special_key_code(char_u *name);
diff --git a/src/syntax.c b/src/syntax.c
index 0face62..19f9bc4 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -7939,7 +7939,7 @@
 		 */
 		for (p = arg, off = 0; off < 100 - 6 && *p; )
 		{
-		    len = trans_special(&p, buf + off, FALSE);
+		    len = trans_special(&p, buf + off, FALSE, FALSE);
 		    if (len > 0)	    /* recognized special char */
 			off += len;
 		    else		    /* copy as normal char */
diff --git a/src/term.c b/src/term.c
index 344fabc..774ef65 100644
--- a/src/term.c
+++ b/src/term.c
@@ -5429,7 +5429,7 @@
 	    }
 #endif
 
-	    slen = trans_special(&src, result + dlen, TRUE);
+	    slen = trans_special(&src, result + dlen, TRUE, FALSE);
 	    if (slen)
 	    {
 		dlen += slen;
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index d937565..a1281eb 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -98,3 +98,11 @@
   call assert_equal('new line here', getline(line('$') - 1))
   set nomodified
 endfunc
+
+func Test_map_meta_quotes()
+  imap <M-"> foo
+  call feedkeys("Go-\<M-\">-\<Esc>", "xt")
+  call assert_equal("-foo-", getline('$'))
+  set nomodified
+  iunmap <M-">
+endfunc
diff --git a/src/version.c b/src/version.c
index 0f0aabc..cd3a528 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2209,
+/**/
     2208,
 /**/
     2207,
