From 44597b359e030d86e16ab9b6510f54366d57e5ac Mon Sep 17 00:00:00 2001 From: "Roberto E. Vargas Caballero" Date: Tue, 13 Nov 2012 20:04:54 +0100 Subject: [PATCH] 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(-) --- config.def.h | 16 ++++++++++++---- st.info | 8 ++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/config.def.h b/config.def.h index 622499e..3d406d4 100644 --- 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}, diff --git a/st.info b/st.info index 199aff6..be2a47e 100644 --- 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~,