Add control and meta combinations for arrow keys

From: Roberto E. Vargas Caballero <k0ga_AT_shike2.com>
Date: Mon, 12 Nov 2012 21:53:11 +0100

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(-)
diff --git a/config.def.h b/config.def.h
index 622499e..3d406d4 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -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
_AT_@ -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~,
-- 
1.7.10.4
--4Ckj6UjgE2iN1+kY
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment; filename="0007-Add-missed-key-definitions.patch"
Received on Mon Sep 17 2001 - 00:00:00 CEST

This archive was generated by hypermail 2.3.0 : Tue Nov 13 2012 - 19:48:02 CET