Fixes #197 Fixes #195 Add a call to nonl() to tell curses not to convert carriage return (^M) to newline. Line input accepts both ^J and ^M as end of line/end of input, but the core's command processing treats ^M as "unknown command" (by default; someone could use the BIND option to assign some command to that character). The end result is that accidentally pressing the <return> or <enter> key (or Ctrl+M key combination) won't make the hero run towards the bottom of the screen as if the user had typed ^J. The curses docs also claim that it allows more optimization during screen updating by making ^J work as plain linefeed rather than ^M^J newline. The tty interface can achieve this (the 'do not convert ^M to ^J part', not the 'more optimization' part) by issuing the command 'stty -icrnl' (on Unix or sufficiently Unix-like system) prior to running nethack, but that has no effect when using the curses interface (at least with ncurses on OSX where I've tested it). A better fix would be to look up the current terminal settings at program startup and only call nonl() if -crnl was in effect so that curses and tty would behave the same in this regard, but curses is supposed to let us avoid those sorts of messy details....
7.4 KiB
7.4 KiB