diff --git a/st.c b/st.c
index 9e66d09..ab43a43 100644
--- a/st.c
+++ b/st.c
@@ -855,7 +855,9 @@ csihandle(void) {
 				term.mode |= MODE_WRAP;
 				break;
 			case 12: /* att610 -- Start blinking cursor (IGNORED) */
-				break;
+				 /* fallthrough for xterm cvvis = CSI [ ? 12 ; 25 h */
+				if(escseq.narg > 1 && escseq.arg[1] != 25)
+					break;
 			case 25:
 				term.c.state &= ~CURSOR_HIDE;
 				break;
diff --git a/st.info b/st.info
index bcff5e0..3778f74 100644
--- a/st.info
+++ b/st.info
@@ -1,7 +1,11 @@
+# unsupported xterm caps are (getting) commented. 
+# as soon as they work, uncomment them.
 st| simpleterm,
 	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
 	am,
+#	bce,
 	bel=^G,
+#	blink=\E[5m
 	bold=\E[1m,
 	cbt=\E[Z,
 	civis=\E[?25l
@@ -11,11 +15,14 @@ st| simpleterm,
 	cols#80,
 	cr=^M,
 	csr=\E[%i%p1%d;%p2%dr,
-	cub1=\E[D,
-	cud1=\E[B,
+	cub1=^H,
+	cud1=^J,
+	cud=\E[%p1%dB,
 	cuf1=\E[C,
+	cuf=\E[%p1%dC,
 	cup=\E[%i%p1%d;%p2%dH,
 	cuu1=\E[A,
+	cuu=\E[%p1%dA,
 	dch1=\E[P,
 	dl1=\E[M,
 	ed=\E[J,
@@ -55,13 +62,16 @@ st| simpleterm,
 	ncv#3,
 	op=\E[37;40m,
 	pairs#64,
+	rc=\E8,
 	rev=\E[7m,
 	rmacs=\E(B,
 	rmso=\E[m,
 	rmul=\E[m,
+	sc=\E7,
 	setab=\E[4%p1%dm,
 	setaf=\E[3%p1%dm,
 	sgr0=\E[0m,
+	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
 	smacs=\E(0,
 	smso=\E[7m,
 	smul=\E[4m,
@@ -70,6 +80,7 @@ st| simpleterm,
 
 st-256color| simpleterm with 256 colors,
 	colors#256,
+	pairs#32767,
 #	Nicked from xterm-256color
 	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
 	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,