--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: libreadline5: Additional standard terminfo keys mapping
- From: Samuel Thibault <samuel.thibault@ens-lyon.org>
- Date: Mon, 5 Jun 2006 22:51:44 +0200
- Message-id: <20060605205144.GA5147@bouh.residence.ens-lyon.fr>
Package: libreadline5
Version: 5.1-7youpi
Severity: minor
Tags: patch upstream
Hi,
There are a bunch of standard terminfo keys that readline doesn't bind
(insert, keypad keys, previous/next page, find, previous, next, ...).
Attached is a patch that adds a lot of them and documents the remaining
keys for which I didn't find any obvious use.
I submitted the patch to bash-maintainers@gnu.org on Saturday but didn't
get any answer so far. Maybe you know better how to submit such patch.
Regards,
Samuel
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (900, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16
Locale: LANG=fr_FR@euro, LC_CTYPE=fr_FR@euro (charmap=ISO-8859-15)
Versions of packages libreadline5 depends on:
ii libc6 2.3.6-13 GNU C Library: Shared libraries
ii libncurses5 5.5-2 Shared libraries for terminal hand
ii readline-common 5.1-7 GNU readline and history libraries
libreadline5 recommends no packages.
-- no debconf information
--- readline5-5.1/terminal.c 2005-11-13 02:46:54.000000000 +0100
+++ readline5-5.1-mine/terminal.c 2006-06-03 17:13:04.000000000 +0200
@@ -136,7 +136,9 @@
static char *_rl_term_ku;
static char *_rl_term_kd;
static char *_rl_term_kr;
+static char *_rl_term_percenti; /* %i shifted right */
static char *_rl_term_kl;
+static char *_rl_term_sharp4; /* #4 shifted left */
/* How to initialize and reset the arrow keys, if this terminal has any. */
static char *_rl_term_ks;
@@ -144,14 +146,93 @@
/* The key sequences sent by the Home and End keys, if any. */
static char *_rl_term_kh;
+static char *_rl_term_K1; /* keypad home */
static char *_rl_term_kH;
-static char *_rl_term_at7; /* @7 */
-
-/* Delete key */
-static char *_rl_term_kD;
+static char *_rl_term_sharp2; /* #2 shifted home */
+static char *_rl_term_at1; /* @1 begin */
+static char *_rl_term_and9; /* &9 shifted begin */
+static char *_rl_term_at7; /* @7 end */
+static char *_rl_term_K4; /* keypad end */
+static char *_rl_term_star7; /* *7 shifted end */
+
+/* Delete keys */
+static char *_rl_term_kD; /* delete */
+static char *_rl_term_star4; /* *4 shifted delete */
+static char *_rl_term_kb; /* backspace */
+static char *_rl_term_kL; /* delete line */
+static char *_rl_term_star5; /* *5 shifted delete line */
+static char *_rl_term_kC; /* clear */
+static char *_rl_term_kE; /* clear-to-end-of-line */
+static char *_rl_term_star8; /* *8 shifted clear-to-end-of-line */
/* Insert key */
static char *_rl_term_kI;
+static char *_rl_term_sharp3; /* #3 shifted insert-characteer */
+
+/* Find */
+static char *_rl_term_at0; /* @0 find */
+static char *_rl_term_star0; /* *0 shifted find */
+static char *_rl_term_kN; /* next page */
+static char *_rl_term_K5; /* keypad next page */
+static char *_rl_term_kP; /* previous page */
+static char *_rl_term_K3; /* keypad previous page */
+static char *_rl_term_percent5; /* %5 next */
+static char *_rl_term_percentc; /* %c shifted next */
+static char *_rl_term_percent8; /* %8 previous */
+static char *_rl_term_percente; /* %e shifted previous */
+
+/* Enter */
+static char *_rl_term_at8; /* @8 enter */
+
+/* Refresh */
+static char *_rl_term_and2; /* &2 refresh */
+
+/* Mark */
+static char *_rl_term_percent2; /* %2 mark */
+
+/* Undo */
+static char *_rl_term_and8; /* &8 undo */
+static char *_rl_term_not3; /* !3 shifted undo */
+/* TODO: %0 redo / %g shifted redo */
+
+/* Copy */
+static char *_rl_term_at5; /* @5 copy */
+static char *_rl_term_star2; /* *2 shifted copy */
+
+/* TODO
+ *
+ * nowadays keyboards
+ * - K2 center of keypad
+ * - kM sent by rmir or smir in insert mode
+ * - k0... Fx function keys
+ *
+ * odd keyboards
+ * - %1 help / #1 shifted help
+ * - %3 message / %a shifted message
+ * - %4 move / %b shifted move
+ * - %6 open
+ * - %7 options / %d shifted options
+ * - %9 print / %f shifted print
+ * - &1 reference
+ * - &3 replace / %h shifted replace
+ * - &4 restart
+ * - &5 resume / %j shifted resume
+ * - &6 save / !1 shifted save
+ * - &7 suspend / !2 shifted suspend
+ * - *6 select key
+ * - @2 cancel / &0 shifted cancel
+ * - @3 close
+ * - @4 command / *1 shifted command
+ * - @6 create / *3 shifted create
+ * - @9 exit / *9 shifted exit
+ * - kA insert-line
+ * - kB back-tab
+ * - kF scroll forward / kR scroll backward
+ * - kS clear-to-end-of-screen
+ * - kT set-tab
+ * - ka clear-all-tabs
+ * - kt clear-tab
+ */
/* Cursor control */
static char *_rl_term_vs; /* very visible */
@@ -332,9 +413,36 @@
search algorithm to something smarter. */
static struct _tc_string tc_strings[] =
{
- { "@7", &_rl_term_at7 },
+ { "!3", &_rl_term_not3 }, /* shifted undo */
+ { "#2", &_rl_term_sharp2 }, /* shifted home */
+ { "#3", &_rl_term_sharp3 }, /* shifted insert */
+ { "#4", &_rl_term_sharp4 }, /* shifted left */
+ { "%2", &_rl_term_percent2 }, /* mark */
+ { "%5", &_rl_term_percent5 }, /* next */
+ { "%8", &_rl_term_percent8 }, /* previous */
+ { "%c", &_rl_term_percentc }, /* shifted next */
+ { "%e", &_rl_term_percente }, /* shifted previous */
+ { "%i", &_rl_term_percenti }, /* shifted right */
+ { "&2", &_rl_term_and2 }, /* refresh */
+ { "&8", &_rl_term_and8 }, /* redo */
+ { "&9", &_rl_term_and9 }, /* shifted begin */
+ { "*0", &_rl_term_star0 }, /* shifted find */
+ { "*2", &_rl_term_star2 }, /* shifted copy */
+ { "*4", &_rl_term_star4 }, /* shifted delete */
+ { "*5", &_rl_term_star5 }, /* shifted delete line */
+ { "*7", &_rl_term_star7 }, /* shifted end */
+ { "*8", &_rl_term_star8 }, /* shifted clear-to-end-of-line */
+ { "@0", &_rl_term_at0 }, /* find */
+ { "@1", &_rl_term_at1 }, /* begin */
+ { "@5", &_rl_term_at5 }, /* copy */
+ { "@7", &_rl_term_at7 }, /* end */
+ { "@8", &_rl_term_at8 }, /* enter */
{ "DC", &_rl_term_DC },
{ "IC", &_rl_term_IC },
+ { "K1", &_rl_term_K1 }, /* keypad home */
+ { "K3", &_rl_term_K3 }, /* keypad previous page */
+ { "K4", &_rl_term_K4 }, /* keypad end */
+ { "K5", &_rl_term_K5 }, /* keypad next page */
{ "ce", &_rl_term_clreol },
{ "cl", &_rl_term_clrpag },
{ "cr", &_rl_term_cr },
@@ -342,9 +450,15 @@
{ "ei", &_rl_term_ei },
{ "ic", &_rl_term_ic },
{ "im", &_rl_term_im },
+ { "kC", &_rl_term_kC }, /* clear */
{ "kD", &_rl_term_kD }, /* delete */
+ { "kE", &_rl_term_kE }, /* clear to end of line */
{ "kH", &_rl_term_kH }, /* home down ?? */
{ "kI", &_rl_term_kI }, /* insert */
+ { "kL", &_rl_term_kL }, /* delete line */
+ { "kN", &_rl_term_kN }, /* next page */
+ { "kP", &_rl_term_kP }, /* previous page */
+ { "kb", &_rl_term_kb }, /* backspace */
{ "kd", &_rl_term_kd },
{ "ke", &_rl_term_ke }, /* end keypad mode */
{ "kh", &_rl_term_kh }, /* home */
@@ -450,8 +564,22 @@
_rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
_rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
_rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
- _rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL;
- _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL;
+ _rl_term_percenti = _rl_term_sharp4 = (char *)NULL;
+ _rl_term_kN = _rl_term_kP = _rl_term_K3 = _rl_term_K5 = (char *)NULL;
+ _rl_term_kh = _rl_term_K1 = _rl_term_kH = _rl_term_sharp2 = (char *)NULL;
+ _rl_term_at1 = _rl_term_and9 = (char *)NULL;
+ _rl_term_at7 = _rl_term_K4 = _rl_term_star7 = (char *)NULL;
+ _rl_term_kD = _rl_term_star4 = _rl_term_kb = (char *)NULL;
+ _rl_term_kL = _rl_term_star5 = (char *)NULL;
+ _rl_term_kC = _rl_term_star8 = _rl_term_kE = (char *)NULL;
+ _rl_term_kI = _rl_term_sharp3 = (char *)NULL;
+ _rl_term_at0 = _rl_term_star0 = (char *)NULL;
+ _rl_term_percent5 = _rl_term_percentc = (char *)NULL;
+ _rl_term_percent8 = _rl_term_percente = (char *)NULL;
+ _rl_term_at8 = _rl_term_and2 = _rl_term_percent2 = (char *)NULL;
+ _rl_term_and8 = _rl_term_not3 = (char *)NULL;
+ _rl_term_at5 = _rl_term_star2 = (char *)NULL;
+ _rl_term_ks = _rl_term_ke = (char *)NULL;
_rl_term_mm = _rl_term_mo = (char *)NULL;
_rl_term_ve = _rl_term_vs = (char *)NULL;
#if defined (HACK_TERMCAP_MOTION)
@@ -525,12 +653,54 @@
rl_bind_keyseq_if_unbound (_rl_term_ku, rl_get_previous_history);
rl_bind_keyseq_if_unbound (_rl_term_kd, rl_get_next_history);
rl_bind_keyseq_if_unbound (_rl_term_kr, rl_forward_char);
+ rl_bind_keyseq_if_unbound (_rl_term_percenti, rl_forward_char); /* shifted right */
rl_bind_keyseq_if_unbound (_rl_term_kl, rl_backward_char);
+ rl_bind_keyseq_if_unbound (_rl_term_sharp4, rl_backward_char); /* shifted left */
rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */
+ rl_bind_keyseq_if_unbound (_rl_term_K1, rl_beg_of_line); /* keypad home */
+ rl_bind_keyseq_if_unbound (_rl_term_kH, rl_beg_of_line); /* Home down */
+ rl_bind_keyseq_if_unbound (_rl_term_sharp2, rl_beg_of_line); /* shifted home */
+ rl_bind_keyseq_if_unbound (_rl_term_at1, rl_beg_of_line); /* begin */
+ rl_bind_keyseq_if_unbound (_rl_term_and9, rl_beg_of_line); /* shifted begin */
rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
+ rl_bind_keyseq_if_unbound (_rl_term_K4, rl_end_of_line); /* keypad end */
+ rl_bind_keyseq_if_unbound (_rl_term_star7, rl_end_of_line); /* shifted end */
rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete);
+ rl_bind_keyseq_if_unbound (_rl_term_star4, rl_rubout); /* shifted delete */
+ rl_bind_keyseq_if_unbound (_rl_term_kb, rl_rubout); /* backspace */
+ rl_bind_keyseq_if_unbound (_rl_term_kL, rl_kill_full_line); /* delete line */
+ rl_bind_keyseq_if_unbound (_rl_term_star5, rl_kill_full_line); /* shifted delete line */
+ rl_bind_keyseq_if_unbound (_rl_term_kC, rl_kill_full_line); /* clear */
+ rl_bind_keyseq_if_unbound (_rl_term_kE, rl_kill_line); /* clear to end of line */
+ rl_bind_keyseq_if_unbound (_rl_term_star8, rl_backward_kill_line); /* shifted clear to end of line */
+
+ rl_bind_keyseq_if_unbound (_rl_term_kI, rl_vi_insertion_mode); /* insert */
+ rl_bind_keyseq_if_unbound (_rl_term_sharp3, rl_vi_insertion_mode); /* shifted insert */
+
+ rl_bind_keyseq_if_unbound (_rl_term_at0, rl_noninc_reverse_search); /* find */
+ rl_bind_keyseq_if_unbound (_rl_term_star0, rl_noninc_forward_search); /* shifted find */
+ rl_bind_keyseq_if_unbound (_rl_term_kN, rl_history_search_forward); /* next page */
+ rl_bind_keyseq_if_unbound (_rl_term_K5, rl_history_search_forward); /* keypad next page */
+ rl_bind_keyseq_if_unbound (_rl_term_kP, rl_history_search_backward); /* previous page */
+ rl_bind_keyseq_if_unbound (_rl_term_K3, rl_history_search_backward); /* keypad previous page */
+ rl_bind_keyseq_if_unbound (_rl_term_percent5, rl_forward_search_history); /* next */
+ rl_bind_keyseq_if_unbound (_rl_term_percentc, rl_reverse_search_history); /* shift next */
+ rl_bind_keyseq_if_unbound (_rl_term_percent8, rl_reverse_search_history); /* previous */
+ rl_bind_keyseq_if_unbound (_rl_term_percente, rl_forward_search_history); /* shift previous */
+
+ rl_bind_keyseq_if_unbound (_rl_term_at8, rl_newline); /* enter */
+
+ rl_bind_keyseq_if_unbound (_rl_term_and2, rl_refresh_line); /* refresh */
+
+ rl_bind_keyseq_if_unbound (_rl_term_percent2, rl_set_mark); /* mark */
+
+ rl_bind_keyseq_if_unbound (_rl_term_and8, rl_undo_command); /* undo */
+ rl_bind_keyseq_if_unbound (_rl_term_not3, rl_undo_command); /* shifted undo */
+
+ rl_bind_keyseq_if_unbound (_rl_term_at5, rl_copy_region_to_kill); /* copy */
+ rl_bind_keyseq_if_unbound (_rl_term_star2, rl_copy_region_to_kill); /* shifted copy */
_rl_keymap = xkeymap;
}
--- End Message ---