Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Add DA and DECID sequences
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
23ed213
..
85b0b59
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-72,6
+72,8
@@
#define X2COL(x) (((x) - BORDER)/xw.cw)
#define Y2ROW(y) (((y) - BORDER)/xw.ch)
#define X2COL(x) (((x) - BORDER)/xw.cw)
#define Y2ROW(y) (((y) - BORDER)/xw.ch)
+#define VT102ID "\033[?6c"
+
enum glyph_attribute {
ATTR_NULL = 0,
ATTR_REVERSE = 1,
enum glyph_attribute {
ATTR_NULL = 0,
ATTR_REVERSE = 1,
@@
-1510,6
+1512,10
@@
csihandle(void) {
DEFAULT(csiescseq.arg[0], 1);
tmoveto(term.c.x, term.c.y+csiescseq.arg[0]);
break;
DEFAULT(csiescseq.arg[0], 1);
tmoveto(term.c.x, term.c.y+csiescseq.arg[0]);
break;
+ case 'c': /* DA -- Device Attributes */
+ if(csiescseq.arg[0] == 0)
+ ttywrite(VT102ID, sizeof(VT102ID));
+ break;
case 'C': /* CUF -- Cursor <n> Forward */
case 'a':
DEFAULT(csiescseq.arg[0], 1);
case 'C': /* CUF -- Cursor <n> Forward */
case 'a':
DEFAULT(csiescseq.arg[0], 1);
@@
-1933,6
+1939,9
@@
tputc(char *c, int len) {
}
term.esc = 0;
break;
}
term.esc = 0;
break;
+ case 'Z': /* DECID -- Identify Terminal */
+ ttywrite(VT102ID, sizeof(VT102ID));
+ break;
case 'c': /* RIS -- Reset to inital state */
treset();
term.esc = 0;
case 'c': /* RIS -- Reset to inital state */
treset();
term.esc = 0;
@@
-2310,7
+2319,7
@@
xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
* Those ranges will not be brightened:
* 8 - 15 – bright system colors
* 196 - 231 – highest 256 color cube
* Those ranges will not be brightened:
* 8 - 15 – bright system colors
* 196 - 231 – highest 256 color cube
- * 252 - 255 – brightest colors in grescale
+ * 252 - 255 – brightest colors in gre
y
scale
*/
font = &dc.bfont;
}
*/
font = &dc.bfont;
}
@@
-2355,7
+2364,7
@@
xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
}
if(x + charlen >= term.col-1) {
xclear(winx + width, (y == 0)? 0 : winy, xw.w,
}
if(x + charlen >= term.col-1) {
xclear(winx + width, (y == 0)? 0 : winy, xw.w,
-
winy + xw.ch + (y == term.row-1)? xw.h : 0
);
+
(y == term.row-1)? xw.h : (winy + xw.ch)
);
}
if(y == 0)
xclear(winx, 0, winx + width, BORDER);
}
if(y == 0)
xclear(winx, 0, winx + width, BORDER);