diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 7593667..fb5ef73 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1353,8 +1353,8 @@
 	To use the double quote character it must be escaped: "<M-\">".
 	Don't use <Char-xxxx> to get a utf-8 character, use \uxxxx as
 	mentioned above.
-\{xxx}	like \<xxx> but prepends a modifier instead of including it in the
-	character.  E.g. "\<C-w>" is one character 0x17 while "\{C-w}" is four
+\<*xxx>	Like \<xxx> but prepends a modifier instead of including it in the
+	character.  E.g. "\<C-w>" is one character 0x17 while "\<*C-w>" is four
 	bytes: 3 for the CTRL modifier and then character "W".
 
 Note that "\xff" is stored as the byte 255, which may be invalid in some
diff --git a/src/misc2.c b/src/misc2.c
index 61c997d..02fd418 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2772,13 +2772,14 @@
     int		modifiers;
     int		bit;
     int		key;
-    int		endchar = (flags & FSK_CURLY) ? '}' : '>';
     uvarnumber_T	n;
     int		l;
 
     src = *srcp;
-    if (src[0] != ((flags & FSK_CURLY) ? '{' : '<'))
+    if (src[0] != '<')
 	return 0;
+    if (src[1] == '*')	    // <*xxx>: do not simplify
+	++src;
 
     // Find end of modifier list
     last_dash = src;
@@ -2796,15 +2797,15 @@
 		// 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[l + 1] == endchar)
+		if (!(in_string && bp[1] == '"') && bp[l + 1] == '>')
 		    bp += l;
 		else if (in_string && bp[1] == '\\' && bp[2] == '"'
-							   && bp[3] == endchar)
+							   && bp[3] == '>')
 		    bp += 2;
 	    }
 	}
 	if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
-	    bp += 3;	// skip t_xx, xx may be '-' or '>'/'}'
+	    bp += 3;	// skip t_xx, xx may be '-' or '>'
 	else if (STRNICMP(bp, "char-", 5) == 0)
 	{
 	    vim_str2nr(bp + 5, NULL, &l, STR2NR_ALL, NULL, NULL, 0, TRUE);
@@ -2818,7 +2819,7 @@
 	}
     }
 
-    if (*bp == endchar)	// found matching '>' or '}'
+    if (*bp == '>')	// found matching '>'
     {
 	end_of_name = bp + 1;
 
@@ -2864,7 +2865,7 @@
 		    l = mb_ptr2len(last_dash + off);
 		else
 		    l = 1;
-		if (modifiers != 0 && last_dash[l + off] == endchar)
+		if (modifiers != 0 && last_dash[l + off] == '>')
 		    key = PTR2CHAR(last_dash + off);
 		else
 		{
diff --git a/src/testdir/test_backspace_opt.vim b/src/testdir/test_backspace_opt.vim
index 503643a..149d8a8 100644
--- a/src/testdir/test_backspace_opt.vim
+++ b/src/testdir/test_backspace_opt.vim
@@ -86,7 +86,7 @@
 
   set cpo-=<
   inoremap <c-u> <left><c-u>
-  exe "normal Avim3\{C-U}\<Esc>\<CR>"
+  exe "normal Avim3\<*C-U>\<Esc>\<CR>"
   iunmap <c-u>
   exe "normal Avim4\<C-U>\<C-U>\<Esc>\<CR>"
 
@@ -96,7 +96,7 @@
   exe "normal A vim6\<Esc>Azwei\<C-G>u\<C-U>\<Esc>\<CR>"
 
   inoremap <c-u> <left><c-u>
-  exe "normal A vim7\{C-U}\{C-U}\<Esc>\<CR>"
+  exe "normal A vim7\<*C-U>\<*C-U>\<Esc>\<CR>"
 
   call assert_equal([
         \ "1 this shouldn't be deleted",
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 7eb6e34..328e1ca 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -76,7 +76,7 @@
   inoremap <c-c> <ctrl-c>
   cnoremap <c-c> dummy
   cunmap <c-c>
-  call feedkeys("GoTEST2: CTRL-C |\{C-C}A|\<Esc>", "xt")
+  call feedkeys("GoTEST2: CTRL-C |\<*C-C>A|\<Esc>", "xt")
   call assert_equal('TEST2: CTRL-C |<ctrl-c>A|', getline('$'))
   unmap! <c-c>
   set nomodified
@@ -85,7 +85,7 @@
 func Test_map_ctrl_c_visual()
   " mapping of ctrl-c in Visual mode
   vnoremap <c-c> :<C-u>$put ='vmap works'
-  call feedkeys("GV\{C-C}\<CR>", "xt")
+  call feedkeys("GV\<*C-C>\<CR>", "xt")
   call assert_equal('vmap works', getline('$'))
   vunmap <c-c>
   set nomodified
@@ -235,7 +235,7 @@
 
 func Test_map_meta_quotes()
   imap <M-"> foo
-  call feedkeys("Go-\{M-\"}-\<Esc>", "xt")
+  call feedkeys("Go-\<*M-\">-\<Esc>", "xt")
   call assert_equal("-foo-", getline('$'))
   set nomodified
   iunmap <M-">
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index 5d6959b..f26b8c0 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -306,7 +306,7 @@
 func Test_mapping_at_hit_return_prompt()
   nnoremap <C-B> :echo "hit ctrl-b"<CR>
   call feedkeys(":ls\<CR>", "xt")
-  call feedkeys("\{C-B}", "xt")
+  call feedkeys("\<*C-B>", "xt")
   call assert_match('hit ctrl-b', Screenline(&lines - 1))
   nunmap <C-B>
 endfunc
diff --git a/src/typval.c b/src/typval.c
index 95b2792..23530a5 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -1285,16 +1285,13 @@
 			  ++name;
 			  break;
 
-			  // Special key, e.g.: "\<C-W>" or "\{C-W}"
+			  // Special key, e.g.: "\<C-W>"
 		case '<':
-		case '{':
 			  {
 			      int flags = FSK_KEYCODE | FSK_IN_STRING;
 
-			      if (*p == '<')
+			      if (p[1] != '*')
 				  flags |= FSK_SIMPLIFY;
-			      else
-				  flags |= FSK_CURLY;
 			      extra = trans_special(&p, name, flags, NULL);
 			      if (extra != 0)
 			      {
diff --git a/src/version.c b/src/version.c
index b9906b3..4b09557 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    867,
+/**/
     866,
 /**/
     865,
diff --git a/src/vim.h b/src/vim.h
index 4fc982a..251e190 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -2666,6 +2666,5 @@
 #define FSK_KEEP_X_KEY	0x02	// don't translate xHome to Home key
 #define FSK_IN_STRING	0x04	// TRUE in string, double quote is escaped
 #define FSK_SIMPLIFY	0x08	// simplify <C-H> and <A-x>
-#define FSK_CURLY	0x10	// {C-x} instead of <C-x>
 
 #endif // VIM__H
