commit 3cc561e36e1be7f9199861dfad43bc6f576cb7d0 parent 0333b87ad72166ce70c0ff4a0d21cf7231829b71 Author: Benno Schulenberg <bensberg@justemail.net> Date: Sat, 26 Nov 2016 12:25:36 +0100 input: distinguish <Shift+Home> from <Home> on an rxvt terminal That is: when --rebindkeypad is in effect -- without this option they were already getting distinguished. Diffstat:
M | src/winio.c | | | 18 | ++++++++++++++---- |
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/winio.c b/src/winio.c @@ -1027,10 +1027,20 @@ int convert_sequence(const int *seq, size_t seq_len) * Linux console/xterm/Terminal; * Esc [ 6 ^ == PageDown on Eterm. */ return KEY_NPAGE; - case '7': /* Esc [ 7 ~ == Home on rxvt. */ - return KEY_HOME; - case '8': /* Esc [ 8 ~ == End on rxvt. */ - return KEY_END; + case '7': /* Esc [ 7 ~ == Home on Eterm/rxvt, + * Esc [ 7 $ == Shift-Home on Eterm/rxvt. */ + if (seq_len > 2 && seq[2] == '~') + return KEY_HOME; + else if (seq_len > 2 && seq[2] == '$') + return SHIFT_HOME; + break; + case '8': /* Esc [ 8 ~ == End on Eterm/rxvt. + * Esc [ 8 $ == Shift-End on Eterm/rxvt. */ + if (seq_len > 2 && seq[2] == '~') + return KEY_END; + else if (seq_len > 2 && seq[2] == '$') + return SHIFT_END; + break; case '9': /* Esc [ 9 == Delete on Mach console. */ return KEY_DC; case '@': /* Esc [ @ == Insert on Mach console. */