diff --git a/ChangeLog b/ChangeLog
index b6c5ee86d1aab6aa0074c18d732ba463bc4b1ec6..7e773b541b11aed3889ee550d4c55cd054d2c0d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 2014-07-01  Benno Schulenberg  <bensberg@justemail.net>
 	* src/browser.c (do_browser), src/help.c (do_help): Make sure
 	to always set 'currmenu', so that we can rely on it.
+	* src/*.c (get_shortcut): Now that 'currmenu' is really global,
+	stop passing it around.
 
 2014-06-30  Mark Majeres  <mark@engine12.com>
 	* src/cut.c, src/global.c, src/nano.c: Rename 'cut_till_end' to
diff --git a/src/browser.c b/src/browser.c
index 703a0dc17ce463522a191d9eef2630b86dda6134..474e0cdffd5cf5e05f926b1e31f30273d0e0d7fe 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -157,7 +157,7 @@ char *do_browser(char *path, DIR *dir)
 #endif /* !DISABLE_MOUSE */
 
 	parse_browser_input(&kbinput);
-	s = get_shortcut(MBROWSER, &kbinput);
+	s = get_shortcut(&kbinput);
         if (!s)
             continue;
         f = sctofunc((sc *) s);
@@ -798,7 +798,7 @@ int filesearch_init(void)
 	statusbar(_("Cancelled"));
 	return -1;
     } else {
-	s = get_shortcut(MBROWSER, &i);
+	s = get_shortcut(&i);
 	if (i == -2 || i == 0) {
 #ifdef HAVE_REGEX_H
 		/* Use last_search if answer is an empty string, or
diff --git a/src/files.c b/src/files.c
index dfd32f085952e790020c210c7ce3a61cb11947aa..18baacc35fabc574cd0cddeb290c86b649b307b7 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1071,7 +1071,7 @@ void do_insertfile(
 
 	    ans = mallocstrcpy(ans, answer);
 
-	    s = get_shortcut(currmenu, &i);
+	    s = get_shortcut(&i);
 
 #ifndef NANO_TINY
 #ifndef DISABLE_MULTIBUFFER
@@ -2291,7 +2291,7 @@ bool do_writeout(bool exiting)
 	    break;
 	} else {
 	    ans = mallocstrcpy(ans, answer);
-	    s = get_shortcut(currmenu, &i);
+	    s = get_shortcut(&i);
 
 #ifndef DISABLE_BROWSER
 	    if (s && s->scfunc == to_files_void) {
diff --git a/src/help.c b/src/help.c
index 828badca38559bdd683e60ea2c83ab4f8621460b..4bb2aa26b0ab1673dada8255e26a3296a82797bc 100644
--- a/src/help.c
+++ b/src/help.c
@@ -130,7 +130,7 @@ void do_help(void (*refresh_func)(void))
 #endif
 
 	parse_help_input(&kbinput);
-	s = get_shortcut(MHELP, &kbinput);
+	s = get_shortcut(&kbinput);
 	if (!s)
 	    continue;
 	f = sctofunc((sc *) s);
diff --git a/src/nano.c b/src/nano.c
index 288f83c7fa29506fda8a0381eb57191fc785d405..5316874b0f14e8529f83f47710e2cb7cc5b9a28d 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1616,7 +1616,7 @@ int do_input(bool allow_funcs)
 #endif
 
     /* Check for a shortcut in the main list. */
-    s = get_shortcut(MMAIN, &input);
+    s = get_shortcut(&input);
 
     /* If we got a shortcut from the main list, or a "universal"
      * edit window shortcut, set have_shortcut to TRUE. */
diff --git a/src/prompt.c b/src/prompt.c
index e9ffd48cc616ad81c08d140b797f5625ff2f20d6..66031a11c38472c4df5a80f31c9e2503a311f610 100644
--- a/src/prompt.c
+++ b/src/prompt.c
@@ -81,7 +81,7 @@ int do_statusbar_input(bool *ran_func, bool *finished,
 #endif
 
     /* Check for a shortcut in the current list. */
-    s = get_shortcut(currmenu, &input);
+    s = get_shortcut(&input);
 
     /* If we got a shortcut from the current list, or a "universal"
      * statusbar prompt shortcut, set have_shortcut to TRUE. */
@@ -801,7 +801,7 @@ fprintf(stderr, "get_prompt_string: answer = \"%s\", statusbar_x = %lu\n", answe
 	kbinput = do_statusbar_input(&ran_func, &finished, refresh_func);
 	assert(statusbar_x <= strlen(answer));
 
-	s = get_shortcut(currmenu, &kbinput);
+	s = get_shortcut(&kbinput);
 
 	if (s)
 	    if (s->scfunc == do_cancel || s->scfunc == do_enter_void)
@@ -1120,7 +1120,7 @@ int do_yesno_prompt(bool all, const char *msg)
 
 	currmenu = MYESNO;
 	kbinput = get_kbinput(bottomwin);
-	s = get_shortcut(currmenu, &kbinput);
+	s = get_shortcut(&kbinput);
 
 	if (s && s->scfunc == do_cancel)
 	    ok = -1;
diff --git a/src/proto.h b/src/proto.h
index 8f3271443f4eeb39c01d949b76200d2e74aeff27..dcc634fe358cb9ce6e32a9bd4b9f0ad58ad46a23 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -770,7 +770,7 @@ int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len);
 #ifndef DISABLE_MOUSE
 int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts);
 #endif
-const sc *get_shortcut(int menu, int *kbinput);
+const sc *get_shortcut(int *kbinput);
 void blank_line(WINDOW *win, int y, int x, int n);
 void blank_titlebar(void);
 void blank_topbar(void);
diff --git a/src/search.c b/src/search.c
index cdde40f123c76b42ad9b45cf8045b3eb3e51adbe..f696b2f2cd7241a8aacebc9a79b2339edaa1109d 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1049,7 +1049,7 @@ void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
 	    return;
 	}
 
-	s = get_shortcut(currmenu, &i);
+	s = get_shortcut(&i);
 
 	if (s && s->scfunc == gototext_void) {
 	    /* Keep answer up on the statusbar. */
diff --git a/src/text.c b/src/text.c
index 008da02c2cd556906e774fd6890790b2990fb06b..206c7b4576852b7eea3d8d86b190f037ea1c9755 100644
--- a/src/text.c
+++ b/src/text.c
@@ -2188,12 +2188,13 @@ void do_justify(bool full_justify)
 
     /* Display the shortcut list with UnJustify. */
     uncutfunc->desc = unjust_tag;
+    currmenu = MMAIN;
     display_main_list();
 
     /* Now get a keystroke and see if it's unjustify.  If not, put back
      * the keystroke and return. */
     kbinput = do_input(FALSE);
-    s = get_shortcut(MMAIN, &kbinput);
+    s = get_shortcut(&kbinput);
 
     if (s && s->scfunc == do_uncut_text) {
 	/* Splice the justify buffer back into the file, but only if we
@@ -3169,7 +3170,7 @@ void do_linter(void)
 	}
 
 	kbinput = get_kbinput(bottomwin);
-	s = get_shortcut(currmenu, &kbinput);
+	s = get_shortcut(&kbinput);
 	tmplint = curlint;
 
 	if (!s)
diff --git a/src/winio.c b/src/winio.c
index b232f3a676e13d35c0cc482566ed34aeb1f9f557..04cd6d0b267fe9969ee46e99d74bb0d83bbb493c 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1790,7 +1790,7 @@ int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
  * key itself) and meta_key (whether the key is a meta sequence).  The
  * returned shortcut will be the first in the list that corresponds to
  * the given sequence. */
-const sc *get_shortcut(int menu, int *kbinput)
+const sc *get_shortcut(int *kbinput)
 {
     sc *s;
 
@@ -1799,11 +1799,11 @@ const sc *get_shortcut(int menu, int *kbinput)
 #endif
 
     for (s = sclist; s != NULL; s = s->next) {
-	if ((menu & s->menu) && *kbinput == s->seq
+	if ((currmenu & s->menu) && *kbinput == s->seq
 		&& meta_key == (s->type == META)) {
 #ifdef DEBUG
 	    fprintf (stderr, "matched seq \"%s\", and btw meta was %d (menu is %x from %x)\n",
-			     s->keystr, meta_key, menu, s->menu);
+			     s->keystr, meta_key, currmenu, s->menu);
 #endif
 	    return s;
 	}
@@ -1825,7 +1825,7 @@ const subnfunc *getfuncfromkey(WINDOW *win)
     if (kbinput == 0)
 	return NULL;
 
-    s = get_shortcut(currmenu, &kbinput);
+    s = get_shortcut(&kbinput);
     if (!s)
 	return NULL;