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
