curses moving left with ^H
Typing ^H actually passed a 16-bit value back to the core which got interpreted as ^G after the extra bits were discarded. I don't think any previous changes to the curses interface caused this. It's astonishing that no one ever noticed; the world must be full of numpad users.
This commit is contained in:
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.84 $ $NHDT-Date: 1562203850 2019/07/04 01:30:50 $
|
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.85 $ $NHDT-Date: 1562456458 2019/07/06 23:40:58 $
|
||||||
|
|
||||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||||
@@ -169,6 +169,7 @@ curses: when map window was clipped, the 'scrollbars' shown to indicate which
|
|||||||
the 2nd and 3rd fifths (for example) were currently within view
|
the 2nd and 3rd fifths (for example) were currently within view
|
||||||
curses: support users's setting for erase char and kill char when getting a
|
curses: support users's setting for erase char and kill char when getting a
|
||||||
line of input with 'popup_dialog' Off (already supported for popup On)
|
line of input with 'popup_dialog' Off (already supported for popup On)
|
||||||
|
curses: attempting to use ^H to rush left actually executed ^G (#wizgenesis)
|
||||||
curses+'perm_invent': entries were wrapping without any control; usually not
|
curses+'perm_invent': entries were wrapping without any control; usually not
|
||||||
noticeable because next entry overwrote, but visible for final entry
|
noticeable because next entry overwrote, but visible for final entry
|
||||||
when whole inventory fit within the available height; looked ok with
|
when whole inventory fit within the available height; looked ok with
|
||||||
|
|||||||
@@ -661,7 +661,7 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
|
|||||||
goto alldone;
|
goto alldone;
|
||||||
case '\177': /* DEL/Rubout */
|
case '\177': /* DEL/Rubout */
|
||||||
case KEY_DC: /* delete-character */
|
case KEY_DC: /* delete-character */
|
||||||
case '\b': /* ^H (Backspace: '\011') */
|
case '\b': /* ^H (Backspace: '\010') */
|
||||||
case KEY_BACKSPACE:
|
case KEY_BACKSPACE:
|
||||||
if (len < 1) {
|
if (len < 1) {
|
||||||
len = 1;
|
len = 1;
|
||||||
|
|||||||
@@ -792,6 +792,13 @@ curses_convert_keys(int key)
|
|||||||
|
|
||||||
/* Handle arrow keys */
|
/* Handle arrow keys */
|
||||||
switch (key) {
|
switch (key) {
|
||||||
|
case KEY_BACKSPACE:
|
||||||
|
/* we can't distinguish between a separate backspace key and
|
||||||
|
explicit Ctrl+H intended to rush to the left; without this,
|
||||||
|
a value for ^H greater than 255 is passed back to core's
|
||||||
|
readchar() and stripping the value down to 0..255 yields ^G! */
|
||||||
|
ret = C('H');
|
||||||
|
break;
|
||||||
case KEY_LEFT:
|
case KEY_LEFT:
|
||||||
if (iflags.num_pad) {
|
if (iflags.num_pad) {
|
||||||
ret = '4';
|
ret = '4';
|
||||||
|
|||||||
Reference in New Issue
Block a user