diff --git a/src/option.c b/src/option.c
index fa7eac4..6dbc3d1 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3269,7 +3269,6 @@
 static char_u *term_bg_default(void);
 static void did_set_option(int opt_idx, int opt_flags, int new_value);
 static char_u *illegal_char(char_u *, int);
-static int string_to_key(char_u *arg);
 #ifdef FEAT_CMDWIN
 static char_u *check_cedit(void);
 #endif
@@ -4763,7 +4762,7 @@
 					&& (!arg[1] || VIM_ISWHITE(arg[1]))
 					&& !VIM_ISDIGIT(*arg))))
 			{
-			    value = string_to_key(arg);
+			    value = string_to_key(arg, FALSE);
 			    if (value == 0 && (long *)varp != &p_wcm)
 			    {
 				errmsg = e_invarg;
@@ -5320,14 +5319,17 @@
 /*
  * Convert a key name or string into a key value.
  * Used for 'wildchar' and 'cedit' options.
+ * When "multi_byte" is TRUE allow for multi-byte characters.
  */
-    static int
-string_to_key(char_u *arg)
+    int
+string_to_key(char_u *arg, int multi_byte)
 {
     if (*arg == '<')
 	return find_key_option(arg + 1);
     if (*arg == '^')
 	return Ctrl_chr(arg[1]);
+    if (multi_byte)
+	return PTR2CHAR(arg);
     return *arg;
 }
 
@@ -5345,7 +5347,7 @@
 	cedit_key = -1;
     else
     {
-	n = string_to_key(p_cedit);
+	n = string_to_key(p_cedit, FALSE);
 	if (vim_isprintc(n))
 	    return e_invarg;
 	cedit_key = n;
@@ -7462,6 +7464,12 @@
 #endif
 
 #ifdef FEAT_TERMINAL
+    /* 'termkey' */
+    else if (varp == &curwin->w_p_tms)
+    {
+	if (*curwin->w_p_tk != NUL && string_to_key(curwin->w_p_tk, TRUE) == 0)
+	    errmsg = e_invarg;
+    }
     /* 'termsize' */
     else if (varp == &curwin->w_p_tms)
     {
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 8c9bde5..59dcd42 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -9,6 +9,7 @@
 void init_gui_options(void);
 void set_title_defaults(void);
 int do_set(char_u *arg, int opt_flags);
+int string_to_key(char_u *arg, int multi_byte);
 void set_options_bin(int oldval, int newval, int opt_flags);
 int get_viminfo_parameter(int type);
 char_u *find_viminfo_parameter(int type);
diff --git a/src/terminal.c b/src/terminal.c
index f5a9fd1..f2fae57 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -60,9 +60,9 @@
  * - implement term_scrape(buf, row)		inspect terminal screen
  * - implement term_open(command, options)	open terminal window
  * - implement term_getjob(buf)
- * - implement 'termkey'
  * - when 'encoding' is not utf-8, or the job is using another encoding, setup
  *   conversions.
+ * - In the GUI use a terminal emulator for :!cmd.
  */
 
 #include "vim.h"
@@ -445,6 +445,10 @@
     size_t	len;
     static int	mouse_was_outside = FALSE;
     int		dragging_outside = FALSE;
+    int		termkey = 0;
+
+    if (*curwin->w_p_tk != NUL)
+	termkey = string_to_key(curwin->w_p_tk, TRUE);
 
     for (;;)
     {
@@ -459,10 +463,15 @@
 	--no_mapping;
 	--allow_keys;
 
+	if (c == (termkey == 0 ? Ctrl_W : termkey))
+	{
+	    stuffcharReadbuff(Ctrl_W);
+	    return;
+	}
+
 	/* Catch keys that need to be handled as in Normal mode. */
 	switch (c)
 	{
-	    case Ctrl_W:
 	    case NUL:
 	    case K_ZERO:
 		stuffcharReadbuff(c);
diff --git a/src/version.c b/src/version.c
index e2ab84c..ed58049 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    764,
+/**/
     763,
 /**/
     762,
