From 51b9e86d13484ae64120e2b065ca8ab9e3ad7c34 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Wed, 30 Sep 2020 19:37:34 +0200 Subject: [PATCH] tweaks: remove mistaken escape sequences for function keys on xterm At least since version 229 of xterm (from August 2007), the escape sequences for F1 to F4 have been "Esc O P" to "Esc O S". There is no bracket in those sequences, and there probably never was -- most likely the extra "[" in nano's code was a slip of the fingers. --- src/winio.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/winio.c b/src/winio.c index 925a7dd6..8313827d 100644 --- a/src/winio.c +++ b/src/winio.c @@ -398,10 +398,10 @@ int convert_SS3_sequence(const int *seq, size_t length, int *consumed) case 'M': /* Esc O M == Enter on numeric keypad * with NumLock off on VT100/VT220/VT320. */ return KEY_ENTER; - case 'P': /* Esc O P == F1 on VT100/VT220/VT320/Mach console. */ - case 'Q': /* Esc O Q == F2 on VT100/VT220/VT320/Mach console. */ - case 'R': /* Esc O R == F3 on VT100/VT220/VT320/Mach console. */ - case 'S': /* Esc O S == F4 on VT100/VT220/VT320/Mach console. */ + case 'P': /* Esc O P == F1 on VT100/VT220/VT320/xterm/Mach console. */ + case 'Q': /* Esc O Q == F2 on VT100/VT220/VT320/xterm/Mach console. */ + case 'R': /* Esc O R == F3 on VT100/VT220/VT320/xterm/Mach console. */ + case 'S': /* Esc O S == F4 on VT100/VT220/VT320/xterm/Mach console. */ case 'T': /* Esc O T == F5 on Mach console. */ case 'U': /* Esc O U == F6 on Mach console. */ case 'V': /* Esc O V == F7 on Mach console. */ @@ -749,18 +749,8 @@ int convert_CSI_sequence(const int *seq, size_t length, int *consumed) case 'N': /* Esc [ N == F2 on FreeBSD console. */ return KEY_F(2); case 'O': - if (length > 1) { - *consumed = 2; - if ('O' < seq[1] && seq[1] < 'T') - /* Esc [ O P == F1 on xterm. */ - /* Esc [ O Q == F2 on xterm. */ - /* Esc [ O R == F3 on xterm. */ - /* Esc [ O S == F4 on xterm. */ - return KEY_F(seq[1] - 'O'); - } else /* Esc [ O == F3 on FreeBSD console. */ return KEY_F(3); - break; case 'P': /* Esc [ P == F4 on FreeBSD console. */ case 'Q': /* Esc [ Q == F5 on FreeBSD console. */ case 'R': /* Esc [ R == F6 on FreeBSD console. */