diff --git a/src/winio.c b/src/winio.c
index c6a404c29b4dbe1fdaf35d41181135b19224a7bc..412da23fad084f40ca092beb688d09e17f484431 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1368,8 +1368,11 @@ int get_control_kbinput(int kbinput)
     /* Ctrl-8 (Ctrl-?) */
     else if (kbinput == '8')
 	retval = kbinput + 71;
-    /* Ctrl-? (Ctrl-8) to Ctrl-_ (Ctrl-/, Ctrl-7) */
-    else if ('?' <= kbinput && kbinput <= '_')
+    /* Ctrl-? (Ctrl-8) */
+    else if (kbinput == '?')
+	retval = kbinput + 64;
+    /* Ctrl-@ (Ctrl-Space, Ctrl-2, Ctrl-`) to Ctrl-_ (Ctrl-/, Ctrl-7) */
+    else if ('@' <= kbinput && kbinput <= '_')
 	retval = kbinput - 64;
     /* Ctrl-` (Ctrl-2, Ctrl-Space, Ctrl-@) to Ctrl-~ (Ctrl-6, Ctrl-^) */
     else if ('`' <= kbinput && kbinput <= '~')