diff --git a/src/global.c b/src/global.c
index 3347476f1afbfe847bd7d00b212df933c94b18c8..da404d2722615edf8a4013a723a850acec58d9bd 100644
--- a/src/global.c
+++ b/src/global.c
@@ -47,10 +47,7 @@ message_type lastmessage = HUSH;
 	/* Messages of type HUSH should not overwrite type MILD nor ALERT. */
 
 #ifndef NANO_TINY
-int controlleft = CONTROL_LEFT;
-int controlright = CONTROL_RIGHT;
-int controlup = CONTROL_UP;
-int controldown = CONTROL_DOWN;
+int controlleft, controlright, controlup, controldown;
 #endif
 
 #ifndef DISABLE_WRAPJUSTIFY
diff --git a/src/nano.c b/src/nano.c
index 8458a4752b41a47ccf3dad476e3f1d40bb7e5d15..356a1de3aa17c3d45940ba834df8f2933e4307e5 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1535,6 +1535,19 @@ void terminal_init(void)
 #endif
 }
 
+#if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
+/* Ask ncurses for a keycode, or assign a default one. */
+int get_keycode(const char *keyname, const int standard)
+{
+    const char *keyvalue = tigetstr(keyname);
+
+    if (keyvalue == 0 || keyvalue == (char *)-1)
+	return standard;
+    else
+	return key_defined(keyvalue);
+}
+#endif
+
 /* Say that an unbound key was struck, and if possible which one. */
 void unbound_key(int code)
 {
@@ -2514,20 +2527,11 @@ int main(int argc, char **argv)
 #endif
 
 #if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
-    const char *keyvalue;
     /* Ask ncurses for the key codes for Control+Left/Right/Up/Down. */
-    keyvalue = tigetstr("kLFT5");
-    if (keyvalue != 0 && keyvalue != (char *)-1)
-	controlleft = key_defined(keyvalue);
-    keyvalue = tigetstr("kRIT5");
-    if (keyvalue != 0 && keyvalue != (char *)-1)
-	controlright = key_defined(keyvalue);
-    keyvalue = tigetstr("kUP5");
-    if (keyvalue != 0 && keyvalue != (char *)-1)
-	controlup = key_defined(keyvalue);
-    keyvalue = tigetstr("kDN5");
-    if (keyvalue != 0 && keyvalue != (char *)-1)
-	controldown = key_defined(keyvalue);
+    controlleft = get_keycode("kLFT5", CONTROL_LEFT);
+    controlright = get_keycode("kRIT5", CONTROL_RIGHT);
+    controlup = get_keycode("kUP5", CONTROL_UP);
+    controldown = get_keycode("kDN5", CONTROL_DOWN);
 #endif
 
 #ifndef USE_SLANG