Hello,

        A new serie of patches which improves the ansi mode of st.

Best regards,
>From 3410b47ebbdc92aadeed2841f001a02ea014a92c Mon Sep 17 00:00:00 2001
From: "Roberto E. Vargas Caballero" <k...@shike2.com>
Date: Fri, 16 Nov 2012 12:02:51 +0100
Subject: Fix value of ka1 terminfo capability

ka1 stands for upper left of keypad, so the correct value is the one
generated by Home in application keypad mode.
---
 st.info |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/st.info b/st.info
index bb8145b..d0064db 100644
--- a/st.info
+++ b/st.info
@@ -49,7 +49,7 @@ st| simpleterm,
 	invis=\E[8m,
 	is2=\E[4l\E>,
 	it#8,
-	ka1=\E[E,
+	ka1=\E[1~,
 	ka3=\E[5~,
 	kc1=\E[4~,
 	kc3=\E[6~,
-- 
1.7.10.4

>From 697eb4b5b1d5de3837e08d3d4deca437783df624 Mon Sep 17 00:00:00 2001
From: "Roberto E. Vargas Caballero" <k...@shike2.com>
Date: Sun, 25 Nov 2012 11:01:58 +0100
Subject: Add support for insert key

Insert key stands for a key which allows enter or leaves insert mode, so let
it generates the correct sequence to change between these modes:

   - Insert: Enter in insert mode.
   - Shift + Insert: Leave insert mode (replace mode).
   - Control + Insert: Insert a blank line.

Like Shift + Insert also paste text, if a user want this feature be full
functional he has to modify such shortcut.
---
 config.def.h |   16 ++++++++++++----
 st.info      |    3 +++
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/config.def.h b/config.def.h
index 7c55ef2..4eda119 100644
--- a/config.def.h
+++ b/config.def.h
@@ -121,8 +121,12 @@ static Key key= {
 	{ 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},
-	{ XK_KP_Insert,     ShiftMask,      "\033[2;2~",     0,    0,    0},
-	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",       0,    0,    0},
+	{ XK_KP_Insert,     ShiftMask,      "\033[2;2~",    +1,    0,    0},
+	{ XK_KP_Insert,     ShiftMask,      "\033[4l",      -1,    0,    0},
+	{ XK_KP_Insert,     ControlMask,    "\033[L",       -1,    0,    0},
+	{ XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0,    0},
+	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
+	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
 	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",     0,    0,    0},
 	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",       0,    0,    0},
 	{ XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +2,    0,    0},
@@ -169,8 +173,12 @@ static Key key= {
 	{ XK_Return,        Mod1Mask,       "\033\r\n",      0,    0,   +1},
 	{ XK_Return,        XK_ANY_MOD,     "\r",            0,    0,   -1},
 	{ XK_Return,        XK_ANY_MOD,     "\r\n",          0,    0,   +1},
-	{ XK_Insert,        ShiftMask,      "\033[2;2~",     0,    0,    0},
-	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",       0,    0,    0},
+	{ XK_Insert,        ShiftMask,      "\033[4l",      -1,    0,    0},
+	{ XK_Insert,        ShiftMask,      "\033[2;2~",    +1,    0,    0},
+	{ XK_Insert,        ControlMask,    "\033[L",       -1,    0,    0},
+	{ XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0,    0},
+	{ XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
+	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
 	{ XK_Delete,        ShiftMask,      "\033[3;2~",     0,    0,    0},
 	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",       0,    0,    0},
 	{ XK_Home,          ShiftMask,      "\033[1;2H",     0,    0,    0},
diff --git a/st.info b/st.info
index d0064db..4fc9bdb 100644
--- a/st.info
+++ b/st.info
@@ -138,6 +138,9 @@ st| simpleterm,
 	kf62=\E[1;4Q,
 	kf63=\E[1;4R,
 	khome=\E[1~,
+	kil1=\E[2;5~,
+	krmir=\E[2;2~,
+	kich1=\E[2~,
 	knp=\E[6~,
 	kmous=\E[M,
 	kpp=\E[5~,
-- 
1.7.10.4

>From daf1390655708013dafa003090b51156aea56e54 Mon Sep 17 00:00:00 2001
From: "Roberto E. Vargas Caballero" <k...@shike2.com>
Date: Sun, 25 Nov 2012 16:15:32 +0100
Subject: Add support for Supr key

    Del : Delete character under cursor.
    Shift + Del : Delete the line under cursor.
    Ctrl + Del: Delete the full screen.
---
 config.def.h |   16 ++++++++++++----
 st.info      |    2 ++
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/config.def.h b/config.def.h
index 4eda119..755b316 100644
--- a/config.def.h
+++ b/config.def.h
@@ -127,8 +127,12 @@ static Key key= {
 	{ XK_KP_Insert,     ControlMask,    "\033[2;5~",    +1,    0,    0},
 	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
 	{ XK_KP_Insert,     XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
-	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",     0,    0,    0},
-	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",       0,    0,    0},
+	{ XK_KP_Delete,     ControlMask,    "\033[2J",      -1,    0,    0},
+	{ XK_KP_Delete,     ControlMask,    "\033[3;5~",    +1,    0,    0},
+	{ XK_KP_Delete,     ShiftMask,      "\033[2K",      +1,    0,    0},
+	{ XK_KP_Delete,     ShiftMask,      "\033[3;2~",    -1,    0,    0},
+	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[P",       -1,    0,    0},
+	{ XK_KP_Delete,     XK_ANY_MOD,     "\033[3~",      +1,    0,    0},
 	{ XK_KP_Multiply,   XK_ANY_MOD,     "\033Oj",       +2,    0,    0},
 	{ XK_KP_Add,        XK_ANY_MOD,     "\033Ok",       +2,    0,    0},
 	{ XK_KP_Enter,      XK_ANY_MOD,     "\033OM",       +2,    0,    0},
@@ -179,8 +183,12 @@ static Key key= {
 	{ XK_Insert,        ControlMask,    "\033[2;5~",    +1,    0,    0},
 	{ XK_Insert,        XK_ANY_MOD,     "\033[4h",      -1,    0,    0},
 	{ XK_Insert,        XK_ANY_MOD,     "\033[2~",      +1,    0,    0},
-	{ XK_Delete,        ShiftMask,      "\033[3;2~",     0,    0,    0},
-	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",       0,    0,    0},
+	{ XK_Delete,        ControlMask,    "\033[2J",      -1,    0,    0},
+	{ XK_Delete,        ControlMask,    "\033[3;5~",    +1,    0,    0},
+	{ XK_Delete,        ShiftMask,      "\033[2K",      +1,    0,    0},
+	{ XK_Delete,        ShiftMask,      "\033[3;2~",    -1,    0,    0},
+	{ XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0,    0},
+	{ XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0,    0},
 	{ 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},
diff --git a/st.info b/st.info
index 4fc9bdb..9a7edfe 100644
--- a/st.info
+++ b/st.info
@@ -71,6 +71,8 @@ st| simpleterm,
 	kRIT=\E[1;2C,
 	kind=\E[1;2B,
 	kri=\E[1;2A,
+	kclr=\E[3;5~,
+	kdl1=\E[3;2~,
 	kdch1=\E[3~,
 	kich1=\E[2~,
 	kend=\E[4~,
-- 
1.7.10.4

>From 8807794d1c9dda720755b3991a506e48e1b9cd52 Mon Sep 17 00:00:00 2001
From: "Roberto E. Vargas Caballero" <k...@shike2.com>
Date: Sun, 25 Nov 2012 12:00:04 +0100
Subject: Add support for End key

    - 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(-)

diff --git a/config.def.h b/config.def.h
index 755b316..3547909 100644
--- a/config.def.h
+++ b/config.def.h
@@ -117,7 +117,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},
@@ -192,7 +195,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
--- 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~,
-- 
1.7.10.4

Reply via email to