Add control and meta combinations for arrow keys - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 44597b359e030d86e16ab9b6510f54366d57e5ac
 (DIR) parent 3b16695f4e8a29f47ad273912065dfba53544a29
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Tue, 13 Nov 2012 20:04:54 +0100
       
       Add control and meta combinations for arrow keys
       
       Since there isn't any terminfo capability for control and meta modifiers for
       arrows keys it is necessary use the same that almost terminal emulators use,
       because there are a lot of programs which have these codes hardcoded.
       
       This cause also that shift combinations are also changed, but in this case
       this is not a problem since there are terminfo capabilities for them. After
       this patch shift-up and shift-down continue not working in emacs with
       TERM=st, but they work with TERM=xterm, so it is possible some other changes
       are necessary in the terminfo entry.
       ---
        config.def.h |   16 ++++++++++++----
        st.info      |    8 ++++----
        2 files changed, 16 insertions(+), 8 deletions(-)
       Diffstat:
         M config.def.h                        |      16 ++++++++++++----
         M st.info                             |       8 ++++----
       
       2 files changed, 16 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -80,16 +80,24 @@ static Key key[] = {
                { XK_BackSpace,     XK_NO_MOD,      "\177",          0,    0,    0},
                { XK_Up,            XK_NO_MOD,      "\033[A",        0,   -1,    0},
                { XK_Up,            XK_NO_MOD,      "\033OA",        0,   +1,    0},
       -        { XK_Up,            ShiftMask,      "\033[a",        0,    0,    0},
       +        { XK_Up,            ShiftMask,      "\033[1;2A",     0,    0,    0},
       +        { XK_Up,            ControlMask,    "\033[1;5A",     0,    0,    0},
       +        { XK_Up,            Mod1Mask,       "\033[1;3A",     0,    0,    0},
                { XK_Down,          XK_NO_MOD,      "\033[B",        0,   -1,    0},
                { XK_Down,          XK_NO_MOD,      "\033OB",        0,   +1,    0},
       -        { XK_Down,          ShiftMask,      "\033[b",        0,    0,    0},
       +        { XK_Down,          ShiftMask,      "\033[1;2B",     0,    0,    0},
       +        { XK_Down,          ControlMask,    "\033[1;5B",     0,    0,    0},
       +        { XK_Down,          Mod1Mask,       "\033[1;3B",     0,    0,    0},
                { XK_Left,                 XK_NO_MOD,      "\033[D",        0,   -1,    0},
                { XK_Left,          XK_NO_MOD,      "\033OD",        0,   +1,    0},
       -        { XK_Left,          ShiftMask,      "\033[d",        0,    0,    0},
       +        { XK_Left,          ShiftMask,      "\033[1;2D",     0,    0,    0},
       +        { XK_Left,          ControlMask,    "\033[1;5D",     0,    0,    0},
       +        { XK_Left,          Mod1Mask,       "\033[1;3D",     0,    0,    0},
                { XK_Right,         XK_NO_MOD,      "\033[C",        0,   -1,    0},
                { XK_Right,         XK_NO_MOD,      "\033OC",        0,   +1,    0},
       -        { XK_Right,         ShiftMask,      "\033[c",        0,    0,    0},
       +        { XK_Right,         ShiftMask,      "\033[1;2C",     0,    0,    0},
       +        { XK_Right,         ControlMask,    "\033[1;5C",     0,    0,    0},
       +        { XK_Right,         Mod1Mask,       "\033[1;3C",     0,    0,    0},
                { XK_Return,        XK_NO_MOD,      "\n",            0,    0,   -1},
                { XK_Return,        XK_NO_MOD,      "\r\n",          0,    0,   +1},
                { XK_Return,        Mod1Mask,       "\033\n",        0,    0,   -1},
 (DIR) diff --git a/st.info b/st.info
       @@ -54,10 +54,10 @@ st| simpleterm,
                kcud1=\EOB,
                kcuf1=\EOC,
                kcuu1=\EOA,
       -        kLFT=\E[d,
       -        kRIT=\E[c,
       -        kind=\E[a,
       -        kri=\E[b,
       +        kLFT=\E[1;2D,
       +        kRIT=\E[1;2C,
       +        kind=\E[1;2B,
       +        kri=\E[1;2A,
                kdch1=\E[3~,
                kich1=\E[2~,
                kend=\E[4~,