| tAdd 8 bit version of DCS, APC, PM, OSC - st - [fork] customized build of st, t… | |
| git clone git://src.adamsgaard.dk/st | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 984c12d2a67fd19ee69b35152d93de8cb67595e8 | |
| parent da78629cf5fa234204f002ff2c2b597a2bf7e76f | |
| Author: Roberto E. Vargas Caballero <[email protected]> | |
| Date: Fri, 20 Jun 2014 09:51:18 +0200 | |
| Add 8 bit version of DCS, APC, PM, OSC | |
| DCS, APC, PM, OSC version for 7 bits environments already was implemented | |
| in st. This patch adds the 8 bit version of it. | |
| Diffstat: | |
| M st.c | 39 +++++++++++++++++++++++++----… | |
| 1 file changed, 32 insertions(+), 7 deletions(-) | |
| --- | |
| diff --git a/st.c b/st.c | |
| t@@ -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); | |
| t@@ -2348,6 +2349,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] = "?"; | |
| t@@ -2411,7 +2436,6 @@ tcontrolcode(uchar ascii) { | |
| case 0x8d: /* TODO: RI */ | |
| case 0x8e: /* TODO: SS2 */ | |
| case 0x8f: /* TODO: SS3 */ | |
| - case 0x90: /* TODO: DCS */ | |
| case 0x98: /* TODO: SOS */ | |
| break; | |
| case 0x9a: /* DECID -- Identify Terminal */ | |
| t@@ -2419,10 +2443,13 @@ tcontrolcode(uchar ascii) { | |
| 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); | |
| t@@ -2538,9 +2565,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 */ |