diff --git a/src/terminal.c b/src/terminal.c
index 4a95a3e..c3ce116 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1128,6 +1128,21 @@
 }
 
 /*
+ * Read any vterm output and send it on the channel.
+ */
+    static void
+term_forward_output(term_T *term)
+{
+    VTerm *vterm = term->tl_vterm;
+    char   buf[KEY_BUF_LEN];
+    size_t curlen = vterm_output_read(vterm, buf, KEY_BUF_LEN);
+
+    if (curlen > 0)
+	channel_send(term->tl_job->jv_channel, get_tty_part(term),
+					     (char_u *)buf, (int)curlen, NULL);
+}
+
+/*
  * Write job output "msg[len]" to the vterm.
  */
     static void
@@ -1154,14 +1169,7 @@
 
     // flush vterm buffer when vterm responded to control sequence
     if (prevlen != vterm_output_get_buffer_current(vterm))
-    {
-	char   buf[KEY_BUF_LEN];
-	size_t curlen = vterm_output_read(vterm, buf, KEY_BUF_LEN);
-
-	if (curlen > 0)
-	    channel_send(term->tl_job->jv_channel, get_tty_part(term),
-					     (char_u *)buf, (int)curlen, NULL);
-    }
+	term_forward_output(term);
 
     // this invokes the damage callbacks
     vterm_screen_flush_damage(vterm_obtain_screen(vterm));
@@ -2490,6 +2498,23 @@
     }
 }
 
+    void
+term_focus_change(int in_focus)
+{
+    term_T *term = curbuf->b_term;
+
+    if (term != NULL && term->tl_vterm != NULL)
+    {
+	VTermState	*state = vterm_obtain_state(term->tl_vterm);
+
+	if (in_focus)
+	    vterm_state_focus_in(state);
+	else
+	    vterm_state_focus_out(state);
+	term_forward_output(term);
+    }
+}
+
 /*
  * vgetc() may not include CTRL in the key when modify_other_keys is set.
  * Return the Ctrl-key value in that case.
