aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien Aptel <aurelien.aptel@gmail.com>2010-08-22 19:46:46 +0200
committerAurélien Aptel <aurelien.aptel@gmail.com>2010-08-22 19:46:46 +0200
commita7922bd1d94ace6d14e40a27820e217cd6c4e632 (patch)
tree9441bd9b362384260de3cc1d1a9415462a319fbb
parentce3f4fc647be3ab28f934db9365445a56ebd85bf (diff)
downloadst-a7922bd1d94ace6d14e40a27820e217cd6c4e632.tar.gz
st-a7922bd1d94ace6d14e40a27820e217cd6c4e632.tar.bz2
added F1-12 key, fixed DCH and ICH.
-rw-r--r--config.h12
-rw-r--r--st.c8
-rw-r--r--st.info12
3 files changed, 28 insertions, 4 deletions
diff --git a/config.h b/config.h
index c3c4e41..bb490ab 100644
--- a/config.h
+++ b/config.h
@@ -39,6 +39,18 @@ static Key key[] = {
{ XK_End, "\033[4~" },
{ XK_Prior, "\033[5~" },
{ XK_Next, "\033[6~" },
+ { XK_F1, "\033OP" },
+ { XK_F2, "\033OQ" },
+ { XK_F3, "\033OR" },
+ { XK_F4, "\033OS" },
+ { XK_F5, "\033[15~" },
+ { XK_F6, "\033[17~" },
+ { XK_F7, "\033[18~" },
+ { XK_F8, "\033[19~" },
+ { XK_F9, "\033[20~" },
+ { XK_F10, "\033[21~" },
+ { XK_F11, "\033[23~" },
+ { XK_F12, "\033[24~" },
};
static char gfx[] = {
diff --git a/st.c b/st.c
index f8d2257..6e34f1e 100644
--- a/st.c
+++ b/st.c
@@ -497,21 +497,21 @@ tdeletechar(int n) {
return;
}
memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src], size * sizeof(Glyph));
- tclearregion(term.col-size, term.c.y, term.col-1, term.c.y);
+ tclearregion(term.col-n, term.c.y, term.col-1, term.c.y);
}
void
tinsertblank(int n) {
int src = term.c.x;
int dst = src + n;
- int size = term.col - n - src;
+ int size = term.col - dst;
if(dst >= term.col) {
tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
return;
}
memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src], size * sizeof(Glyph));
- tclearregion(src, term.c.y, dst, term.c.y);
+ tclearregion(src, term.c.y, dst - 1, term.c.y);
}
void
@@ -1173,7 +1173,7 @@ xcursor(int mode) {
if(term.line[term.c.y][term.c.x].state & GLYPH_SET)
g.c = term.line[term.c.y][term.c.x].c;
-
+
/* remove the old cursor */
if(term.line[oldy][oldx].state & GLYPH_SET)
xdraws(&term.line[oldy][oldx].c, term.line[oldy][oldx], oldx, oldy, 1);
diff --git a/st.info b/st.info
index b2669dd..2cc645b 100644
--- a/st.info
+++ b/st.info
@@ -37,6 +37,18 @@ st| simpleterm,
kcuu1=\E[A,
kdch1=\E[3~,
kend=\E[4~,
+ kf1=\EOP,
+ kf2=\EOQ,
+ kf3=\EOR,
+ kf4=\EOS,
+ kf5=\E[15~,
+ kf6=\E[17~,
+ kf7=\E[18~,
+ kf8=\E[19~,
+ kf9=\E[20~,
+ kf10=\E[21~,
+ kf11=\E[23~,
+ kf12=\E[24~,
khome=\E[1~,
knp=\E[6~,
kpp=\E[5~,