diff --git a/src/global.c b/src/global.c
index 8029b96ebbb0230008c0105bb32a63dd6b146cef..73a79fc9c814a518bff5d88ca8f4838c7bf40883 100644
--- a/src/global.c
+++ b/src/global.c
@@ -35,8 +35,6 @@ volatile sig_atomic_t sigwinch_counter = 0;
 
 bool meta_key;
 	/* Whether the current keystroke is a Meta key. */
-bool func_key;
-	/* Whether the current keystroke is an extended keypad value. */
 bool focusing = TRUE;
 	/* Whether an update of the edit window should center the cursor. */
 
diff --git a/src/nano.c b/src/nano.c
index 062c97c48998d93eab675d3dac6753be5c10c8bb..2553de12004222dd29a5bf52a6347a949efe69bc 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1539,7 +1539,7 @@ void terminal_init(void)
 /* Say that an unbound key was struck, and if possible which one. */
 void unbound_key(int code)
 {
-    if (func_key)
+    if (!is_byte(code))
 	statusline(ALERT, _("Unbound key"));
     else if (meta_key) {
 	if (code == '[')
@@ -1577,7 +1577,7 @@ int do_input(bool allow_funcs)
 #endif
 
 #ifndef DISABLE_MOUSE
-    if (func_key && input == KEY_MOUSE) {
+    if (input == KEY_MOUSE) {
 	/* We received a mouse click. */
 	if (do_mouse() == 1)
 	    /* The click was on a shortcut -- read in the character
@@ -1599,10 +1599,9 @@ int do_input(bool allow_funcs)
     /* If we got a non-high-bit control key, a meta key sequence, or a
      * function key, and it's not a shortcut or toggle, throw it out. */
     if (!have_shortcut) {
-	if (is_ascii_cntrl_char(input) || meta_key || func_key) {
+	if (is_ascii_cntrl_char(input) || meta_key || !is_byte(input)) {
 	    unbound_key(input);
 	    meta_key = FALSE;
-	    func_key = FALSE;
 	    input = ERR;
 	}
     }
diff --git a/src/prompt.c b/src/prompt.c
index cdd33130925070052211a9f38bb77771997e3b27..1983bb2c84624c974e05c9877677efa65c88a464 100644
--- a/src/prompt.c
+++ b/src/prompt.c
@@ -66,12 +66,11 @@ int do_statusbar_input(bool *ran_func, bool *finished,
 #ifndef DISABLE_MOUSE
     /* If we got a mouse click and it was on a shortcut, read in the
      * shortcut character. */
-    if (func_key && input == KEY_MOUSE) {
+    if (input == KEY_MOUSE) {
 	if (do_statusbar_mouse() == 1)
 	    input = get_kbinput(bottomwin);
 	else {
 	    meta_key = FALSE;
-	    func_key = FALSE;
 	    input = ERR;
 	}
     }
@@ -87,10 +86,9 @@ int do_statusbar_input(bool *ran_func, bool *finished,
     /* If we got a non-high-bit control key, a meta key sequence, or a
      * function key, and it's not a shortcut or toggle, throw it out. */
     if (!have_shortcut) {
-	if (is_ascii_cntrl_char(input) || meta_key || func_key) {
+	if (is_ascii_cntrl_char(input) || meta_key || !is_byte(input)) {
 	    beep();
 	    meta_key = FALSE;
-	    func_key = FALSE;
 	    input = ERR;
 	}
     }
diff --git a/src/proto.h b/src/proto.h
index 796163c212b7d6c79b384fd2ed37b187566253f4..636793eaca4916225301c82aa96ada48a303cea3 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -31,7 +31,6 @@ extern volatile sig_atomic_t sigwinch_counter;
 #endif
 
 extern bool meta_key;
-extern bool func_key;
 extern bool focusing;
 
 extern message_type lastmessage;
diff --git a/src/winio.c b/src/winio.c
index 1214cee56d055a1b3c28f67266371f255750c959..0d4dd9584b91bdc33a5c10b829340bb50c900493 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -324,8 +324,7 @@ int get_kbinput(WINDOW *win)
 
 /* Extract a single keystroke from the input stream.  Translate escape
  * sequences and extended keypad codes into their corresponding values.
- * Set meta_key to TRUE when we get a meta key sequence, and set func_key
- * to TRUE when we get a function key.  Supported extended keypad values
+ * Set meta_key to TRUE when appropriate.  Supported extended keypad values
  * are: [arrow key], Ctrl-[arrow key], Shift-[arrow key], Enter, Backspace,
  * the editing keypad (Insert, Delete, Home, End, PageUp, and PageDown),
  * the function keys (F1-F16), and the numeric keypad with NumLock off. */
@@ -336,7 +335,6 @@ int parse_kbinput(WINDOW *win)
     int *kbinput, keycode, retval = ERR;
 
     meta_key = FALSE;
-    func_key = FALSE;
 
     /* Read in a character. */
     kbinput = get_input(win, 1);
@@ -633,15 +631,11 @@ int parse_kbinput(WINDOW *win)
 	else if (retval == controldown)
 	    retval = sc_seq_or(do_next_block, 0);
 #endif
-
-	/* If our result is an extended keypad value (i.e. a value
-	 * outside of byte range), set func_key to TRUE. */
-	if (retval != ERR)
-	    func_key = !is_byte(retval);
     }
 
 #ifdef DEBUG
-    fprintf(stderr, "parse_kbinput(): kbinput = %d, meta_key = %s, func_key = %s, escapes = %d, byte_digits = %d, retval = %d\n", keycode, meta_key ? "TRUE" : "FALSE", func_key ? "TRUE" : "FALSE", escapes, byte_digits, retval);
+    fprintf(stderr, "parse_kbinput(): kbinput = %d, meta_key = %s, escapes = %d, byte_digits = %d, retval = %d\n",
+			keycode, meta_key ? "TRUE" : "FALSE", escapes, byte_digits, retval);
 #endif
 
     /* Return the result. */