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.
This commit is contained in:
parent
da78629cf5
commit
984c12d2a6
1 changed files with 32 additions and 7 deletions
39
st.c
39
st.c
|
@ -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 */
|
||||||
|
|
Loading…
Reference in a new issue