diff --git a/src/evalfunc.c b/src/evalfunc.c
index ae1425e..259edb8 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3311,18 +3311,12 @@
 		/* Avoid a 1 second delay when the keys start Insert mode. */
 		msg_scroll = FALSE;
 
-#ifdef FEAT_TERMINAL
-		if (term_use_loop())
-		    terminal_loop(FALSE);
-		else
-#endif
-		{
-		    if (!dangerous)
-			++ex_normal_busy;
-		    exec_normal(TRUE);
-		    if (!dangerous)
-			--ex_normal_busy;
-		}
+		if (!dangerous)
+		    ++ex_normal_busy;
+		exec_normal(TRUE);
+		if (!dangerous)
+		    --ex_normal_busy;
+
 		msg_scroll |= save_msg_scroll;
 	    }
 	}
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 66d2ad6..0e2edd6 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10340,7 +10340,21 @@
 		    && typebuf.tb_len > 0)) && !got_int)
     {
 	update_topline_cursor();
-	normal_cmd(&oa, TRUE);	/* execute a Normal mode cmd */
+#ifdef FEAT_TERMINAL
+	if (term_use_loop()
+		&& oa.op_type == OP_NOP && oa.regname == NUL
+		&& !VIsual_active)
+	{
+	    /* If terminal_loop() returns OK we got a key that is handled
+	     * in Normal model.  With FAIL we first need to position the
+	     * cursor and the screen needs to be redrawn. */
+	    if (terminal_loop(TRUE) == OK)
+		normal_cmd(&oa, TRUE);
+	}
+	else
+#endif
+	    /* execute a Normal mode cmd */
+	    normal_cmd(&oa, TRUE);
     }
 }
 
diff --git a/src/getchar.c b/src/getchar.c
index 623440e..5b5b3ed 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2059,7 +2059,7 @@
 		    c = inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 0L);
 		    /*
 		     * If inchar() returns TRUE (script file was active) or we
-		     * are inside a mapping, get out of insert mode.
+		     * are inside a mapping, get out of Insert mode.
 		     * Otherwise we behave like having gotten a CTRL-C.
 		     * As a result typing CTRL-C in insert mode will
 		     * really insert a CTRL-C.
@@ -2755,6 +2755,10 @@
 		     * cmdline window. */
 		    if (p_im && (State & INSERT))
 			c = Ctrl_L;
+#ifdef FEAT_TERMINAL
+		    else if (terminal_is_active())
+			c = K_CANCEL;
+#endif
 		    else if ((State & CMDLINE)
 #ifdef FEAT_CMDWIN
 			    || (cmdwin_type > 0 && tc == ESC)
@@ -2898,8 +2902,8 @@
 	    }	    /* for (;;) */
 	}	/* if (!character from stuffbuf) */
 
-			/* if advance is FALSE don't loop on NULs */
-    } while (c < 0 || (advance && c == NUL));
+	/* if advance is FALSE don't loop on NULs */
+    } while ((c < 0 && c != K_CANCEL) || (advance && c == NUL));
 
     /*
      * The "INSERT" message is taken care of here:
diff --git a/src/keymap.h b/src/keymap.h
index 8a34f0e..d6dd5cb 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -270,6 +270,7 @@
     , KE_FOCUSGAINED = 98	/* focus gained */
     , KE_FOCUSLOST = 99		/* focus lost */
     , KE_MOUSEMOVE = 100	/* mouse moved with no button down */
+    , KE_CANCEL = 101		/* return from vgetc() */
 };
 
 /*
@@ -455,6 +456,7 @@
 
 #define K_IGNORE	TERMCAP2KEY(KS_EXTRA, KE_IGNORE)
 #define K_NOP		TERMCAP2KEY(KS_EXTRA, KE_NOP)
+#define K_CANCEL	TERMCAP2KEY(KS_EXTRA, KE_CANCEL)
 
 #define K_MOUSEDOWN	TERMCAP2KEY(KS_EXTRA, KE_MOUSEDOWN)
 #define K_MOUSEUP	TERMCAP2KEY(KS_EXTRA, KE_MOUSEUP)
diff --git a/src/terminal.c b/src/terminal.c
index 9b336ee..1fd9ed2 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -42,7 +42,6 @@
  *   redirection.  Probably in call to channel_set_pipes().
  * - Win32: Redirecting output does not work, Test_terminal_redir_file()
  *   is disabled.
- * - Add test for 'termwinkey'.
  * - When starting terminal window with shell in terminal, then using :gui to
  *   switch to GUI, shell stops working. Scrollback seems wrong, command
  *   running in shell is still running.
@@ -1690,6 +1689,7 @@
 	    return FAIL;
 
 	case K_IGNORE:
+	case K_CANCEL:  // used for :normal when running out of chars
 	    return FAIL;
 
 	case K_LEFTDRAG:
@@ -1826,9 +1826,9 @@
     }
 }
 
-#if defined(FEAT_GUI) || defined(PROTO)
 /*
- * Return TRUE when the cursor of the terminal should be displayed.
+ * Return TRUE when waiting for a character in the terminal, the cursor of the
+ * terminal should be displayed.
  */
     int
 terminal_is_active()
@@ -1836,6 +1836,7 @@
     return in_terminal_loop != NULL;
 }
 
+#if defined(FEAT_GUI) || defined(PROTO)
     cursorentry_T *
 term_get_cursor_shape(guicolor_T *fg, guicolor_T *bg)
 {
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 0f72346..cde41a1 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1471,3 +1471,19 @@
 
   set termwinsize=
 endfunc
+
+func Test_terminal_termwinkey()
+  call assert_equal(1, winnr('$'))
+  let thiswin = win_getid()
+
+  let buf = Run_shell_in_terminal({})
+  let termwin = bufwinid(buf)
+  set termwinkey=<C-L>
+  call feedkeys("\<C-L>w", 'tx')
+  call assert_equal(thiswin, win_getid())
+  call feedkeys("\<C-W>w", 'tx')
+
+  let job = term_getjob(buf)
+  call feedkeys("\<C-L>\<C-C>", 'tx')
+  call WaitForAssert({-> assert_equal("dead", job_status(job))})
+endfunc
diff --git a/src/version.c b/src/version.c
index 01bd9a1..52b5436 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1786,
+/**/
     1785,
 /**/
     1784,
