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.
master
Benno Schulenberg 2016-11-26 12:25:36 +01:00
parent 0333b87ad7
commit 3cc561e36e
1 changed files with 14 additions and 4 deletions

View File

@ -1027,10 +1027,20 @@ int convert_sequence(const int *seq, size_t seq_len)
* Linux console/xterm/Terminal; * Linux console/xterm/Terminal;
* Esc [ 6 ^ == PageDown on Eterm. */ * Esc [ 6 ^ == PageDown on Eterm. */
return KEY_NPAGE; return KEY_NPAGE;
case '7': /* Esc [ 7 ~ == Home on rxvt. */ case '7': /* Esc [ 7 ~ == Home on Eterm/rxvt,
return KEY_HOME; * Esc [ 7 $ == Shift-Home on Eterm/rxvt. */
case '8': /* Esc [ 8 ~ == End on rxvt. */ if (seq_len > 2 && seq[2] == '~')
return KEY_END; 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. */ case '9': /* Esc [ 9 == Delete on Mach console. */
return KEY_DC; return KEY_DC;
case '@': /* Esc [ @ == Insert on Mach console. */ case '@': /* Esc [ @ == Insert on Mach console. */