diff --git a/src/getchar.c b/src/getchar.c
index ce7508c..cc43ef2 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1246,27 +1246,43 @@
     static void
 gotchars(char_u *chars, int len)
 {
-    char_u	*s = chars;
-    int		c;
-    char_u	buf[2];
-    int		todo = len;
+    char_u		*s = chars;
+    int			i;
+    static char_u	buf[4];
+    static int		buflen = 0;
+    int			todo = len;
 
-    /* remember how many chars were last recorded */
-    if (reg_recording != 0)
-	last_recorded_len += len;
-
-    buf[1] = NUL;
     while (todo--)
     {
+	buf[buflen++] = *s++;
+
+	// When receiving a special key sequence, store it until we have all
+	// the bytes and we can decide what to do with it.
+	if (buflen == 1 && buf[0] == K_SPECIAL)
+	    continue;
+	if (buflen == 2)
+	    continue;
+	if (buflen == 3 && buf[1] == KS_EXTRA
+		       && (buf[2] == KE_FOCUSGAINED || buf[2] == KE_FOCUSLOST))
+	{
+	    // Drop K_FOCUSGAINED and K_FOCUSLOST, they are not useful in a
+	    // recording.
+	    buflen = 0;
+	    continue;
+	}
+
 	/* Handle one byte at a time; no translation to be done. */
-	c = *s++;
-	updatescript(c);
+	for (i = 0; i < buflen; ++i)
+	    updatescript(buf[i]);
 
 	if (reg_recording != 0)
 	{
-	    buf[0] = c;
-	    add_buff(&recordbuff, buf, 1L);
+	    buf[buflen] = NUL;
+	    add_buff(&recordbuff, buf, (long)buflen);
+	    /* remember how many chars were last recorded */
+	    last_recorded_len += buflen;
 	}
+	buflen = 0;
     }
     may_sync_undo();
 
