Annotation of 43BSDTahoe/new/X/xterm/ptyx.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     $Source: /u1/X/xterm/RCS/ptyx.h,v $
                      3:  *     $Header: ptyx.h,v 10.101 86/12/01 16:57:15 swick Rel $
                      4:  */
                      5: 
                      6: #include <X/mit-copyright.h>
                      7: 
                      8: /*     Copyright       Massachusetts Institute of Technology   1984, 1985 */
                      9: 
                     10: /* ptyx.h */
                     11: /* @(#)ptyx.h  1.4 (Berkeley/CSRG) 9/17/87 */
                     12: /* @(#)ptyx.h       X10/6.6B 12/26/86 */
                     13: 
                     14: #define        FALSE           0
                     15: #define        TRUE            1
                     16: 
                     17: #define MAX_COLS       200
                     18: #define MAX_ROWS       128
                     19: 
                     20: /*
                     21:  * The origin of a screen is 0, 0.  Therefore, the number of rows
                     22:  * on a screen is screen->max_row + 1, and similarly for columns.
                     23:  */
                     24: 
                     25: typedef char **ScrnBuf;
                     26: 
                     27: /*
                     28:  * ANSI emulation.
                     29:  */
                     30: #define INQ    0x05
                     31: #define        FF      0x0C                    /* C0, C1 control names         */
                     32: #define        LS1     0x0E
                     33: #define        LS0     0x0F
                     34: #define        CAN     0x18
                     35: #define        SUB     0x1A
                     36: #define        ESC     0x1B
                     37: #define US     0x1F
                     38: #define        DEL     0x7F
                     39: #define HTS     ('H'+0x40)
                     40: #define        SS2     0x8E
                     41: #define        SS3     0x8F
                     42: #define        DCS     0x90
                     43: #define        OLDID   0x9A                    /* ESC Z                        */
                     44: #define        CSI     0x9B
                     45: #define        ST      0x9C
                     46: #define        OSC     0x9D
                     47: #define        PM      0x9E
                     48: #define        APC     0x9F
                     49: #define        RDEL    0xFF
                     50: 
                     51: #define        NBOX    5                       /* Number of Vertices in box    */
                     52: #define        NPARAM  10                      /* Max. parameters              */
                     53: 
                     54: #define        MINHILITE       32
                     55: #define        TITLEPAD        4
                     56: 
                     57: typedef struct {
                     58:        unsigned char   a_type;
                     59:        unsigned char   a_pintro;
                     60:        unsigned char   a_final;
                     61:        unsigned char   a_inters;
                     62:        char    a_nparam;               /* # of parameters              */
                     63:        char    a_dflt[NPARAM];         /* Default value flags          */
                     64:        short   a_param[NPARAM];        /* Parameters                   */
                     65:        char    a_nastyf;               /* Error flag                   */
                     66: } ANSI;
                     67: 
                     68: typedef struct {
                     69:        int             row;
                     70:        int             col;
                     71:        unsigned        flags;  /* Vt100 saves graphics rendition. Ugh! */
                     72:        char            curgl;
                     73:        char            curgr;
                     74:        char            gsets[4];
                     75: } SavedCursor;
                     76: 
                     77: #define        TEKNUMFONTS     5
                     78: /* Actually there are 5 types of lines, but four are non-solid lines */
                     79: #define        TEKNUMLINES     4
                     80: 
                     81: typedef struct {
                     82:        int     x;
                     83:        int     y;
                     84:        int     fontsize;
                     85:        int     linetype;
                     86: } Tmodes;
                     87: 
                     88: typedef struct {
                     89:        int Twidth;
                     90:        int Theight;
                     91: } T_fontsize;
                     92: 
                     93: typedef struct {
                     94:        Window tbar;                    /* major window                 */
                     95:        Window left;                    /* left hilited window          */
                     96:        Window right;                   /* right hilited window         */
                     97:        int hilited;                    /* in hilite state              */
                     98:        int x;                          /* x position of title          */
                     99:        int y;                          /* y position of title          */
                    100:        int fullwidth;                  /* full width of title          */
                    101:        int width;                      /* width of visible part of title */
                    102: } TitleBar;
                    103: 
                    104: typedef struct {
                    105:        short *bits;
                    106:        int x;
                    107:        int y;
                    108:        int width;
                    109:        int height;
                    110: } BitmapBits;
                    111: 
                    112: typedef struct {
                    113: /* These parameters apply to both windows */
                    114:        Display         *display;       /* X display for screen         */
                    115:        int             respond;        /* socket for responses
                    116:                                           (position report, etc.)      */
                    117:        long            pid;            /* pid of process on far side   */
                    118:        int             uid;            /* user id of actual person     */
                    119:        int             gid;            /* group id of actual person    */
                    120:        int             color;          /* colors used                  */
                    121:        int             foreground;     /* foreground color             */
                    122:        int             background;     /* Background color             */
                    123:        int             cursorcolor;    /* Cursor color                 */
                    124:        int             mousecolor;     /* Mouse color                  */
                    125:        Pixmap          bgndtile;       /* background tile pixmap       */
                    126:        int             border;         /* inner border                 */
                    127:        int             borderwidth;    /* outer border                 */
                    128:        Pixmap          bordertile;     /* tile pixmap for border       */
                    129:        Pixmap          graybordertile; /* tile pixmap for border when
                    130:                                                window is unselected    */
                    131:        Cursor          arrow;          /* arrow cursor                 */
                    132:        int             send_mouse_pos; /* user wants mouse transition  */
                    133:                                        /* and position information     */
                    134:        int             select;         /* xterm selected               */
                    135:        struct timeval  *timeout;       /* timeout value for select     */
                    136:        FontInfo        *titlefont;     /* font info for title font     */
                    137:        int             titleheight;    /* height of title              */
                    138:        int             title_n_size;   /* width on 'n' in title font   */
                    139:        Pixmap          hilitetile;     /* tile pixmap for title hilite */
                    140:        int             autoraise;      /* auto raise window mode       */
                    141:        Window          autowindow;     /* the window to autoraise      */
                    142:        int             timer;          /* timer function               */
                    143:        int             holdoff;        /* delay select and unselects   */
                    144:        int             audiblebell;    /* audible bell mode            */
                    145:        int             visualbell;     /* visual bell mode             */
                    146:        int             visbelldelay;   /* visual bell delay            */
                    147:        int             icon_show;      /* icon currently showing       */
                    148:         int             textundericon;  /* text under icon              */
                    149:         int             bitmapwidth;    /* width of icon bitmap         */
                    150:         int             bitmapheight;   /* height of icon bitmap        */
                    151:         int             icon_text_x;    /* x position of text           */
                    152:         int             icon_text_y;    /* y position of text           */
                    153:        BitmapBits      iconbitmap;     /* bitmap for icon              */
                    154:         int             iconinput;      /* got input while iconified    */
                    155:        int             active_icon;    /* icon is miniature copy       */
                    156:        int             deiconwarp;     /* warp mouse on deiconify      */
                    157:        int             logging;        /* logging mode                 */
                    158:        int             logfd;          /* file descriptor of log       */
                    159:        char            *logfile;       /* log file name                */
                    160:        char            *logstart;      /* current start of log buffer  */
                    161:        int             inhibit;        /* flags for inhibiting changes */
                    162: 
                    163: /* VT window parameters */
                    164:        int             show;           /* window showing               */
                    165:        int             iconunmap;      /* unmapped because of icon     */
                    166:        struct {
                    167:                Window  window;         /* X window id                  */
                    168:                int     width;          /* width of columns             */
                    169:                int     height;         /* height of rows               */
                    170:                int     fullwidth;      /* full width of window         */
                    171:                int     fullheight;     /* full height of window        */
                    172:                int     f_width;        /* width of fonts in pixels     */
                    173:                int     f_height;       /* height of fonts in pixels    */
                    174:                int     titlebar;       /* title bar(s) showing         */
                    175:        } fullVwin, iconVwin, *mappedVwin;
                    176:        Font            fnt_icon;       /* icon font                    */
                    177:        int             minrows;        /* minimun number of rows to
                    178:                                                accommodate scrollbar   */
                    179:        Cursor          curs;           /* cursor resource from X       */
                    180:        /* Terminal fonts must be of the same size and of fixed width */
                    181:        Font            fnt_norm;       /* normal font of terminal      */
                    182:        Font            fnt_bold;       /* bold font of terminal        */
                    183:        int             enbolden;       /* overstrike for bold font     */
                    184:        Vertex          *box;           /* draw unselected cursor       */
                    185: 
                    186:        int             cursor_state;   /* ON or OFF                    */
                    187:        int             cursor_set;     /* requested state              */
                    188:        int             cursor_col;     /* previous cursor column       */
                    189:        int             cursor_row;     /* previous cursor row          */
                    190:        int             cur_col;        /* current cursor column        */
                    191:        int             cur_row;        /* current cursor row           */
                    192:        int             max_col;        /* rightmost column             */
                    193:        int             max_row;        /* bottom row                   */
                    194:        int             top_marg;       /* top line of scrolling region */
                    195:        int             bot_marg;       /* bottom line of  "        "   */
                    196:        int             scrollbar;      /* if > 0, width of scrollbar, and
                    197:                                                scrollbar showing       */
                    198:        int             topline;        /* line number of top, <= 0     */
                    199:        int             savelines;      /* number of lines off top to save */
                    200:        int             scrollinput;    /* scroll to bottom on input    */
                    201:        int             scrollkey;      /* scroll to bottom on key      */
                    202:        
                    203:        ScrnBuf         buf;            /* screen buffer (main)         */
                    204:        ScrnBuf         allbuf;         /* screen buffer (may include
                    205:                                           lines scrolled off top       */
                    206:        ScrnBuf         altbuf;         /* alternate screen buffer      */
                    207:        int             alternate;      /* true if using alternate buf  */
                    208:        ScrollBar       *sb;            /* pointer to scrollbar struct  */
                    209:        int             do_wrap;        /* true if cursor in last column
                    210:                                           and character just output    */
                    211:        int             incopy;         /* 0 if no RasterCopy exposure
                    212:                                           event processed since last
                    213:                                           RasterCopy                   */
                    214:        int             c132;           /* allow change to 132 columns  */
                    215:        int             curses;         /* cludge-ups for more and vi   */
                    216:        int             marginbell;     /* true if margin bell on       */
                    217:        int             nmarginbell;    /* columns from right margin    */
                    218:        int             bellarmed;      /* cursor below bell margin     */
                    219: #ifdef CROCKSCROLL
                    220:        int             scrollincr;     /* scroll increment             */
                    221: #endif
                    222:        int             multiscroll;    /* true if multi-scroll         */
                    223:        int             scrolls;        /* outstanding scroll count     */
                    224:        SavedCursor     sc;             /* data for restore cursor      */
                    225:        TitleBar        title;          /* title bar                    */
                    226:        int             statusline;     /* status line showing          */
                    227:        int             statusheight;   /* status line height           */
                    228:        int             instatus;       /* cursor in status line        */
                    229:        SavedCursor     statussc;       /* status line restore cursor   */
                    230:        int             reversestatus;  /* status line reversed         */
                    231:        char            *winname;       /* name of window (and icons)   */
                    232:        int             winnamelen;     /* length of window name        */
                    233:        int             save_modes[19]; /* save dec private modes       */
                    234:        int             pagemode;       /* true if page mode            */
                    235:        int             pagecnt;        /* count of lines in page mode  */
                    236:        int             pageoverlap;    /* lines to overlap (less one)  */
                    237: 
                    238:        /* Improved VT100 emulation stuff.                              */
                    239:        char            gsets[4];       /* G0 through G3.               */
                    240:        char            curgl;          /* Current GL setting.          */
                    241:        char            curgr;          /* Current GR setting.          */
                    242:        char            curss;          /* Current single shift.        */
                    243:        int             scroll_amt;     /* amount to scroll             */
                    244:        int             refresh_amt;    /* amount to refresh            */
                    245:        int             jumpscroll;     /* whether we should jumpscroll */
                    246: 
                    247: /* Tektronix window parameters */
                    248:        int             Tforeground;    /* foreground color             */
                    249:        int             Tbackground;    /* Background color             */
                    250:        int             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:        Color           colorcells[3];  /* color cells for Tek          */
                    256:        int             Tshow;          /* Tek window showing           */
                    257:        int             Ticonunmap;     /* unmapped because of icon     */
                    258:        int             waitrefresh;    /* postpone refresh             */
                    259:        struct {
                    260:                Window  window;         /* X window id                  */
                    261:                int     width;          /* width of columns             */
                    262:                int     height;         /* height of rows               */
                    263:                int     fullwidth;      /* full width of window         */
                    264:                int     fullheight;     /* full height of window        */
                    265:                int     titlebar;       /* title bar(s) showing         */
                    266:                double  tekscale;       /* scale factor Tek -> vs100    */
                    267:        } fullTwin, iconTwin, *mappedTwin;
                    268:        BitmapBits      Ticonbitmap;    /* bitmap for icon              */
                    269:        Vertex          **Tbox;         /* draw unselected cursor       */
                    270:        int             xorplane;       /* z plane for inverts          */
                    271:        Pattern         linepat[TEKNUMLINES]; /* line patterns          */
                    272:        Font            Tfont[TEKNUMFONTS]; /* Tek fonts                */
                    273:        int             tobaseline[TEKNUMFONTS]; /* top to baseline for
                    274:                                                        each font       */
                    275:        int             TekEmu;         /* true if Tektronix emulation  */
                    276:        int             cur_X;          /* current x                    */
                    277:        int             cur_Y;          /* current y                    */
                    278:        Tmodes          cur;            /* current tek modes            */
                    279:        Tmodes          page;           /* starting tek modes on page   */
                    280:        int             margin;         /* 0 -> margin 1, 1 -> margin 2 */
                    281:        int             pen;            /* current Tektronix pen 0=up, 1=dn */
                    282:        char            *TekGIN;        /* nonzero if Tektronix GIN mode*/
                    283:        TitleBar        Ttitle;         /* title bar                    */
                    284:        char            *Twinname;      /* name of window               */
                    285:        int             Twinnamelen;    /* length of window name        */
                    286: } Screen;
                    287: 
                    288: /* meaning of bits in screen.select flag */
                    289: #define        INWINDOW        01      /* the mouse is in one of the windows */
                    290: #define        FOCUS           02      /* one of the windows is the focus window */
                    291: 
                    292: typedef struct
                    293: {
                    294:        unsigned        offset;         /* status of shift, control, meta */
                    295: #define SHIFT  0x0001
                    296: #define META   0x0002
                    297: #define CONTROL        0x0004
                    298: 
                    299:        unsigned        flags;
                    300: } Keyboard;
                    301: 
                    302: /* define masks for flags */
                    303: #define CAPS_LOCK      0x01
                    304: #define KYPD_APL       0x02
                    305: #define CURSOR_APL     0x04
                    306: 
                    307: 
                    308: #define N_MARGINBELL   10
                    309: #define MAX_TABS       320
                    310: #define TAB_ARRAY_SIZE 10      /* number of ints to provide MAX_TABS bits */
                    311: 
                    312: typedef unsigned Tabs [TAB_ARRAY_SIZE];
                    313: 
                    314: 
                    315: #define BUF_SIZE 4096
                    316: 
                    317: typedef struct
                    318: {
                    319:        Keyboard        keyboard;       /* terminal keyboard            */
                    320:        Screen          screen;         /* terminal screeen             */
                    321:        unsigned        flags;          /* mode flags                   */
                    322:        unsigned        initflags;      /* initial mode flags           */
                    323:        Tabs            tabs;           /* tabstops of the terminal     */
                    324: } Terminal;
                    325: 
                    326: 
                    327: /* masks for terminal flags */
                    328: 
                    329: #define INVERSE                0x01    /* invert the characters to be output */
                    330: #define UNDERLINE      0x02    /* true if underlining */
                    331: #define BOLD           0x04
                    332: #define WRAPAROUND     0x08
                    333: #define REVERSE_VIDEO  0x10    /* true if screen white on black */
                    334: #define ORIGIN         0x20    /* true if in origin mode */
                    335: #define INSERT         0x40    /* true if in insert mode */
                    336: #define SMOOTHSCROLL   0x80    /* true if in smooth scroll mode */
                    337: #define AUTOREPEAT     0x100   /* true if in autorepeat mode */
                    338: #define IN132COLUMNS   0x200   /* true if in 132 column mode */
                    339: #define LINEFEED       0x400
                    340: #define        REVERSEWRAP     0x800   /* true if reverse wraparound mode */
                    341: #define ICONINPUT      0x1000  /* true if mini icon accepts kbd input */
                    342: 
                    343: #define        ATTRIBUTES      0x07    /* attributes mask */
                    344: #define CHAR           0177
                    345: 
                    346: #define VWindow(screen)                (screen->mappedVwin->window)
                    347: #define TWindow(screen)                (screen->mappedTwin->window)
                    348: #define Width(screen)          (screen->mappedVwin->width)
                    349: #define Height(screen)         (screen->mappedVwin->height)
                    350: #define FullWidth(screen)      (screen->mappedVwin->fullwidth)
                    351: #define FullHeight(screen)     (screen->mappedVwin->fullheight)
                    352: #define FontWidth(screen)      (screen->mappedVwin->f_width)
                    353: #define FontHeight(screen)     (screen->mappedVwin->f_height)
                    354: #define TWidth(screen)         (screen->mappedTwin->width)
                    355: #define THeight(screen)                (screen->mappedTwin->height)
                    356: #define TFullWidth(screen)     (screen->mappedTwin->fullwidth)
                    357: #define TFullHeight(screen)    (screen->mappedTwin->fullheight)
                    358: #define TekScale(screen)       (screen->mappedTwin->tekscale)
                    359: #define Titlebar(screen)       (screen->mappedVwin->titlebar)
                    360: #define TTitlebar(screen)      (screen->mappedTwin->titlebar)
                    361: #define ActiveIcon(screen)     (screen->active_icon && \
                    362:                                (screen->mappedVwin == &screen->iconVwin))
                    363: #define TActiveIcon(screen)    (screen->active_icon && \
                    364:                                (screen->mappedTwin == &screen->iconTwin))
                    365: 
                    366: #define CursorX(screen,col) ((col) * FontWidth(screen) + screen->border)
                    367: #define CursorY(screen,row) ((screen->instatus ? \
                    368:                        ((row) * FontHeight(screen) + 1)\
                    369:                        : (((row) - screen->topline) * FontHeight(screen))) +\
                    370:                        screen->border + Titlebar(screen))
                    371: 
                    372: #define TICONWINDOWEVENTS  (ExposeWindow | ButtonPressed)
                    373: 
                    374: #define        ICONWINDOWEVENTS   (TICONWINDOWEVENTS | ExposeRegion | ExposeCopy)
                    375:                                 
                    376: #define ICONINPUTEVENTS        (KeyPressed | EnterWindow | LeaveWindow | FocusChange)
                    377: 
                    378: #define        TWINDOWEVENTS   (KeyPressed | ExposeWindow | ButtonPressed |\
                    379:                         ButtonReleased | UnmapWindow | EnterWindow |\
                    380:                         LeaveWindow | FocusChange)
                    381: 
                    382: #define        WINDOWEVENTS    (TWINDOWEVENTS | ExposeRegion | ExposeCopy)
                    383: 
                    384: #define TEK_LINK_BLOCK_SIZE 1024
                    385: 
                    386: typedef struct Tek_Link
                    387: {
                    388:        struct Tek_Link *next;  /* pointer to next TekLink in list
                    389:                                   NULL <=> this is last TekLink */
                    390:        short count;
                    391:        char *ptr;
                    392:        char data [TEK_LINK_BLOCK_SIZE];
                    393: } TekLink;
                    394: 
                    395: /* flags for cursors */
                    396: #define        OFF             0
                    397: #define        ON              1
                    398: #define        CLEAR           0
                    399: #define        TOGGLE          1
                    400: 
                    401: /* flags for color */
                    402: #define        C_FOREGROUND    0x01
                    403: #define        C_BACKGROUND    0x02
                    404: #define        C_FBMASK        0x03
                    405: #define        C_CURSOR        0x04
                    406: #define        C_MOUSE         0x08
                    407: #define        C_BORDER        0x10
                    408: 
                    409: /* flags for inhibit */
                    410: #define        I_LOG           0x01
                    411: #define        I_SIGNAL        0x02
                    412: #define        I_TEK           0x04
                    413: 
                    414: extern Bitmap make_icon();
                    415: extern Cursor make_tcross();
                    416: extern Cursor make_xterm();
                    417: extern Cursor make_wait();
                    418: 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.