[hackers] [st] Add 8 bit version of DCS, APC, PM, OSC || Roberto E. Vargas Caballero

From: <git_AT_suckless.org>
Date: Thu, 10 Jul 2014 10:13:41 +0200

commit 984c12d2a67fd19ee69b35152d93de8cb67595e8
Author: Roberto E. Vargas Caballero <k0ga_AT_shike2.com>
Date: Fri Jun 20 09:51:18 2014 +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.

diff --git a/st.c b/st.c
index 6ec4858..b221f33 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_@ -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] = "?";
 
_AT_@ -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 */
_AT_@ -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,  and C1 chars interrupt a sequence */
         term.esc &= ~(ESC_STR_END|ESC_STR);
_AT_@ -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 */
Received on Thu Jul 10 2014 - 10:13:41 CEST

This archive was generated by hypermail 2.3.0 : Thu Jul 10 2014 - 10:24:10 CEST