commit 23ae7bfbbf41bcb878157fdcc15850227bdd6abd
parent cb0806b2a094109076bc2ddc1e257e5ed7154f41
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Thu, 6 Apr 2017 12:30:28 -0500
input: support escape sequences for ^Home and ^End
Make nano recognize the escape sequences for Ctrl-Home, Ctrl-End,
Shift-Ctrl-Home, and Shift-Ctrl-End on xterm, rxvt, and Eterm.
Diffstat:
1 file changed, 28 insertions(+), 4 deletions(-)
diff --git a/src/winio.c b/src/winio.c
@@ -967,6 +967,10 @@ int convert_sequence(const int *seq, size_t seq_len)
return CONTROL_RIGHT;
case 'D': /* Esc [ 1 ; 5 D == Ctrl-Left on xterm. */
return CONTROL_LEFT;
+ case 'F': /* Esc [ 1 ; 5 F == Ctrl-End on xterm. */
+ return CONTROL_END;
+ case 'H': /* Esc [ 1 ; 5 H == Ctrl-Home on xterm. */
+ return CONTROL_HOME;
}
break;
#ifndef NANO_TINY
@@ -980,6 +984,10 @@ int convert_sequence(const int *seq, size_t seq_len)
return shiftcontrolright;
case 'D': /* Esc [ 1 ; 6 D == Shift-Ctrl-Left on xterm. */
return shiftcontrolleft;
+ case 'F': /* Esc [ 1 ; 6 F == Shift-Ctrl-End on xterm. */
+ return shiftcontrolend;
+ case 'H': /* Esc [ 1 ; 6 H == Shift-Ctrl-Home on xterm. */
+ return shiftcontrolhome;
}
break;
#endif
@@ -1044,19 +1052,35 @@ int convert_sequence(const int *seq, size_t seq_len)
if (seq_len > 2 && (seq[2] == '~' || seq[2] == '^'))
return KEY_NPAGE;
break;
- case '7': /* Esc [ 7 ~ == Home on Eterm/rxvt,
- * Esc [ 7 $ == Shift-Home on Eterm/rxvt. */
+ case '7': /* Esc [ 7 ~ == Home on Eterm/rxvt;
+ * Esc [ 7 $ == Shift-Home on Eterm/rxvt;
+ * Esc [ 7 ^ == Control-Home on Eterm/rxvt;
+ * Esc [ 7 @ == Shift-Control-Home on same. */
if (seq_len > 2 && seq[2] == '~')
return KEY_HOME;
else if (seq_len > 2 && seq[2] == '$')
return SHIFT_HOME;
+ else if (seq_len > 2 && seq[2] == '^')
+ return CONTROL_HOME;
+#ifndef NANO_TINY
+ else if (seq_len > 2 && seq[2] == '@')
+ return shiftcontrolhome;
+#endif
break;
- case '8': /* Esc [ 8 ~ == End on Eterm/rxvt.
- * Esc [ 8 $ == Shift-End on Eterm/rxvt. */
+ case '8': /* Esc [ 8 ~ == End on Eterm/rxvt;
+ * Esc [ 8 $ == Shift-End on Eterm/rxvt;
+ * Esc [ 8 ^ == Control-End on Eterm/rxvt;
+ * Esc [ 8 @ == Shift-Control-End on same. */
if (seq_len > 2 && seq[2] == '~')
return KEY_END;
else if (seq_len > 2 && seq[2] == '$')
return SHIFT_END;
+ else if (seq_len > 2 && seq[2] == '^')
+ return CONTROL_END;
+#ifndef NANO_TINY
+ else if (seq_len > 2 && seq[2] == '@')
+ return shiftcontrolend;
+#endif
break;
case '9': /* Esc [ 9 == Delete on Mach console. */
return KEY_DC;