XFree86 3.1.2Eb - xterm patch #17 - 1996/7/2 - T.Dickey This patch implements for xterm several minor features from ISO 6429 which are useful for terminfo applications. The HPA and VPA control sequences allow cursor movement along a row or column, cutting down a little on the characters transmitted. The other codes allow resetting specific graphic rendition attributes without modifying the other attributes. (now if someone just had time to implement blinking cursors...) -------------------------------------------------------------------------------- doc/specs/xterm/ctlseqs.ms | 13 +++++++++++!! programs/xterm/VTPrsTbl.c | 6 !!!!!! programs/xterm/VTparse.def | 2 ++ programs/xterm/VTparse.h | 2 ++ programs/xterm/charproc.c | 28 ++++++++++++++++++++++++++++ programs/xterm/termcap | 4 !!!! programs/xterm/terminfo | 8 ++++!!!! 7 files changed, 47 insertions, 16 modifications -------------------------------------------------------------------------------- Index: VTPrsTbl.c *** XFree86-3.1.2Eb/xc/programs/xterm/VTPrsTbl.c Thu Dec 28 05:23:43 1995 --- XFree86-current/xc/programs/xterm/VTPrsTbl.c Tue Jul 2 19:10:22 1996 *************** *** 454,460 **** CASE_CUB, CASE_GROUND_STATE, CASE_GROUND_STATE, ! CASE_GROUND_STATE, /* H I J K */ CASE_CUP, CASE_GROUND_STATE, --- 454,460 ---- CASE_CUB, CASE_GROUND_STATE, CASE_GROUND_STATE, ! CASE_HPA, /* H I J K */ CASE_CUP, CASE_GROUND_STATE, *************** *** 491,504 **** CASE_GROUND_STATE, CASE_DA1, /* d e f g */ ! CASE_GROUND_STATE, CASE_GROUND_STATE, CASE_CUP, CASE_TBC, /* h i j k */ CASE_SET, CASE_GROUND_STATE, ! CASE_GROUND_STATE, CASE_GROUND_STATE, /* l m n o */ CASE_RST, --- 491,504 ---- CASE_GROUND_STATE, CASE_DA1, /* d e f g */ ! CASE_VPA, CASE_GROUND_STATE, CASE_CUP, CASE_TBC, /* h i j k */ CASE_SET, CASE_GROUND_STATE, ! CASE_HPA, CASE_GROUND_STATE, /* l m n o */ CASE_RST, Index: VTparse.def *** XFree86-3.1.2Eb/xc/programs/xterm/VTparse.def Tue Sep 15 15:28:32 1992 --- XFree86-current/xc/programs/xterm/VTparse.def Tue Jul 2 19:10:22 1996 *************** *** 77,79 **** --- 77,81 ---- CASE_HP_MEM_LOCK CASE_HP_MEM_UNLOCK CASE_HP_BUGGY_LL + CASE_HPA + CASE_VPA Index: VTparse.h *** XFree86-3.1.2Eb/xc/programs/xterm/VTparse.h Tue Sep 15 15:28:32 1992 --- XFree86-current/xc/programs/xterm/VTparse.h Tue Jul 2 19:10:22 1996 *************** *** 107,109 **** --- 107,111 ---- #define CASE_HP_MEM_LOCK 68 #define CASE_HP_MEM_UNLOCK 69 #define CASE_HP_BUGGY_LL 70 + #define CASE_HPA 71 + #define CASE_VPA 72 Index: charproc.c *** XFree86-3.1.2Eb/xc/programs/xterm/charproc.c Sun Jun 30 12:03:00 1996 --- XFree86-current/xc/programs/xterm/charproc.c Tue Jul 2 19:10:22 1996 *************** *** 966,971 **** --- 966,986 ---- parsestate = groundtable; break; + case CASE_VPA: + if((row = param[0]) < 1) + row = 1; + CursorSet(screen, row-1, screen->cur_col, term->flags); + parsestate = groundtable; + break; + + case CASE_HPA: + /* HPA | CHA */ + if((col = param[0]) < 1) + col = 1; + CursorSet(screen, screen->cur_row, col-1, term->flags); + parsestate = groundtable; + break; + case CASE_HP_BUGGY_LL: /* Some HP-UX applications have the bug that they assume ESC F goes to the lower left corner of *************** *** 1119,1124 **** --- 1134,1152 ---- break; case 7: term->flags |= INVERSE; + break; + case 22: + term->flags &= ~BOLD; + break; + case 24: + term->flags &= ~UNDERLINE; + break; + case 25: + /* Blink, really */ + term->flags &= ~BOLD; + break; + case 27: + term->flags &= ~INVERSE; break; case 30: case 31: Index: termcap *** XFree86-3.1.2Eb/xc/programs/xterm/termcap Mon May 13 15:15:18 1996 --- XFree86-current/xc/programs/xterm/termcap Tue Jul 2 19:10:22 1996 *************** *** 33,43 **** :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:\ :eA=\E)0:as=^N:ae=^O:\ :ml=\El:mu=\Em:\ ! :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\ :st=\EH:\ :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\ :vi=\E[?25l:ve=\E[?25h:\ ! :up=\E[A:us=\E[4m:ue=\E[m:xn:\ :ut:Co#8:NC#7:op=\E100m:AB=\E[4%dm:AF=\E[3%dm: v2|xterm-65|xterm with tall window 65x80 (X Window System):\ :li#65:tc=xterm: --- 33,43 ---- :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:\ :eA=\E)0:as=^N:ae=^O:\ :ml=\El:mu=\Em:\ ! :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[27m:sr=\EM:\ :st=\EH:\ :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\ :vi=\E[?25l:ve=\E[?25h:\ ! :up=\E[A:us=\E[4m:ue=\E[24m:xn:\ :ut:Co#8:NC#7:op=\E100m:AB=\E[4%dm:AF=\E[3%dm: v2|xterm-65|xterm with tall window 65x80 (X Window System):\ :li#65:tc=xterm: Index: terminfo *** XFree86-3.1.2Eb/xc/programs/xterm/terminfo Mon May 13 15:15:18 1996 --- XFree86-current/xc/programs/xterm/terminfo Tue Jul 2 19:10:22 1996 *************** *** 40,45 **** --- 40,46 ---- el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, + hpa=\E[%i%p1%dj, ht=^I, hts=\EH, il=\E[%p1%dL, *************** *** 90,97 **** rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, ! rmso=\E[m, ! rmul=\E[m, rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, sc=\E7, setab=\E[4%p1%dm, --- 91,98 ---- rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, ! rmso=\E[27m, ! rmul=\E[24m, rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, sc=\E7, setab=\E[4%p1%dm, *************** *** 107,117 **** --- 108,120 ---- smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%i%p1%dd, xterm-65|xterm with tall window 65x80 (X Window System), lines#65, use=xterm, xterm-bold|xterm with bold instead of underline (X Window System), smul=\E[1m, + rmul=\E[22m, use=xterm, xtermm|monochrome xterm (X Window System), colors@, *************** *** 126,131 **** --- 129,135 ---- use=xterm, xterm-boldso|xterm with bold for standout (X Window System), smso=\E[1m, + rmso=\E[22m, use=xterm, # # vi may work better with this entry, because vi Index: ctlseqs.ms *** XFree86-3.1.2Eb/xc/doc/specs/xterm/ctlseqs.ms Mon Mar 11 13:48:46 1996 --- XFree86-current/xc/doc/specs/xterm/ctlseqs.ms Tue Jul 2 19:18:50 1996 *************** *** 134,139 **** --- 134,140 ---- .[] D D .[] E E .[] F F + .[] G G .[] H H .[] J J .[] K K *************** *** 317,322 **** --- 318,325 ---- Cursor Forward \*(Ps Times (default = 1) (CUF) .IP \\*(Es\\*([[\\*(Ps\\*s\\*D Cursor Backward \*(Ps Times (default = 1) (CUB) + .IP \\*(Es\\*([[\\*(Pm\\*s\\*G + Cursor Character Absolute [column] (default = [row,1]) (CHA) .IP \\*(Es\\*([[\\*(Ps\\*s\\*;\\*(Ps\\*s\\*H Cursor Position [row;column] (default = [1,1]) (CUP) .IP \\*(Es\\*([[\\*(Ps\\*s\\*J *************** *** 344,349 **** --- 347,354 ---- \*(Ps = \*0 or omitted \(-> request attributes from terminal \(-> \*(Es\*([[\*?\*1\*;\*2\*c (``I am a VT100 with Advanced Video Option.'') + .IP \\*(Es\\*([[\\*(Pm\\*s\\*d + Line Position Absolute [row] (default = [1,column]) (VPA) .IP \\*(Es\\*([[\\*(Ps\\*s\\*;\\*(Ps\\*s\\*f Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP) .IP \\*(Es\\*([[\\*(Ps\\*s\\*g *************** *** 354,359 **** --- 359,366 ---- Set Mode (SM) \*(Ps = \*4 \(-> Insert Mode (IRM) \*(Ps = \*2\*0 \(-> Automatic Newline (LNM) + .IP \\*(Es\\*([[\\*(Pm\\*s\\*j + Character Position Absolute [column] (default = [row,1]) (HPA) .IP \\*(Es\\*([[\\*(Pm\\*s\\*l Reset Mode (RM) \*(Ps = \*4 \(-> Replace Mode (IRM) *************** *** 362,370 **** Character Attributes (SGR) \*(Ps = \*0 \(-> Normal (default) \*(Ps = \*1 \(-> Bold ! \*(Ps = \*4 \(-> Underscore \*(Ps = \*5 \(-> Blink (appears as Bold) \*(Ps = \*7 \(-> Inverse \*(Ps = \*3\*0 \(-> Set foreground color to Black \*(Ps = \*3\*1 \(-> Set foreground color to Red \*(Ps = \*3\*2 \(-> Set foreground color to Green --- 369,381 ---- Character Attributes (SGR) \*(Ps = \*0 \(-> Normal (default) \*(Ps = \*1 \(-> Bold ! \*(Ps = \*4 \(-> Underlined \*(Ps = \*5 \(-> Blink (appears as Bold) \*(Ps = \*7 \(-> Inverse + \*(Ps = \*2\*2 \(-> Normal (neither bold nor faint) + \*(Ps = \*2\*4 \(-> Not underlined + \*(Ps = \*2\*5 \(-> Steady (not blinking) + \*(Ps = \*2\*7 \(-> Positive (not inverse) \*(Ps = \*3\*0 \(-> Set foreground color to Black \*(Ps = \*3\*1 \(-> Set foreground color to Red \*(Ps = \*3\*2 \(-> Set foreground color to Green