diff --git a/doc/fixes34.4 b/doc/fixes34.4 index f26efe0b2..074291a5b 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -402,6 +402,8 @@ when polymorphed into an opposite sex monster, if you then become a new human while failing to polymorph into something else, you'd be told "you feel like a new man" for female or "a new woman" for male the weight of a non-cursed bag of holding was sometimes off by 1 unit +for number_pad:2 (MSDOS compatibility), M-5 (Alt+5, or Shift+keypad5 using + MSDOS/Windows keystroke hackery) didn't function as G movement prefix Platform- and/or Interface-Specific Fixes diff --git a/src/cmd.c b/src/cmd.c index df7c9e0dc..751aa9b63 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -2800,18 +2800,6 @@ register char *cmd; context.move = FALSE; return; /* probably we just had an interrupt */ } - if (Cmd.pcHack_compat) { - /* This handles very old inconsistent DOS/Windows behaviour - * in a new way: earlier, the keyboard handler mapped these, - * which caused counts to be strange when entered from the - * number pad. Now do not map them until here. - */ - switch (*cmd) { - case '5': *cmd = 'g'; break; - case M('5'): *cmd = 'G'; break; - case M('0'): *cmd = 'I'; break; - } - } /* handle most movement commands */ do_walk = do_rush = prefix_seen = FALSE; @@ -3412,6 +3400,20 @@ parse() } else { save_cm = (char *)0; } + /* in 3.4.3 this was in rhack(), where it was too late to handle M-5 */ + if (Cmd.pcHack_compat) { + /* This handles very old inconsistent DOS/Windows behaviour + in a different way: earlier, the keyboard handler mapped + these, which caused counts to be strange when entered + from the number pad. Now do not map them until here. */ + switch (foo) { + case '5': foo = 'g'; break; + case M('5'): foo = 'G'; break; + case M('0'): foo = 'I'; break; + default: break; /* as is */ + } + } + in_line[0] = foo; in_line[1] = '\0'; if (foo == 'g' || foo == 'G' || foo == 'm' || foo == 'M' ||