diff --git a/ChangeLog b/ChangeLog
index 44b979ec64fdbb4b85ade3895a9a311bd552c032..332fcba69c5d74f81fdf545b478155fc0ad4766b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,8 @@
 	proper range to be rebound.  This fixes Savannah bug #47025.
 	* THANKS: Add a Spanish, a Catalan, and a Croat translator.
 	* AUTHORS, THANKS: Remove SVN Id tags and a duplication.
+	* src/winio.c (get_kbinput), src/nano.c (main): Switch the cursor on
+	in the right place: in the central input routine.
 
 2016-02-09  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (stat_with_alloc, open_buffer, write_file): Check the
diff --git a/src/nano.c b/src/nano.c
index 164b40d1f76a4b7d5693103b38e74622512200f2..272b41b8e5d85e708fdcc3856e18f677cba87a50 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1604,9 +1604,6 @@ int do_input(bool allow_funcs)
     const sc *s;
     bool have_shortcut;
 
-    /* Turn the cursor on when waiting for input. */
-    curs_set(1);
-
     /* Read in a character. */
     input = get_kbinput(edit);
 
diff --git a/src/winio.c b/src/winio.c
index 21a4a6c23c33116756851d741d6d7766f248b067..e53054f6d2cf80dee8ca1c9c419eda3698f9a38f 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -311,6 +311,9 @@ int get_kbinput(WINDOW *win)
 {
     int kbinput;
 
+    /* Turn the cursor on when waiting for input. */
+    curs_set(1);
+
     /* Read in a character and interpret it.  Continue doing this until
      * we get a recognized value or sequence. */
     while ((kbinput = parse_kbinput(win)) == ERR)