Просмотр исходного кода

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(-)
Roberto E. Vargas Caballero 12 лет назад
Родитель
Сommit
44597b359e
2 измененных файлов с 16 добавлено и 8 удалено
  1. 12 4
      config.def.h
  2. 4 4
      st.info

+ 12 - 4
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},

+ 4 - 4
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~,