Annotation of researchv9/X11/src/X.V11R1/clients/xterm/ptyx.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     $Source: /u1/X11/clients/xterm/RCS/ptyx.h,v $
                      3:  *     $Header: ptyx.h,v 1.11 87/09/11 08:17:30 toddb Exp $
                      4:  */
                      5: 
                      6: #include <X11/copyright.h>
                      7: 
                      8: /*
                      9:  * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
                     10:  *
                     11:  *                         All Rights Reserved
                     12:  *
                     13:  * Permission to use, copy, modify, and distribute this software and its
                     14:  * documentation for any purpose and without fee is hereby granted,
                     15:  * provided that the above copyright notice appear in all copies and that
                     16:  * both that copyright notice and this permission notice appear in
                     17:  * supporting documentation, and that the name of Digital Equipment
                     18:  * Corporation not be used in advertising or publicity pertaining to
                     19:  * distribution of the software without specific, written prior permission.
                     20:  *
                     21:  *
                     22:  * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     23:  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     24:  * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     25:  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     26:  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     27:  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     28:  * SOFTWARE.
                     29:  */
                     30: 
                     31: /* ptyx.h */
                     32: /* @(#)ptyx.h  X10/6.6 11/10/86 */
                     33: 
                     34: #include <X11/Xlib.h>
                     35: 
                     36: /* Extra Xlib definitions */
                     37: #define AllButtonsUp(detail, ignore)  (\
                     38:                ((ignore) == Button1) ? \
                     39:                                (((detail)&(Button2Mask|Button3Mask)) == 0) \
                     40:                                : \
                     41:                 (((ignore) == Button2) ? \
                     42:                                (((detail)&(Button1Mask|Button3Mask)) == 0) \
                     43:                                : \
                     44:                                (((detail)&(Button1Mask|Button2Mask)) == 0)) \
                     45:                )
                     46: 
                     47: 
                     48: #define Max(i, j)       ((i) > (j) ? (i) : (j))
                     49: 
                     50: #define MAX_COLS       200
                     51: #define MAX_ROWS       128
                     52: 
                     53: /* Until the translation manager comes along, I have to do my own translation of
                     54:  * mouse events into the proper routines. */
                     55: 
                     56: typedef enum {NORMAL, LEFTEXTENSION, RIGHTEXTENSION} EventMode;
                     57: 
                     58: /*
                     59:  * The origin of a screen is 0, 0.  Therefore, the number of rows
                     60:  * on a screen is screen->max_row + 1, and similarly for columns.
                     61:  */
                     62: 
                     63: typedef char **ScrnBuf;
                     64: 
                     65: /*
                     66:  * ANSI emulation.
                     67:  */
                     68: #define INQ    0x05
                     69: #define        FF      0x0C                    /* C0, C1 control names         */
                     70: #define        LS1     0x0E
                     71: #define        LS0     0x0F
                     72: #define        CAN     0x18
                     73: #define        SUB     0x1A
                     74: #define        ESC     0x1B
                     75: #define US     0x1F
                     76: #define        DEL     0x7F
                     77: #define HTS     ('H'+0x40')
                     78: #define        SS2     0x8E
                     79: #define        SS3     0x8F
                     80: #define        DCS     0x90
                     81: #define        OLDID   0x9A                    /* ESC Z                        */
                     82: #define        CSI     0x9B
                     83: #define        ST      0x9C
                     84: #define        OSC     0x9D
                     85: #define        PM      0x9E
                     86: #define        APC     0x9F
                     87: #define        RDEL    0xFF
                     88: 
                     89: #define        NBOX    5                       /* Number of Points in box      */
                     90: #define        NPARAM  10                      /* Max. parameters              */
                     91: 
                     92: #define        MINHILITE       32
                     93: 
                     94: typedef struct {
                     95:        unsigned char   a_type;
                     96:        unsigned char   a_pintro;
                     97:        unsigned char   a_final;
                     98:        unsigned char   a_inters;
                     99:        char    a_nparam;               /* # of parameters              */
                    100:        char    a_dflt[NPARAM];         /* Default value flags          */
                    101:        short   a_param[NPARAM];        /* Parameters                   */
                    102:        char    a_nastyf;               /* Error flag                   */
                    103: } ANSI;
                    104: 
                    105: typedef struct {
                    106:        int             row;
                    107:        int             col;
                    108:        unsigned        flags;  /* Vt100 saves graphics rendition. Ugh! */
                    109:        char            curgl;
                    110:        char            curgr;
                    111:        char            gsets[4];
                    112: } SavedCursor;
                    113: 
                    114: #define        TEKNUMFONTS     4
                    115: /* Actually there are 5 types of lines, but four are non-solid lines */
                    116: #define        TEKNUMLINES     4
                    117: 
                    118: typedef struct {
                    119:        int     x;
                    120:        int     y;
                    121:        int     fontsize;
                    122:        int     linetype;
                    123: } Tmodes;
                    124: 
                    125: typedef struct {
                    126:        int Twidth;
                    127:        int Theight;
                    128: } T_fontsize;
                    129: 
                    130: typedef struct {
                    131:        short *bits;
                    132:        int x;
                    133:        int y;
                    134:        int width;
                    135:        int height;
                    136: } BitmapBits;
                    137: 
                    138: #define        SAVELINES               64      /* default # lines to save      */
                    139: #define        SCROLLBARWIDTH          15      /* scroll bar width             */
                    140: 
                    141: typedef struct {
                    142: /* These parameters apply to both windows */
                    143:        Display         *display;       /* X display for screen         */
                    144:        int             respond;        /* socket for responses
                    145:                                           (position report, etc.)      */
                    146:        long            pid;            /* pid of process on far side   */
                    147:        int             uid;            /* user id of actual person     */
                    148:        int             gid;            /* group id of actual person    */
                    149:        int             color;          /* colors used                  */
                    150:        GC              normalGC;       /* normal painting              */
                    151:        GC              reverseGC;      /* reverse painting             */
                    152:        GC              normalboldGC;   /* normal painting, bold font   */
                    153:        GC              reverseboldGC;  /* reverse painting, bold font  */
                    154:        GC              cursorGC;       /* normal cursor painting       */
                    155:        GC              reversecursorGC;/* reverse cursor painting      */
                    156:        unsigned long   foreground;     /* foreground color             */
                    157:        unsigned long   background;     /* Background color             */
                    158:        unsigned long   cursorcolor;    /* Cursor color                 */
                    159:        unsigned long   mousecolor;     /* Mouse color                  */
                    160:        int             border;         /* inner border                 */
                    161:        int             borderwidth;    /* outer border                 */
                    162:        unsigned long   bordercolor;    /* border Pixel color           */
                    163:        Pixmap          graybordertile; /* tile pixmap for border when
                    164:                                                window is unselected    */
                    165:        Cursor          arrow;          /* arrow cursor                 */
                    166:        unsigned short  send_mouse_pos; /* user wants mouse transition  */
                    167:                                        /* and position information     */
                    168:        int             select;         /* xterm selected               */
                    169:        int             visualbell;     /* visual bell mode             */
                    170:        int             logging;        /* logging mode                 */
                    171:        int             logfd;          /* file descriptor of log       */
                    172:        char            *logfile;       /* log file name                */
                    173:        char            *logstart;      /* current start of log buffer  */
                    174:        int             inhibit;        /* flags for inhibiting changes */
                    175: 
                    176: /* VT window parameters */
                    177:        struct {
                    178:                Window  window;         /* X window id                  */
                    179:                int     width;          /* width of columns             */
                    180:                int     height;         /* height of rows               */
                    181:                int     fullwidth;      /* full width of window         */
                    182:                int     fullheight;     /* full height of window        */
                    183:                int     f_width;        /* width of fonts in pixels     */
                    184:                int     f_height;       /* height of fonts in pixels    */
                    185:        } fullVwin;
                    186:        Cursor          curs;           /* cursor resource from X       */
                    187:        /* Terminal fonts must be of the same size and of fixed width */
                    188:        XFontStruct     *fnt_norm;      /* normal font of terminal      */
                    189:        XFontStruct     *fnt_bold;      /* bold font of terminal        */
                    190:        int             enbolden;       /* overstrike for bold font     */
                    191:        XPoint          *box;           /* draw unselected cursor       */
                    192: 
                    193:        int             cursor_state;   /* ON or OFF                    */
                    194:        int             cursor_set;     /* requested state              */
                    195:        int             cursor_col;     /* previous cursor column       */
                    196:        int             cursor_row;     /* previous cursor row          */
                    197:        int             cur_col;        /* current cursor column        */
                    198:        int             cur_row;        /* current cursor row           */
                    199:        int             max_col;        /* rightmost column             */
                    200:        int             max_row;        /* bottom row                   */
                    201:        int             top_marg;       /* top line of scrolling region */
                    202:        int             bot_marg;       /* bottom line of  "        "   */
                    203:        Window          scrollWindow;   /* pointer to scrollbar struct  */
                    204:        int             scrollbar;      /* if > 0, width of scrollbar, and
                    205:                                                scrollbar is showing    */
                    206:        int             topline;        /* line number of top, <= 0     */
                    207:        int             savedlines;     /* number of lines that've been saved */
                    208:        int             savelines;      /* number of lines off top to save */
                    209:        int             scrollinput;    /* scroll to bottom on input    */
                    210:        int             scrollkey;      /* scroll to bottom on key      */
                    211:        
                    212:        ScrnBuf         buf;            /* screen buffer (main)         */
                    213:        ScrnBuf         allbuf;         /* screen buffer (may include
                    214:                                           lines scrolled off top       */
                    215:        ScrnBuf         altbuf;         /* alternate screen buffer      */
                    216:        int             alternate;      /* true if using alternate buf  */
                    217:        unsigned short  do_wrap;        /* true if cursor in last column
                    218:                                           and character just output    */
                    219:        int             incopy;         /* 0 if no RasterCopy exposure
                    220:                                           event processed since last
                    221:                                           RasterCopy                   */
                    222:        int             c132;           /* allow change to 132 columns  */
                    223:        int             curses;         /* cludge-ups for more and vi   */
                    224:        int             marginbell;     /* true if margin bell on       */
                    225:        int             nmarginbell;    /* columns from right margin    */
                    226:        int             bellarmed;      /* cursor below bell margin     */
                    227:        unsigned int    multiscroll;    /* true if multi-scroll         */
                    228:        int             scrolls;        /* outstanding scroll count     */
                    229:        SavedCursor     sc;             /* data for restore cursor      */
                    230:        char            *iconname;      /* name in icon                 */
                    231:        int             iconnamelen;    /* length of icon name          */
                    232:        char            *titlename;     /* name in title                */
                    233:        int             titlenamelen;   /* length of title name         */
                    234:        int             save_modes[19]; /* save dec private modes       */
                    235: 
                    236:        /* Improved VT100 emulation stuff.                              */
                    237:        char            gsets[4];       /* G0 through G3.               */
                    238:        char            curgl;          /* Current GL setting.          */
                    239:        char            curgr;          /* Current GR setting.          */
                    240:        char            curss;          /* Current single shift.        */
                    241:        int             scroll_amt;     /* amount to scroll             */
                    242:        int             refresh_amt;    /* amount to refresh            */
                    243:        int             jumpscroll;     /* whether we should jumpscroll */
                    244: 
                    245: /* Tektronix window parameters */
                    246:        GC              TnormalGC;      /* normal painting              */
                    247:        GC              TcursorGC;      /* normal cursor painting       */
                    248:        unsigned long   Tforeground;    /* foreground color             */
                    249:        unsigned long   Tbackground;    /* Background color             */
                    250:        unsigned long   Tcursorcolor;   /* Cursor color                 */
                    251:        Pixmap          Tbgndtile;      /* background tile pixmap       */
                    252:        int             Tcolor;         /* colors used                  */
                    253:        int             planeused;      /* is xorplane being used       */
                    254:        int             cellsused;      /* are color cells being used   */
                    255:        XColor          colorcells[3];  /* color cells for Tek          */
                    256:        int             Tshow;          /* Tek window showing           */
                    257:        int             waitrefresh;    /* postpone refresh             */
                    258:        struct {
                    259:                Window  window;         /* X window id                  */
                    260:                int     width;          /* width of columns             */
                    261:                int     height;         /* height of rows               */
                    262:                int     fullwidth;      /* full width of window         */
                    263:                int     fullheight;     /* full height of window        */
                    264:                double  tekscale;       /* scale factor Tek -> vs100    */
                    265:        } fullTwin;
                    266:        XPoint          **Tbox;         /* draw unselected cursor       */
                    267:        int             xorplane;       /* z plane for inverts          */
                    268:        GC              linepat[TEKNUMLINES]; /* line patterns          */
                    269:        XFontStruct     *Tfont[TEKNUMFONTS]; /* Tek fonts               */
                    270:        int             tobaseline[TEKNUMFONTS]; /* top to baseline for
                    271:                                                        each font       */
                    272:        int             TekEmu;         /* true if Tektronix emulation  */
                    273:        int             cur_X;          /* current x                    */
                    274:        int             cur_Y;          /* current y                    */
                    275:        Tmodes          cur;            /* current tek modes            */
                    276:        Tmodes          page;           /* starting tek modes on page   */
                    277:        int             margin;         /* 0 -> margin 1, 1 -> margin 2 */
                    278:        int             pen;            /* current Tektronix pen 0=up, 1=dn */
                    279:        char            *TekGIN;        /* nonzero if Tektronix GIN mode*/
                    280:        char            *Ticonname;     /* name in icon         */
                    281:        int             Ticonnamelen;   /* length of icon name  */
                    282:        char            *Ttitlename;    /* name of title                */
                    283:        int             Ttitlenamelen;  /* length of title name */
                    284: } TScreen;
                    285: 
                    286: /* meaning of bits in screen.select flag */
                    287: #define        INWINDOW        01      /* the mouse is in one of the windows */
                    288: #define        FOCUS           02      /* one of the windows is the focus window */
                    289: 
                    290: typedef struct
                    291: {
                    292:        unsigned        flags;
                    293: } TKeyboard;
                    294: 
                    295: /* define masks for flags */
                    296: #define CAPS_LOCK      0x01
                    297: #define KYPD_APL       0x02
                    298: #define CURSOR_APL     0x04
                    299: 
                    300: 
                    301: #define N_MARGINBELL   10
                    302: #define MAX_TABS       320
                    303: #define TAB_ARRAY_SIZE 10      /* number of ints to provide MAX_TABS bits */
                    304: 
                    305: typedef unsigned Tabs [TAB_ARRAY_SIZE];
                    306: 
                    307: 
                    308: #define BUF_SIZE 4096
                    309: 
                    310: typedef struct
                    311: {
                    312:        TKeyboard       keyboard;       /* terminal keyboard            */
                    313:        TScreen         screen;         /* terminal screeen             */
                    314:        unsigned        flags;          /* mode flags                   */
                    315:        unsigned        initflags;      /* initial mode flags           */
                    316:        Tabs            tabs;           /* tabstops of the terminal     */
                    317: } Terminal;
                    318: 
                    319: 
                    320: /* masks for terminal flags */
                    321: 
                    322: #define INVERSE                0x01    /* invert the characters to be output */
                    323: #define UNDERLINE      0x02    /* true if underlining */
                    324: #define BOLD           0x04
                    325: #define WRAPAROUND     0x08
                    326: #define REVERSE_VIDEO  0x10    /* true if screen white on black */
                    327: #define ORIGIN         0x20    /* true if in origin mode */
                    328: #define INSERT         0x40    /* true if in insert mode */
                    329: #define SMOOTHSCROLL   0x80    /* true if in smooth scroll mode */
                    330: #define AUTOREPEAT     0x100   /* true if in autorepeat mode */
                    331: #define IN132COLUMNS   0x200   /* true if in 132 column mode */
                    332: #define LINEFEED       0x400
                    333: #define        REVERSEWRAP     0x800   /* true if reverse wraparound mode */
                    334: 
                    335: #define        ATTRIBUTES      0x07    /* attributes mask */
                    336: #define CHAR           0177
                    337: 
                    338: #define VWindow(screen)                (screen->fullVwin.window)
                    339: #define TextWindow(screen)      (screen->fullVwin.window)
                    340: #define TWindow(screen)                (screen->fullTwin.window)
                    341: #define Width(screen)          (screen->fullVwin.width)
                    342: #define Height(screen)         (screen->fullVwin.height)
                    343: #define FullWidth(screen)      (screen->fullVwin.fullwidth)
                    344: #define FullHeight(screen)     (screen->fullVwin.fullheight)
                    345: #define FontWidth(screen)      (screen->fullVwin.f_width)
                    346: #define FontHeight(screen)     (screen->fullVwin.f_height)
                    347: #define TWidth(screen)         (screen->fullTwin.width)
                    348: #define THeight(screen)                (screen->fullTwin.height)
                    349: #define TFullWidth(screen)     (screen->fullTwin.fullwidth)
                    350: #define TFullHeight(screen)    (screen->fullTwin.fullheight)
                    351: #define TekScale(screen)       (screen->fullTwin.tekscale)
                    352: 
                    353: #define CursorX(screen,col) ((col) * FontWidth(screen) + screen->border \
                    354:                        + screen->scrollbar)
                    355: #define CursorY(screen,row) ((((row) - screen->topline) * FontHeight(screen)) \
                    356:                        + screen->border)
                    357: 
                    358: #define        TWINDOWEVENTS   (KeyPressMask | ExposureMask | ButtonPressMask |\
                    359:                         ButtonReleaseMask | StructureNotifyMask |\
                    360:                         EnterWindowMask | LeaveWindowMask | FocusChangeMask)
                    361: 
                    362: #define        WINDOWEVENTS    (TWINDOWEVENTS | PointerMotionMask)
                    363: 
                    364: 
                    365: #define TEK_LINK_BLOCK_SIZE 1024
                    366: 
                    367: typedef struct Tek_Link
                    368: {
                    369:        struct Tek_Link *next;  /* pointer to next TekLink in list
                    370:                                   NULL <=> this is last TekLink */
                    371:        short count;
                    372:        char *ptr;
                    373:        char data [TEK_LINK_BLOCK_SIZE];
                    374: } TekLink;
                    375: 
                    376: /* flags for cursors */
                    377: #define        OFF             0
                    378: #define        ON              1
                    379: #define        CLEAR           0
                    380: #define        TOGGLE          1
                    381: 
                    382: /* flags for color */
                    383: #define        C_FOREGROUND    0x01
                    384: #define        C_BACKGROUND    0x02
                    385: #define        C_FBMASK        0x03
                    386: #define        C_CURSOR        0x04
                    387: #define        C_MOUSE         0x08
                    388: #define        C_BORDER        0x10
                    389: 
                    390: /* flags for inhibit */
                    391: #define        I_LOG           0x01
                    392: #define        I_SIGNAL        0x02
                    393: #define        I_TEK           0x04
                    394: 
                    395: extern Cursor make_tcross();
                    396: extern Cursor make_xterm();
                    397: extern Cursor make_wait();
                    398: extern Cursor make_arrow();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.