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:
@@ -661,7 +661,7 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
|
||||
goto alldone;
|
||||
case '\177': /* DEL/Rubout */
|
||||
case KEY_DC: /* delete-character */
|
||||
case '\b': /* ^H (Backspace: '\011') */
|
||||
case '\b': /* ^H (Backspace: '\010') */
|
||||
case KEY_BACKSPACE:
|
||||
if (len < 1) {
|
||||
len = 1;
|
||||
|
||||
@@ -792,6 +792,13 @@ curses_convert_keys(int key)
|
||||
|
||||
/* Handle arrow keys */
|
||||
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:
|
||||
if (iflags.num_pad) {
|
||||
ret = '4';
|
||||
|
||||
Reference in New Issue
Block a user