---
st.c | 39 ++++++++++++++++++++++++++++++++-------
1 file changed, 32 insertions(+), 7 deletions(-)
diff --git a/st.c b/st.c
index e4fab61..982f0f6 100644
--- a/st.c
+++ b/st.c
_AT_@ -405,6 +405,7 @@ static void ttyread(void);
static void ttyresize(void);
static void ttysend(char *, size_t);
static void ttywrite(const char *, size_t);
+static void tstrsequence(uchar c);
static void xdraws(char *, Glyph, int, int, int, int);
static void xhints(void);
_AT_@ -2359,6 +2360,30 @@ tdeftran(char ascii) {
}
void
+tstrsequence(uchar c) {
+ if (c & 0x80) {
+ switch (c) {
+ case 0x90: /* DCS -- Device Control String */
+ c = 'P';
+ break;
+ case 0x9f: /* APC -- Application Program Command */
+ c = '_';
+ break;
+ case 0x9e: /* PM -- Privacy Message */
+ c = '^';
+ break;
+ case 0x9d: /* OSC -- Operating System Command */
+ c = ']';
+ break;
+ }
+ }
+ strreset();
+ strescseq.type = c;
+ term.esc |= ESC_STR;
+ return;
+}
+
+void
tcontrolcode(uchar ascii) {
static char question[UTF_SIZ] = "?";
_AT_@ -2421,17 +2446,19 @@ tcontrolcode(uchar ascii) {
case 0x8d: /* TODO: RI */
case 0x8e: /* TODO: SS2 */
case 0x8f: /* TODO: SS3 */
- case 0x90: /* TODO: DCS */
case 0x98: /* TODO: SOS */
case 0x9a: /* DECID -- Identify Terminal */
ttywrite(VT102ID, sizeof(VT102ID) - 1);
break;
case 0x9b: /* TODO: CSI */
case 0x9c: /* TODO: ST */
- case 0x9d: /* TODO: OSC */
- case 0x9e: /* TODO: PM */
- case 0x9f: /* TODO: APC */
break;
+ case 0x90: /* DCS -- Device Control String */
+ case 0x9f: /* APC -- Application Program Command */
+ case 0x9e: /* PM -- Privacy Message */
+ case 0x9d: /* OSC -- Operating System Command */
+ tstrsequence(ascii);
+ return;
}
/* only CAN, SUB, \a and C1 chars interrupt a sequence */
term.esc &= ~(ESC_STR_END|ESC_STR);
_AT_@ -2547,9 +2574,7 @@ tputc(char *c, int len) {
case '^': /* PM -- Privacy Message */
case ']': /* OSC -- Operating System Command */
case 'k': /* old title set compatibility */
- strreset();
- strescseq.type = ascii;
- term.esc |= ESC_STR;
+ tstrsequence(ascii);
return;
case '(': /* set primary charset G0 */
case ')': /* set secondary charset G1 */
--
1.8.5.3
Received on Wed Jun 25 2014 - 20:00:33 CEST
This archive was generated by hypermail 2.3.0 : Wed Jun 25 2014 - 20:12:23 CEST