Add support for End key
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Sun, 25 Nov 2012 21:13:29 +0000 (22:13 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Sun, 25 Nov 2012 21:13:29 +0000 (22:13 +0100)
    - Shift + End : Delete until end of line.
    - Control + End : Delete until end of screen.

When  the End  key is  pressed  without any  modifier is  not generated  the
correct sequence for it  (going to the end of the  screen), because the size
of the  terminal is not known,  so it is  not possible write a  sequence for
this purpouse.
---
 config.def.h |   10 ++++++++--
 st.info      |    2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

config.def.h
st.info

index 6d74668..684adf7 100644 (file)
@@ -121,7 +121,10 @@ static Key key[] = {
        { XK_KP_Prior,      ShiftMask,      "\033[5;2~",     0,    0,    0},
        { XK_KP_Prior,      XK_ANY_MOD,     "\033[5~",       0,    0,    0},
        { XK_KP_Begin,      XK_ANY_MOD,     "\033[E",        0,    0,    0},
-       { XK_KP_End,        ShiftMask,      "\033[1;2F",     0,    0,    0},
+       { XK_KP_End,        ControlMask,    "\033[J",       -1,    0,    0},
+       { XK_KP_End,        ControlMask,    "\033[1;5F",    +1,    0,    0},
+       { XK_KP_End,        ShiftMask,      "\033[K",       -1,    0,    0},
+       { XK_KP_End,        ShiftMask,      "\033[1;2F",    +1,    0,    0},
        { XK_KP_End,        XK_ANY_MOD,     "\033[4~",       0,    0,    0},
        { XK_KP_Next,       ShiftMask,      "\033[6;2~",     0,    0,    0},
        { XK_KP_Next,       XK_ANY_MOD,     "\033[6~",       0,    0,    0},
@@ -196,7 +199,10 @@ static Key key[] = {
        { XK_Home,          ShiftMask,      "\033[1;2H",     0,    0,    0},
        { XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1,    0},
        { XK_Home,          XK_ANY_MOD,     "\033[1~",       0,   +1,    0},
-       { XK_End,           ShiftMask,      "\033[1;2F",     0,    0,    0},
+       { XK_End,           ControlMask,    "\033[J",       -1,    0,    0},
+       { XK_End,           ControlMask,    "\033[1;5F",    +1,    0,    0},
+       { XK_End,           ShiftMask,      "\033[K",       -1,    0,    0},
+       { XK_End,           ShiftMask,      "\033[1;2F",    +1,    0,    0},
        { XK_End,           XK_ANY_MOD,     "\033[4~",       0,    0,    0},
        { XK_Prior,         XK_NO_MOD,      "\033[5~",       0,    0,    0},
        { XK_Next,          ShiftMask,      "\033[6;2~",     0,    0,    0},
diff --git a/st.info b/st.info
index 9a7edfe..52ae851 100644 (file)
--- a/st.info
+++ b/st.info
@@ -49,6 +49,8 @@ st| simpleterm,
        invis=\E[8m,
        is2=\E[4l\E>,
        it#8,
+       kel=\E[1;2F,
+       ked=\E[1;5F,
        ka1=\E[1~,
        ka3=\E[5~,
        kc1=\E[4~,