|
|
@ -405,6 +405,7 @@ static void ttyread(void); |
|
|
|
static void ttyresize(void); |
|
|
|
static void ttyresize(void); |
|
|
|
static void ttysend(char *, size_t); |
|
|
|
static void ttysend(char *, size_t); |
|
|
|
static void ttywrite(const 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 xdraws(char *, Glyph, int, int, int, int); |
|
|
|
static void xhints(void); |
|
|
|
static void xhints(void); |
|
|
@ -2347,6 +2348,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 |
|
|
|
void |
|
|
|
tcontrolcode(uchar ascii) { |
|
|
|
tcontrolcode(uchar ascii) { |
|
|
|
static char question[UTF_SIZ] = "?"; |
|
|
|
static char question[UTF_SIZ] = "?"; |
|
|
@ -2411,7 +2436,6 @@ tcontrolcode(uchar ascii) { |
|
|
|
case 0x8d: /* TODO: RI */ |
|
|
|
case 0x8d: /* TODO: RI */ |
|
|
|
case 0x8e: /* TODO: SS2 */ |
|
|
|
case 0x8e: /* TODO: SS2 */ |
|
|
|
case 0x8f: /* TODO: SS3 */ |
|
|
|
case 0x8f: /* TODO: SS3 */ |
|
|
|
case 0x90: /* TODO: DCS */ |
|
|
|
|
|
|
|
case 0x98: /* TODO: SOS */ |
|
|
|
case 0x98: /* TODO: SOS */ |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 0x9a: /* DECID -- Identify Terminal */ |
|
|
|
case 0x9a: /* DECID -- Identify Terminal */ |
|
|
@ -2419,10 +2443,13 @@ tcontrolcode(uchar ascii) { |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 0x9b: /* TODO: CSI */ |
|
|
|
case 0x9b: /* TODO: CSI */ |
|
|
|
case 0x9c: /* TODO: ST */ |
|
|
|
case 0x9c: /* TODO: ST */ |
|
|
|
case 0x9d: /* TODO: OSC */ |
|
|
|
|
|
|
|
case 0x9e: /* TODO: PM */ |
|
|
|
|
|
|
|
case 0x9f: /* TODO: APC */ |
|
|
|
|
|
|
|
break; |
|
|
|
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 */ |
|
|
|
/* only CAN, SUB, \a and C1 chars interrupt a sequence */ |
|
|
|
term.esc &= ~(ESC_STR_END|ESC_STR); |
|
|
|
term.esc &= ~(ESC_STR_END|ESC_STR); |
|
|
@ -2538,9 +2565,7 @@ tputc(char *c, int len) { |
|
|
|
case '^': /* PM -- Privacy Message */ |
|
|
|
case '^': /* PM -- Privacy Message */ |
|
|
|
case ']': /* OSC -- Operating System Command */ |
|
|
|
case ']': /* OSC -- Operating System Command */ |
|
|
|
case 'k': /* old title set compatibility */ |
|
|
|
case 'k': /* old title set compatibility */ |
|
|
|
strreset(); |
|
|
|
tstrsequence(ascii); |
|
|
|
strescseq.type = ascii; |
|
|
|
|
|
|
|
term.esc |= ESC_STR; |
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
case '(': /* set primary charset G0 */ |
|
|
|
case '(': /* set primary charset G0 */ |
|
|
|
case ')': /* set secondary charset G1 */ |
|
|
|
case ')': /* set secondary charset G1 */ |
|
|
|