/nx-3.5.0/nx-X11/programs/xterm/ptyx.h
C Header | 2016 lines | 1550 code | 272 blank | 194 comment | 72 complexity | 609703184c8aef73549346fe1cee6ecb MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0, LGPL-2.0
Large files files are truncated, but you can click here to view the full file
- /* $XTermId: ptyx.h,v 1.390 2005/11/03 13:17:28 tom Exp $ */
- /*
- * $Xorg: ptyx.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
- */
- /* $XFree86: xc/programs/xterm/ptyx.h,v 3.127 2005/11/03 13:17:28 dickey Exp $ */
- /*
- * Copyright 1999-2004,2005 by Thomas E. Dickey
- *
- * All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above copyright
- * holders shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization.
- *
- *
- * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- *
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital Equipment
- * Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- *
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
- #ifndef included_ptyx_h
- #define included_ptyx_h 1
- #ifdef HAVE_CONFIG_H
- #include <xtermcfg.h>
- #endif
- /* ptyx.h */
- /* @(#)ptyx.h X10/6.6 11/10/86 */
- #include <X11/IntrinsicP.h>
- #include <X11/Shell.h> /* for XtNdieCallback, etc. */
- #include <X11/StringDefs.h> /* for standard resource names */
- #include <X11/Xmu/Misc.h> /* For Max() and Min(). */
- #include <X11/Xfuncs.h>
- #include <X11/Xosdefs.h>
- #include <X11/Xmu/Converters.h>
- #ifdef XRENDERFONT
- #include <X11/Xft/Xft.h>
- #endif
- /* adapted from IntrinsicI.h */
- #define MyStackAlloc(size, stack_cache_array) \
- ((size) <= sizeof(stack_cache_array) \
- ? (XtPointer)(stack_cache_array) \
- : (XtPointer)malloc((unsigned)(size)))
- #define MyStackFree(pointer, stack_cache_array) \
- if ((pointer) != ((char *)(stack_cache_array))) free(pointer)
- /* adapted from vile (vi-like-emacs) */
- #define TypeCallocN(type,n) (type *)calloc((n), sizeof(type))
- #define TypeCalloc(type) TypeCalloc(type,1)
- #define TypeMallocN(type,n) (type *)malloc(sizeof(type) * (n))
- #define TypeMalloc(type) TypeMallocN(type,0)
- #define TypeRealloc(type,n,p) (type *)realloc(p, (n) * sizeof(type))
- /* use these to allocate partly-structured data */
- #define CastMallocN(type,n) (type *)malloc(sizeof(type) + (n))
- #define CastMalloc(type) CastMallocN(type,0)
- /*
- ** System V definitions
- */
- #ifdef att
- #define ATT
- #endif
- #ifdef SVR4
- #undef SYSV /* predefined on Solaris 2.4 */
- #define SYSV /* SVR4 is (approx) superset of SVR3 */
- #define ATT
- #endif
- #ifdef SYSV
- #ifdef X_NOT_POSIX
- #if !defined(CRAY) && !defined(SVR4)
- #define dup2(fd1,fd2) ((fd1 == fd2) ? fd1 : \
- (close(fd2), fcntl(fd1, F_DUPFD, fd2)))
- #endif
- #endif
- #endif /* SYSV */
- /*
- * Newer versions of <X11/Xft/Xft.h> have a version number. We use certain
- * features from that.
- */
- #if defined(XRENDERFONT) && defined(XFT_VERSION) && XFT_VERSION >= 20100
- #define HAVE_TYPE_FCCHAR32 1 /* compatible: XftChar16 */
- #define HAVE_TYPE_XFTCHARSPEC 1 /* new type XftCharSpec */
- #endif
- /*
- ** Definitions to simplify ifdef's for pty's.
- */
- #define USE_PTY_DEVICE 1
- #define USE_PTY_SEARCH 1
- #if defined(__osf__) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
- #undef USE_PTY_DEVICE
- #undef USE_PTY_SEARCH
- #define USE_PTS_DEVICE 1
- #elif defined(VMS)
- #undef USE_PTY_DEVICE
- #undef USE_PTY_SEARCH
- #elif defined(PUCC_PTYD)
- #undef USE_PTY_SEARCH
- #endif
- #if defined(SYSV) && defined(i386) && !defined(SVR4)
- #define ATT
- #define USE_HANDSHAKE 1
- #define USE_ISPTS_FLAG 1
- #endif
- #if (defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
- #define USE_USG_PTYS
- #define USE_HANDSHAKE 0 /* "recent" Linux systems do not require handshaking */
- #elif (defined(ATT) && !defined(__sgi)) || defined(__MVS__) || (defined(SYSV) && defined(i386))
- #define USE_USG_PTYS
- #else
- #define USE_HANDSHAKE 1
- #endif
- /*
- * More systems than not require pty-handshaking.
- */
- #ifndef USE_HANDSHAKE
- #define USE_HANDSHAKE 1
- #endif
- /*
- ** allow for mobility of the pty master/slave directories
- */
- #ifndef PTYDEV
- #if defined(__hpux)
- #define PTYDEV "/dev/ptym/ptyxx"
- #elif defined(__MVS__)
- #define PTYDEV "/dev/ptypxxxx"
- #else
- #define PTYDEV "/dev/ptyxx"
- #endif
- #endif /* !PTYDEV */
- #ifndef TTYDEV
- #if defined(__hpux)
- #define TTYDEV "/dev/pty/ttyxx"
- #elif defined(__MVS__)
- #define TTYDEV "/dev/ptypxxxx"
- #elif defined(USE_PTS_DEVICE)
- #define TTYDEV "/dev/pts/0"
- #else
- #define TTYDEV "/dev/ttyxx"
- #endif
- #endif /* !TTYDEV */
- #ifndef PTYCHAR1
- #ifdef __hpux
- #define PTYCHAR1 "zyxwvutsrqp"
- #else /* !__hpux */
- #ifdef __UNIXOS2__
- #define PTYCHAR1 "pq"
- #else
- #define PTYCHAR1 "pqrstuvwxyzPQRSTUVWXYZ"
- #endif /* !__UNIXOS2__ */
- #endif /* !__hpux */
- #endif /* !PTYCHAR1 */
- #ifndef PTYCHAR2
- #ifdef __hpux
- #define PTYCHAR2 "fedcba9876543210"
- #else /* !__hpux */
- #if defined(__DragonFly__) || defined(__FreeBSD__)
- #define PTYCHAR2 "0123456789abcdefghijklmnopqrstuv"
- #else /* !__FreeBSD__ */
- #define PTYCHAR2 "0123456789abcdef"
- #endif /* !__FreeBSD__ */
- #endif /* !__hpux */
- #endif /* !PTYCHAR2 */
- #ifndef TTYFORMAT
- #if defined(CRAY)
- #define TTYFORMAT "/dev/ttyp%03d"
- #elif defined(__MVS__)
- #define TTYFORMAT "/dev/ttyp%04d"
- #else
- #define TTYFORMAT "/dev/ttyp%d"
- #endif
- #endif /* TTYFORMAT */
- #ifndef PTYFORMAT
- #ifdef CRAY
- #define PTYFORMAT "/dev/pty/%03d"
- #elif defined(__MVS__)
- #define PTYFORMAT "/dev/ptyp%04d"
- #else
- #define PTYFORMAT "/dev/ptyp%d"
- #endif
- #endif /* PTYFORMAT */
- #ifndef PTYCHARLEN
- #ifdef CRAY
- #define PTYCHARLEN 3
- #elif defined(__MVS__)
- #define PTYCHARLEN 8 /* OS/390 stores, e.g. ut_id="ttyp1234" */
- #else
- #define PTYCHARLEN 2
- #endif
- #endif
- #ifndef MAXPTTYS
- #ifdef CRAY
- #define MAXPTTYS 256
- #else
- #define MAXPTTYS 2048
- #endif
- #endif
- /* Until the translation manager comes along, I have to do my own translation of
- * mouse events into the proper routines. */
- typedef enum {NORMAL, LEFTEXTENSION, RIGHTEXTENSION} EventMode;
- /*
- * The origin of a screen is 0, 0. Therefore, the number of rows
- * on a screen is screen->max_row + 1, and similarly for columns.
- */
- #define MaxCols(screen) ((screen)->max_col + 1)
- #define MaxRows(screen) ((screen)->max_row + 1)
- typedef unsigned char Char; /* to support 8 bit chars */
- typedef Char *ScrnPtr;
- typedef ScrnPtr *ScrnBuf;
- #define CharOf(n) ((unsigned char)(n))
- /*
- * ANSI emulation, special character codes
- */
- #define INQ 0x05
- #define BEL 0x07
- #define FF 0x0C /* C0, C1 control names */
- #define LS1 0x0E
- #define LS0 0x0F
- #define NAK 0x15
- #define CAN 0x18
- #define SUB 0x1A
- #define ESC 0x1B
- #define XPOUND 0x1E /* internal mapping for '#' */
- #define US 0x1F
- #define DEL 0x7F
- #define RI 0x8D
- #define SS2 0x8E
- #define SS3 0x8F
- #define DCS 0x90
- #define SPA 0x96
- #define EPA 0x97
- #define SOS 0x98
- #define OLDID 0x9A /* ESC Z */
- #define CSI 0x9B
- #define ST 0x9C
- #define OSC 0x9D
- #define PM 0x9E
- #define APC 0x9F
- #define RDEL 0xFF
- #define MIN_DECID 52 /* can emulate VT52 */
- #define MAX_DECID 420 /* ...through VT420 */
- #ifndef DFT_DECID
- #define DFT_DECID "vt100" /* default VT100 */
- #endif
- #ifndef DFT_KBD_DIALECT
- #define DFT_KBD_DIALECT "B" /* default USASCII */
- #endif
- /* constants used for utf8 mode */
- #define UCS_REPL 0xfffd
- #define UCS_LIMIT 0x80000000U /* both limit and flag for non-UCS */
- #define TERMCAP_SIZE 1500 /* 1023 is standard; 'screen' exceeds */
- #define NMENUFONTS 9 /* font entries in fontMenu */
- #define NBOX 5 /* Number of Points in box */
- #define NPARAM 30 /* Max. parameters */
- typedef struct {
- char *opt;
- char *desc;
- } OptionHelp;
- typedef struct {
- unsigned char a_type; /* CSI, etc., see unparseq() */
- unsigned char a_pintro; /* private-mode char, if any */
- unsigned char a_inters; /* special (before final-char) */
- unsigned char a_final; /* final-char */
- short a_nparam; /* # of parameters */
- short a_param[NPARAM]; /* Parameters */
- } ANSI;
- #define TEK_FONT_LARGE 0
- #define TEK_FONT_2 1
- #define TEK_FONT_3 2
- #define TEK_FONT_SMALL 3
- #define TEKNUMFONTS 4
- /* Actually there are 5 types of lines, but four are non-solid lines */
- #define TEKNUMLINES 4
- typedef struct {
- int x;
- int y;
- int fontsize;
- unsigned linetype;
- } Tmodes;
- typedef struct {
- int Twidth;
- int Theight;
- } T_fontsize;
- typedef struct {
- short *bits;
- int x;
- int y;
- int width;
- int height;
- } BitmapBits;
- #define SAVELINES 64 /* default # lines to save */
- #define SCROLLLINES 1 /* default # lines to scroll */
- #define EXCHANGE(a,b,tmp) tmp = a; a = b; b = tmp
- /***====================================================================***/
- #if (XtSpecificationRelease < 6)
- #ifndef NO_ACTIVE_ICON
- #define NO_ACTIVE_ICON 1 /* Note: code relies on an X11R6 function */
- #endif
- #endif
- #ifndef OPT_AIX_COLORS
- #define OPT_AIX_COLORS 1 /* true if xterm is configured with AIX (16) colors */
- #endif
- #ifndef OPT_BLINK_CURS
- #define OPT_BLINK_CURS 1 /* true if xterm has blinking cursor capability */
- #endif
- #ifndef OPT_BLINK_TEXT
- #define OPT_BLINK_TEXT OPT_BLINK_CURS /* true if xterm has blinking text capability */
- #endif
- #ifndef OPT_BOX_CHARS
- #define OPT_BOX_CHARS 1 /* true if xterm can simulate box-characters */
- #endif
- #ifndef OPT_BROKEN_OSC
- #ifdef linux
- #define OPT_BROKEN_OSC 1 /* man console_codes, 1st paragraph - cf: ECMA-48 */
- #else
- #define OPT_BROKEN_OSC 0 /* true if xterm allows Linux's broken OSC parsing */
- #endif
- #endif
- #ifndef OPT_BROKEN_ST
- #define OPT_BROKEN_ST 1 /* true if xterm allows old/broken OSC parsing */
- #endif
- #ifndef OPT_C1_PRINT
- #define OPT_C1_PRINT 1 /* true if xterm allows C1 controls to be printable */
- #endif
- #ifndef OPT_CLIP_BOLD
- #define OPT_CLIP_BOLD 1 /* true if xterm uses clipping to avoid bold-trash */
- #endif
- #ifndef OPT_COLOR_CLASS
- #define OPT_COLOR_CLASS 1 /* true if xterm uses separate color-resource classes */
- #endif
- #ifndef OPT_COLOR_RES
- #define OPT_COLOR_RES 1 /* true if xterm delays color-resource evaluation */
- #undef OPT_COLOR_RES2
- #endif
- #ifndef OPT_COLOR_RES2
- #define OPT_COLOR_RES2 OPT_COLOR_RES /* true to avoid using extra resources */
- #endif
- #ifndef OPT_DABBREV
- #define OPT_DABBREV 0 /* dynamic abbreviations */
- #endif
- #ifndef OPT_DEC_CHRSET
- #define OPT_DEC_CHRSET 1 /* true if xterm is configured for DEC charset */
- #endif
- #ifndef OPT_DEC_LOCATOR
- #define OPT_DEC_LOCATOR 0 /* true if xterm supports VT220-style mouse events */
- #endif
- #ifndef OPT_DEC_RECTOPS
- #define OPT_DEC_RECTOPS 0 /* true if xterm is configured for VT420 rectangles */
- #endif
- #ifndef OPT_DEC_SOFTFONT
- #define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
- #endif
- #ifndef OPT_EBCDIC
- #ifdef __MVS__
- #define OPT_EBCDIC 1
- #else
- #define OPT_EBCDIC 0
- #endif
- #endif
- #ifndef OPT_HP_FUNC_KEYS
- #define OPT_HP_FUNC_KEYS 0 /* true if xterm supports HP-style function keys */
- #endif
- #ifndef OPT_I18N_SUPPORT
- #if (XtSpecificationRelease >= 5)
- #define OPT_I18N_SUPPORT 1 /* true if xterm uses internationalization support */
- #else
- #define OPT_I18N_SUPPORT 0
- #endif
- #endif
- #ifndef OPT_INITIAL_ERASE
- #define OPT_INITIAL_ERASE 1 /* use pty's erase character if it's not 128 */
- #endif
- #ifndef OPT_INPUT_METHOD
- #if (XtSpecificationRelease >= 6)
- #define OPT_INPUT_METHOD 1 /* true if xterm uses input-method support */
- #else
- #define OPT_INPUT_METHOD 0
- #endif
- #endif
- #ifndef OPT_ISO_COLORS
- #define OPT_ISO_COLORS 1 /* true if xterm is configured with ISO colors */
- #endif
- #ifndef OPT_256_COLORS
- #define OPT_256_COLORS 0 /* true if xterm is configured with 256 colors */
- #endif
- #ifndef OPT_88_COLORS
- #define OPT_88_COLORS 0 /* true if xterm is configured with 88 colors */
- #endif
- #ifndef OPT_HIGHLIGHT_COLOR
- #define OPT_HIGHLIGHT_COLOR 1 /* true if xterm supports color highlighting */
- #endif
- #ifndef OPT_LOAD_VTFONTS
- #define OPT_LOAD_VTFONTS 0 /* true if xterm has load-vt-fonts() action */
- #endif
- #ifndef OPT_LUIT_PROG
- #define OPT_LUIT_PROG 0 /* true if xterm supports luit */
- #endif
- #ifndef OPT_MAXIMIZE
- #define OPT_MAXIMIZE 1 /* add actions for iconify ... maximize */
- #endif
- #ifndef OPT_MINI_LUIT
- #define OPT_MINI_LUIT 0 /* true if xterm supports built-in mini-luit */
- #endif
- #ifndef OPT_MOD_FKEYS
- #define OPT_MOD_FKEYS 1 /* modify cursor- and function-keys in normal mode */
- #endif
- #ifndef OPT_NUM_LOCK
- #define OPT_NUM_LOCK 1 /* use NumLock key only for numeric-keypad */
- #endif
- #ifndef OPT_PASTE64
- #define OPT_PASTE64 0 /* program control of select/paste via base64 */
- #endif
- #ifndef OPT_PC_COLORS
- #define OPT_PC_COLORS 1 /* true if xterm supports PC-style (bold) colors */
- #endif
- #ifndef OPT_PTY_HANDSHAKE
- #define OPT_PTY_HANDSHAKE USE_HANDSHAKE /* avoid pty races on older systems */
- #endif
- #ifndef OPT_PRINT_COLORS
- #define OPT_PRINT_COLORS 1 /* true if we print color information */
- #endif
- #ifndef OPT_READLINE
- #define OPT_READLINE 0 /* mouse-click/paste support for readline */
- #endif
- #ifndef OPT_RENDERFONT
- #ifdef XRENDERFONT
- #define OPT_RENDERFONT 1
- #else
- #define OPT_RENDERFONT 0
- #endif
- #endif
- #ifndef OPT_RENDERWIDE
- #if OPT_RENDERFONT && OPT_WIDE_CHARS && defined(HAVE_TYPE_XFTCHARSPEC)
- #define OPT_RENDERWIDE 1
- #else
- #define OPT_RENDERWIDE 0
- #endif
- #endif
- #ifndef OPT_SAME_NAME
- #define OPT_SAME_NAME 1 /* suppress redundant updates of title, icon, etc. */
- #endif
- #ifndef OPT_SCO_FUNC_KEYS
- #define OPT_SCO_FUNC_KEYS 0 /* true if xterm supports SCO-style function keys */
- #endif
- #ifndef OPT_SESSION_MGT
- #if defined(XtNdieCallback) && defined(XtNsaveCallback)
- #define OPT_SESSION_MGT 1
- #else
- #define OPT_SESSION_MGT 0
- #endif
- #endif
- #ifndef OPT_SHIFT_FONTS
- #define OPT_SHIFT_FONTS 1 /* true if xterm interprets fontsize-shifting */
- #endif
- #ifndef OPT_SUNPC_KBD
- #define OPT_SUNPC_KBD 1 /* true if xterm supports Sun/PC keyboard map */
- #endif
- #ifndef OPT_TCAP_QUERY
- #define OPT_TCAP_QUERY 0 /* true for experimental termcap query */
- #endif
- #ifndef OPT_TEK4014
- #define OPT_TEK4014 1 /* true if we're using tek4014 emulation */
- #endif
- #ifndef OPT_TOOLBAR
- #define OPT_TOOLBAR 0 /* true if xterm supports toolbar menus */
- #endif
- #ifndef OPT_TRACE
- #define OPT_TRACE 0 /* true if we're using debugging traces */
- #endif
- #ifndef OPT_VT52_MODE
- #define OPT_VT52_MODE 1 /* true if xterm supports VT52 emulation */
- #endif
- #ifndef OPT_WIDE_CHARS
- #define OPT_WIDE_CHARS 0 /* true if xterm supports 16-bit characters */
- #endif
- #ifndef OPT_XMC_GLITCH
- #define OPT_XMC_GLITCH 0 /* true if xterm supports xmc (magic cookie glitch) */
- #endif
- #ifndef OPT_ZICONBEEP
- #define OPT_ZICONBEEP 1 /* true if xterm supports "-ziconbeep" option */
- #endif
- /***====================================================================***/
- #if OPT_AIX_COLORS && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to support AIX colors */
- #undef OPT_AIX_COLORS
- #define OPT_AIX_COLORS 0
- #endif
- #if OPT_COLOR_RES && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to support ColorRes logic */
- #undef OPT_COLOR_RES
- #define OPT_COLOR_RES 0
- #endif
- #if OPT_COLOR_RES2 && !(OPT_256_COLORS || OPT_88_COLORS)
- /* You must have 88/256 colors to need fake-resource logic */
- #undef OPT_COLOR_RES2
- #define OPT_COLOR_RES2 0
- #endif
- #if OPT_PASTE64 && !OPT_READLINE
- /* OPT_PASTE64 uses logic from OPT_READLINE */
- #undef OPT_READLINE
- #define OPT_READLINE 1
- #endif
- #if OPT_PC_COLORS && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to support PC colors */
- #undef OPT_PC_COLORS
- #define OPT_PC_COLORS 0
- #endif
- #if OPT_PRINT_COLORS && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to be able to print them */
- #undef OPT_PRINT_COLORS
- #define OPT_PRINT_COLORS 0
- #endif
- #if OPT_256_COLORS && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to support 256 colors */
- #undef OPT_256_COLORS
- #define OPT_256_COLORS 0
- #endif
- #if OPT_88_COLORS && !OPT_ISO_COLORS
- /* You must have ANSI/ISO colors to support 88 colors */
- #undef OPT_88_COLORS
- #define OPT_88_COLORS 0
- #endif
- #if OPT_88_COLORS && OPT_256_COLORS
- /* 256 colors supersedes 88 colors */
- #undef OPT_88_COLORS
- #define OPT_88_COLORS 0
- #endif
- /***====================================================================***/
- /*
- * Indices for menu_font_names[][]
- */
- typedef enum {
- fNorm = 0
- , fBold
- #if OPT_WIDE_CHARS
- , fWide
- , fWBold
- #endif
- , fMAX
- } VTFontEnum;
- /* indices for the normal terminal colors in screen.Tcolors[] */
- typedef enum {
- TEXT_FG = 0 /* text foreground */
- , TEXT_BG = 1 /* text background */
- , TEXT_CURSOR = 2 /* text cursor */
- , MOUSE_FG = 3 /* mouse foreground */
- , MOUSE_BG = 4 /* mouse background */
- #if OPT_TEK4014
- , TEK_FG = 5 /* tektronix foreground */
- , TEK_BG = 6 /* tektronix background */
- #endif
- #if OPT_HIGHLIGHT_COLOR
- , HIGHLIGHT_BG = 7 /* highlight background */
- #endif
- #if OPT_TEK4014
- , TEK_CURSOR = 8 /* tektronix cursor */
- #endif
- , NCOLORS /* total number of colors */
- } TermColors;
- #define COLOR_DEFINED(s,w) ((s)->which & (1<<(w)))
- #define COLOR_VALUE(s,w) ((s)->colors[w])
- #define SET_COLOR_VALUE(s,w,v) (((s)->colors[w] = (v)), ((s)->which |= (1<<(w))))
- #define COLOR_NAME(s,w) ((s)->names[w])
- #define SET_COLOR_NAME(s,w,v) (((s)->names[w] = (v)), ((s)->which |= (1<<(w))))
- #define UNDEFINE_COLOR(s,w) ((s)->which &= (~((w)<<1)))
- /***====================================================================***/
- #if OPT_ISO_COLORS
- #define if_OPT_ISO_COLORS(screen, code) if(screen->colorMode) code
- #define TERM_COLOR_FLAGS(xw) ((xw)->flags & (FG_COLOR|BG_COLOR))
- #define COLOR_0 0
- #define COLOR_1 1
- #define COLOR_2 2
- #define COLOR_3 3
- #define COLOR_4 4
- #define COLOR_5 5
- #define COLOR_6 6
- #define COLOR_7 7
- #define COLOR_8 8
- #define COLOR_9 9
- #define COLOR_10 10
- #define COLOR_11 11
- #define COLOR_12 12
- #define COLOR_13 13
- #define COLOR_14 14
- #define COLOR_15 15
- #define MIN_ANSI_COLORS 16
- #if OPT_256_COLORS
- # define NUM_ANSI_COLORS 256
- #elif OPT_88_COLORS
- # define NUM_ANSI_COLORS 88
- #else
- # define NUM_ANSI_COLORS MIN_ANSI_COLORS
- #endif
- #if NUM_ANSI_COLORS > MIN_ANSI_COLORS
- # define OPT_EXT_COLORS 1
- #else
- # define OPT_EXT_COLORS 0
- #endif
- #define COLOR_BD (NUM_ANSI_COLORS) /* BOLD */
- #define COLOR_UL (NUM_ANSI_COLORS+1) /* UNDERLINE */
- #define COLOR_BL (NUM_ANSI_COLORS+2) /* BLINK */
- #define COLOR_RV (NUM_ANSI_COLORS+3) /* REVERSE */
- #define MAXCOLORS (NUM_ANSI_COLORS+4)
- #ifndef DFT_COLORMODE
- #define DFT_COLORMODE TRUE /* default colorMode resource */
- #endif
- #define ReverseOrHilite(screen,flags,hilite) \
- (( screen->colorRVMode && hilite ) || \
- ( !screen->colorRVMode && \
- (( (flags & INVERSE) && !hilite) || \
- (!(flags & INVERSE) && hilite)) ))
- /* Define a fake XK code, we need it for the fake color response in
- * xtermcapKeycode(). */
- #if OPT_TCAP_QUERY
- # define XK_COLORS 0x0003
- #endif
- #else /* !OPT_ISO_COLORS */
- #define if_OPT_ISO_COLORS(screen, code) /* nothing */
- #define TERM_COLOR_FLAGS(xw) 0
- #define ReverseOrHilite(screen,flags,hilite) \
- (( (flags & INVERSE) && !hilite) || \
- (!(flags & INVERSE) && hilite))
- #endif /* OPT_ISO_COLORS */
- #if OPT_AIX_COLORS
- #define if_OPT_AIX_COLORS(screen, code) if(screen->colorMode) code
- #else
- #define if_OPT_AIX_COLORS(screen, code) /* nothing */
- #endif
- #if OPT_256_COLORS || OPT_88_COLORS
- # define if_OPT_EXT_COLORS(screen, code) if(screen->colorMode) code
- # define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /* nothing */
- #elif OPT_ISO_COLORS
- # define if_OPT_EXT_COLORS(screen, code) /* nothing */
- # define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) if(screen->colorMode) code
- #else
- # define if_OPT_EXT_COLORS(screen, code) /* nothing */
- # define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /*nothing*/
- #endif
- #define COLOR_RES_NAME(root) "color" root
- #if OPT_COLOR_CLASS
- #define COLOR_RES_CLASS(root) "Color" root
- #else
- #define COLOR_RES_CLASS(root) XtCForeground
- #endif
- #if OPT_COLOR_RES
- #define COLOR_RES(root,offset,value) Sres(COLOR_RES_NAME(root), COLOR_RES_CLASS(root), offset.resource, value)
- #define COLOR_RES2(name,class,offset,value) Sres(name, class, offset.resource, value)
- #else
- #define COLOR_RES(root,offset,value) Cres(COLOR_RES_NAME(root), COLOR_RES_CLASS(root), offset, value)
- #define COLOR_RES2(name,class,offset,value) Cres(name, class, offset, value)
- #endif
- /***====================================================================***/
- #if OPT_DEC_CHRSET
- #define if_OPT_DEC_CHRSET(code) code
- /* Use 2 bits for encoding the double high/wide sense of characters */
- #define CSET_SWL 0
- #define CSET_DHL_TOP 1
- #define CSET_DHL_BOT 2
- #define CSET_DWL 3
- #define NUM_CHRSET 8 /* normal/bold and 4 CSET_xxx values */
- /* Use remaining bits for encoding the other character-sets */
- #define CSET_NORMAL(code) ((code) == CSET_SWL)
- #define CSET_DOUBLE(code) (!CSET_NORMAL(code) && !CSET_EXTEND(code))
- #define CSET_EXTEND(code) ((code) > CSET_DWL)
- /* for doublesize characters, the first cell in a row holds the info */
- #define SCRN_ROW_CSET(screen,row) (SCRN_BUF_CSETS((screen), row)[0])
- #define CurMaxCol(screen, row) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? (screen->max_col / 2) \
- : (screen->max_col))
- #define CurCursorX(screen, row, col) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? CursorX(screen, 2*(col)) \
- : CursorX(screen, (col)))
- #define CurFontWidth(screen, row) \
- (CSET_DOUBLE(SCRN_ROW_CSET(screen, row)) \
- ? 2*FontWidth(screen) \
- : FontWidth(screen))
- #else
- #define if_OPT_DEC_CHRSET(code) /*nothing*/
- #define CurMaxCol(screen, row) screen->max_col
- #define CurCursorX(screen, row, col) CursorX(screen, col)
- #define CurFontWidth(screen, row) FontWidth(screen)
- #endif
- #if OPT_LUIT_PROG && !OPT_WIDE_CHARS
- #error Luit requires the wide-chars configuration
- #endif
- /* the number of pointers per row in 'ScrnBuf' */
- #if OPT_ISO_COLORS || OPT_DEC_CHRSET || OPT_WIDE_CHARS
- #define MAX_PTRS term->num_ptrs
- #else
- #define MAX_PTRS (OFF_ATTRS+1)
- #endif
- #define BUF_HEAD 1
- /* the number that point to Char data */
- #define BUF_PTRS (MAX_PTRS - BUF_HEAD)
- /***====================================================================***/
- #if OPT_EBCDIC
- extern int E2A(int);
- extern int A2E(int);
- #else
- #define E2A(a) (a)
- #define A2E(a) (a)
- #endif
- #define CONTROL(a) (A2E(E2A(a)&037))
- /***====================================================================***/
- #if OPT_TEK4014
- #define TEK4014_ACTIVE(screen) ((screen)->TekEmu)
- #define CURRENT_EMU_VAL(screen,tek,vt) (TEK4014_ACTIVE(screen) ? tek : vt)
- #define CURRENT_EMU(screen) CURRENT_EMU_VAL(screen, (Widget)tekWidget, (Widget)term)
- #else
- #define TEK4014_ACTIVE(screen) 0
- #define CURRENT_EMU_VAL(screen,tek,vt) (vt)
- #define CURRENT_EMU(screen) ((Widget)term)
- #endif
- /***====================================================================***/
- #if OPT_TOOLBAR
- #define SHELL_OF(widget) XtParent(XtParent(widget))
- #else
- #define SHELL_OF(widget) XtParent(widget)
- #endif
- /***====================================================================***/
- #if OPT_VT52_MODE
- #define if_OPT_VT52_MODE(screen, code) if(screen->vtXX_level == 0) code
- #else
- #define if_OPT_VT52_MODE(screen, code) /* nothing */
- #endif
- /***====================================================================***/
- #if OPT_XMC_GLITCH
- #define if_OPT_XMC_GLITCH(screen, code) if(screen->xmc_glitch) code
- #define XMC_GLITCH 1 /* the character we'll show */
- #define XMC_FLAGS (INVERSE|UNDERLINE|BOLD)
- #else
- #define if_OPT_XMC_GLITCH(screen, code) /* nothing */
- #endif
- /***====================================================================***/
- #if OPT_WIDE_CHARS
- #define if_OPT_WIDE_CHARS(screen, code) if(screen->wide_chars) code
- #define PAIRED_CHARS(a,b) a,b
- typedef unsigned IChar; /* for 8 or 16-bit characters, plus flag */
- #else
- #define if_OPT_WIDE_CHARS(screen, code) /* nothing */
- #define PAIRED_CHARS(a,b) a
- typedef unsigned char IChar; /* for 8-bit characters */
- #endif
- /***====================================================================***/
- #ifndef RES_OFFSET
- #define RES_OFFSET(offset) XtOffsetOf(XtermWidgetRec, offset)
- #endif
- #define RES_NAME(name) name
- #define RES_CLASS(name) name
- #define Bres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRBoolean, sizeof(Boolean), \
- RES_OFFSET(offset), XtRImmediate, (XtPointer) dftvalue}
- #define Cres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRPixel, sizeof(Pixel), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
- #define Tres(name, class, offset, dftvalue) \
- COLOR_RES2(name, class, screen.Tcolors[offset], dftvalue) \
- #define Fres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRFontStruct, sizeof(XFontStruct *), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
- #define Ires(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRInt, sizeof(int), \
- RES_OFFSET(offset), XtRImmediate, (XtPointer) dftvalue}
- #define Dres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRFloat, sizeof(float), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
- #define Sres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRString, sizeof(char *), \
- RES_OFFSET(offset), XtRString, (XtPointer) dftvalue}
- #define Wres(name, class, offset, dftvalue) \
- {RES_NAME(name), RES_CLASS(class), XtRWidget, sizeof(Widget), \
- RES_OFFSET(offset), XtRWidget, (XtPointer) dftvalue}
- /***====================================================================***/
- #define FRG_SIZE resource.minBufSize
- #define BUF_SIZE resource.maxBufSize
- typedef struct {
- Char * next;
- Char * last;
- int update; /* HandleInterpret */
- #if OPT_WIDE_CHARS
- IChar utf_data; /* resulting character */
- int utf_size; /* ...number of bytes decoded */
- #endif
- Char buffer[1];
- } PtyData;
- /***====================================================================***/
- /* The order of ifdef's matches the logic for num_ptrs in VTInitialize */
- typedef enum {
- OFF_FLAGS = 0 /* BUF_HEAD */
- , OFF_CHARS = 1 /* first (or only) byte of cell's character */
- , OFF_ATTRS = 2 /* video attributes */
- #if OPT_ISO_COLORS
- #if OPT_256_COLORS || OPT_88_COLORS
- , OFF_FGRND /* foreground color number */
- , OFF_BGRND /* background color number */
- #else
- , OFF_COLOR /* foreground+background color numbers */
- #endif
- #endif
- #if OPT_DEC_CHRSET
- , OFF_CSETS /* DEC character-set */
- #endif
- #if OPT_WIDE_CHARS
- , OFF_WIDEC /* second byte of first wide-character */
- , OFF_COM1L /* first combining character */
- , OFF_COM1H
- , OFF_COM2L /* second combining character */
- , OFF_COM2H
- #endif
- } BufOffsets;
- /* ScrnBuf-level macros */
- #define BUF_FLAGS(buf, row) (buf[MAX_PTRS * (row) + OFF_FLAGS])
- #define BUF_CHARS(buf, row) (buf[MAX_PTRS * (row) + OFF_CHARS])
- #define BUF_ATTRS(buf, row) (buf[MAX_PTRS * (row) + OFF_ATTRS])
- #define BUF_COLOR(buf, row) (buf[MAX_PTRS * (row) + OFF_COLOR])
- #define BUF_FGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_FGRND])
- #define BUF_BGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_BGRND])
- #define BUF_CSETS(buf, row) (buf[MAX_PTRS * (row) + OFF_CSETS])
- #define BUF_WIDEC(buf, row) (buf[MAX_PTRS * (row) + OFF_WIDEC])
- #define BUF_COM1L(buf, row) (buf[MAX_PTRS * (row) + OFF_COM1L])
- #define BUF_COM1H(buf, row) (buf[MAX_PTRS * (row) + OFF_COM1H])
- #define BUF_COM2L(buf, row) (buf[MAX_PTRS * (row) + OFF_COM2L])
- #define BUF_COM2H(buf, row) (buf[MAX_PTRS * (row) + OFF_COM2H])
- /* TScreen-level macros */
- #define SCRN_BUF_FLAGS(screen, row) BUF_FLAGS(screen->visbuf, row)
- #define SCRN_BUF_CHARS(screen, row) BUF_CHARS(screen->visbuf, row)
- #define SCRN_BUF_ATTRS(screen, row) BUF_ATTRS(screen->visbuf, row)
- #define SCRN_BUF_COLOR(screen, row) BUF_COLOR(screen->visbuf, row)
- #define SCRN_BUF_FGRND(screen, row) BUF_FGRND(screen->visbuf, row)
- #define SCRN_BUF_BGRND(screen, row) BUF_BGRND(screen->visbuf, row)
- #define SCRN_BUF_CSETS(screen, row) BUF_CSETS(screen->visbuf, row)
- #define SCRN_BUF_WIDEC(screen, row) BUF_WIDEC(screen->visbuf, row)
- #define SCRN_BUF_COM1L(screen, row) BUF_COM1L(screen->visbuf, row)
- #define SCRN_BUF_COM2L(screen, row) BUF_COM2L(screen->visbuf, row)
- #define SCRN_BUF_COM1H(screen, row) BUF_COM1H(screen->visbuf, row)
- #define SCRN_BUF_COM2H(screen, row) BUF_COM2H(screen->visbuf, row)
- typedef struct {
- unsigned chrset;
- unsigned flags;
- XFontStruct * fs;
- GC gc;
- char * fn;
- } XTermFonts;
- typedef struct {
- int top;
- int left;
- int bottom;
- int right;
- } XTermRect;
- /* indices into save_modes[] */
- typedef enum {
- DP_CRS_VISIBLE,
- DP_DECANM,
- DP_DECARM,
- DP_DECAWM,
- DP_DECBKM,
- DP_DECCKM,
- DP_DECCOLM, /* IN132COLUMNS */
- DP_DECOM,
- DP_DECPEX,
- DP_DECPFF,
- DP_DECSCLM,
- DP_DECSCNM,
- DP_DECTCEM,
- DP_DECTEK,
- DP_PRN_EXTENT,
- DP_PRN_FORMFEED,
- DP_X_ALTSCRN,
- DP_X_DECCOLM,
- DP_X_LOGGING,
- DP_X_MARGIN,
- DP_X_MORE,
- DP_X_MOUSE,
- DP_X_REVWRAP,
- DP_X_X10MSE,
- #if OPT_BLINK_CURS
- DP_CRS_BLINK,
- #endif
- #if OPT_TOOLBAR
- DP_TOOLBAR,
- #endif
- DP_LAST
- } SaveModes;
- #define DoSM(code,value) screen->save_modes[code] = value
- #define DoRM(code,value) value = screen->save_modes[code]
- /* index into vt_shell[] or tek_shell[] */
- typedef enum {
- noMenu = -1,
- mainMenu,
- vtMenu,
- fontMenu,
- tekMenu
- } MenuIndex;
- #define NUM_POPUP_MENUS 4
- #if OPT_COLOR_RES
- typedef struct {
- String resource;
- Pixel value;
- int mode;
- } ColorRes;
- #else
- #define ColorRes Pixel
- #endif
- typedef struct {
- unsigned which; /* must have NCOLORS bits */
- Pixel colors[NCOLORS];
- char *names[NCOLORS];
- } ScrnColors;
- typedef struct {
- Boolean saved;
- int row;
- int col;
- unsigned flags; /* VTxxx saves graphics rendition */
- char curgl;
- char curgr;
- char gsets[4];
- #if OPT_ISO_COLORS
- int cur_foreground; /* current foreground color */
- int cur_background; /* current background color */
- int sgr_foreground; /* current SGR foreground color */
- int sgr_background; /* current SGR background color */
- Boolean sgr_extended; /* SGR set with extended codes? */
- #endif
- } SavedCursor;
- typedef struct {
- int width; /* if > 0, width of scrollbar, */
- /* and scrollbar is showing */
- Boolean rv_cached; /* see ScrollBarReverseVideo */
- int rv_active; /* ...current reverse-video */
- Pixel bg; /* ...cached background color */
- Pixel fg; /* ...cached foreground color */
- Pixel bdr; /* ...cached border color */
- Pixmap bdpix; /* ...cached border pixmap */
- } SbInfo;
- #if OPT_TOOLBAR
- typedef struct {
- Widget menu_bar; /* toolbar, if initialized */
- Dimension menu_height; /* ...and its height */
- Dimension menu_border; /* ...and its border */
- } TbInfo;
- #define VT100_TB_INFO(name) screen.fullVwin.tb_info.name
- #endif
- struct _vtwin {
- Window window; /* X window id */
- int width; /* width of columns */
- int height; /* height of rows */
- Dimension fullwidth; /* full width of window */
- Dimension fullheight; /* full height of window */
- int f_width; /* width of fonts in pixels */
- int f_height; /* height of fonts in pixels */
- int f_ascent; /* ascent of font in pixels */
- int f_descent; /* descent of font in pixels */
- SbInfo sb_info;
- GC normalGC; /* normal painting */
- GC reverseGC; /* reverse painting */
- GC normalboldGC; /* normal painting, bold font */
- GC reverseboldGC; /* reverse painting, bold font */
- #if OPT_TOOLBAR
- Boolean active; /* true if toolbars are used */
- TbInfo tb_info; /* toolbar information */
- #endif
- };
- struct _tekwin {
- Window window; /* X window id */
- int width; /* width of columns */
- int height; /* height of rows */
- Dimension fullwidth; /* full width of window */
- Dimension fullheight; /* full height of window */
- double tekscale; /* scale factor Tek -> vs100 */
- };
- typedef struct {
- /* These parameters apply to both windows */
- Display *display; /* X display for screen */
- int respond; /* socket for responses
- (position report, etc.) */
- #if OPT_TCAP_QUERY
- int tc_query;
- #endif
- pid_t pid; /* pid of process on far side */
- uid_t uid; /* user id of actual person */
- gid_t gid; /* group id of actual person */
- GC cursorGC; /* normal cursor painting */
- GC fillCursorGC; /* special cursor painting */
- GC reversecursorGC;/* reverse cursor painting */
- GC cursoroutlineGC;/* for painting lines around */
- ColorRes Tcolors[NCOLORS]; /* terminal colors */
- #if OPT_ISO_COLORS
- ColorRes Acolors[MAXCOLORS]; /* ANSI color emulation */
- int veryBoldColors; /* modifier for boldColors */
- Boolean boldColors; /* can we make bold colors? */
- Boolean colorMode; /* are we using color mode? */
- Boolean colorULMode; /* use color for underline? */
- Boolean italicULMode; /* italic font for underline? */
- Boolean colorBDMode; /* use color for bold? */
- Boolean colorBLMode; /* use color for blink? */
- Boolean colorRVMode; /* use color for reverse? */
- Boolean colorAttrMode; /* prefer colorUL/BD to SGR */
- #endif
- #if OPT_DEC_CHRSET
- Boolean font_doublesize;/* enable font-scaling */
- int cache_doublesize;/* limit of our cache */
- Char cur_chrset; /* character-set index & code */
- int fonts_used; /* count items in double_fonts */
- XTermFonts double_fonts[NUM_CHRSET];
- #endif
- #if OPT_DEC_RECTOPS
- int cur_decsace; /* parameter for DECSACE */
- #endif
- #if OPT_WIDE_CHARS
- Boolean wide_chars; /* true when 16-bit chars */
- Boolean vt100_graphics; /* true to allow vt100-graphics */
- Boolean utf8_inparse; /* true to enable UTF-8 parser */
- int utf8_mode; /* use UTF-8 decode/encode: 0-2 */
- int latin9_mode; /* poor man's luit, latin9 */
- int unicode_font; /* font uses unicode encoding */
- int utf_count; /* state of utf_char */
- IChar utf_char; /* in-progress character */
- int last_written_col;
- int last_written_row;
- #endif
- #if OPT_BROKEN_OSC
- Boolean brokenLinuxOSC; /* true to ignore Linux palette ctls */
- #endif
- #if OPT_BROKEN_ST
- Boolean brokenStringTerm; /* true to match old OSC parse */
- #endif
- #if OPT_C1_PRINT
- Boolean c1_printable; /* true if we treat C1 as print */
- #endif
- int border; /* inner border */
- int scrollBarBorder; /* scrollBar border */
- Cursor arrow; /* arrow cursor */
- unsigned long event_mask;
- unsigned short send_mouse_pos; /* user wants mouse transition */
- /* and position information */
- #if OPT_PASTE64
- int base64_paste; /* set to send paste in base64 */
- /* _qWriteSelectionData expects these to be initialized to zero.
- * base64_flush() is the last step of the conversion, it clears these
- * variables.
- */
- int base64_accu;
- int base64_count;
- int base64_pad;
- #endif
- #if OPT_READLINE
- unsigned click1_moves;
- unsigned paste_moves;
- unsigned dclick3_deletes;
- unsigned paste_brackets;
- unsigned paste_quotes;
- unsigned paste_literal_nl;
- #endif /* OPT_READLINE */
- #if OPT_DEC_LOCATOR
- Boolean locator_reset; /* turn mouse off after 1 report? */
- Boolean locator_pixels; /* report in pixels? */
- /* if false, report in cells */
- unsigned short locator_events; /* what events to report */
- Boolean loc_filter; /* is filter rectangle active? */
- int loc_filter_top; /* filter rectangle for DEC Locator */
- int loc_filter_left;
- int loc_filter_bottom;
- int loc_filter_right;
- #endif /* OPT_DEC_LOCATOR */
- int mouse_button; /* current button pressed */
- int mouse_row; /* ...and its row */
- int mouse_col; /* ...and its column */
- int select; /* xterm selected */
- Boolean bellOnReset; /* bellOnReset */
- Boolean visualbell; /* visual bell mode */
- Boolean poponbell; /* pop on bell mode */
- Boolean allowSendEvents;/* SendEvent mode */
- Boolean allowWindowOps; /* WindowOps mode */
- Boolean allowSendEvent0;/* initial SendEvent mode */
- Boolean allowWindowOp0; /* initial WindowOps mode */
- Boolean awaitInput; /* select-timeout mode */
- Boolean grabbedKbd; /* keyboard is grabbed */
- #ifdef ALLOWLOGGING
- int logging; /* logging mode */
- int logfd; /* file descriptor of log */
- char *logfile; /* log file name */
- Char *logstart; /* current start of log buffer */
- #endif
- int inhibit; /* flags for inhibiting changes */
- /* VT window parameters */
- Boolean Vshow; /* VT window showing */
- struct _vtwin fullVwin;
- #ifndef NO_ACTIVE_ICON
- struct _vtwin iconVwin;
- struct _vtwin * whichVwin;
- #endif /* NO_ACTIVE_ICON */
- Cursor pointer_cursor; /* pointer cursor in window */
- String answer_back; /* response to ENQ */
- String printer_command; /* pipe/shell command string */
- Boolean printer_autoclose; /* close printer when offline */
- Boolean printer_extent; /* print complete page */
- Boolean printer_formfeed; /* print formfeed per function */
- int printer_controlmode; /* 0=off, 1=auto, 2=controller */
- int print_attributes; /* 0=off, 1=normal, 2=color */
- Boolean fnt_prop; /* true if proportional fonts */
- Boolean fnt_boxes; /* true if font has box-chars */
- #if OPT_BOX_CHARS
- Boolean force_box_chars;/* true if we assume that */
- Boolean force_all_chars;/* true to outline missing chars*/
- #endif
- Dimension fnt_wide;
- Dimension fnt_high;
- XFontStruct *fnt_norm; /* normal font of terminal */
- XFontStruct *fnt_bold; /* bold font of terminal */
- Boolean free_bold_box; /* same_font_size's austerity */
- #if OPT_WIDE_CHARS
- XFontStruct *fnt_dwd; /* wide font of terminal */
- XFontStruct *fnt_dwdb; /* wide bold font of terminal */
- #endif
- #ifndef NO_ACTIVE_ICON
- XFontStruct *fnt_icon; /* icon font */
- #endif /* NO_ACTIVE_ICON */
- int enbolden; /* overstrike for bold font */
- XPoint *box; /* draw unselected cursor */
- int cursor_state; /* ON, OFF, or BLINKED_OFF */
- int cursor_busy; /* do not redraw... */
- #if OPT_BLINK_CURS
- Boolean cursor_blink; /* cursor blink enable */
- Boolean cursor_blink_res; /* initial cursor blink value */
- Boolean cursor_blink_esc; /* cursor blink escape-state */
- #endif
- #if OPT_BLINK_TEXT
- Boolean blink_as_bold; /* text blink disable */
- #endif
- #if OPT_BLINK_CURS || OPT_BLINK_TEXT
- int blink_state; /* ON, OFF, or BLINKED_OFF */
- int blink_on; /* cursor on time (msecs) */
- int blink_off; /* cursor off time (msecs) */
- XtIntervalId blink_timer; /* timer-id for cursor-proc */
- #endif
- int cursor_GC; /* see ShowCursor() */
- int cursor_set; /* requested state */
- int cursor_col; /* previous cursor column */
- int cursor_row; /* previous cursor row */
- Boolean cursor_moved; /* scrolling makes cursor move */
- int cur_col; /* current cursor column */
- int cur_row; /* current cursor row */
- int max_col; /* rightmost column */
- int max_row; /* bottom row */
- int top_marg; /* top line of scrolling region */
- int bot_marg; /* bottom line of " " */
- Widget scrollWidget; /* pointer to scrollbar struct */
- int topline; /* line number of top, <= 0 */
- int savedlines; /* number of lines that've been saved */
- int savelines; /* number of lines off top to save */
- int scrolllines; /* number of lines to button scroll */
- Boolean scrollttyoutput; /* scroll to bottom on tty output */
- Boolean scrollkey; /* scroll to bottom on key */
- ScrnBuf visbuf; /* ptr to visible screen buf (main) */
- ScrnBuf allbuf; /* screen buffer (may include
- lines scrolled off top) */
- Char *sbuf_address; /* main screen memory address */
- ScrnBuf altbuf; /* alternate screen buffer */
- Char *abuf_address; /* alternate screen memory address */
- Char **save_ptr; /* workspace for save-pointers */
- size_t save_len; /* ...and its length */
- Boolean alternate; /* true if using alternate buf */
- unsigned short do_wrap; /* true if cursor in last column
- and character just output */
- int incopy; /* 0 idle; 1 XCopyArea issued;
- -1 first GraphicsExpose seen,
- but last not seen */
- int copy_src_x; /* params from last XCopyArea ... */
- int copy_src_y;
- unsigned int copy_width;
- unsigned int copy_height;
- int copy_dest_x;
- int copy_dest_y;
- Boolean c132; /* allow change to 132 columns */
- Boolean curses; /* kludge line wrap for more */
- Boolean hp_ll_bc; /* kludge HP-style ll for xdb */
- Boolean marginbell; /* true if margin bell on */
- int nmarginbell; /* columns from right margin */
- int bellarmed; /* cursor below bell margin */
- Boolean multiscroll; /* true if multi-scroll */
- int scrolls; /* outstanding scroll count,
- used only with multiscroll */
- SavedCursor sc[2]; /* data for restore cursor */
- unsigned char save_modes[DP_LAST]; /* save dec/xterm private modes */
- /* Improved VT100 emulation stuff. */
- String keyboard_dialect; /* default keyboard dialect */
- char gsets[4]; /* G0 through G3. */
- Char curgl; /* Current GL setting. */
- Char curgr; /* Current GR setting. */
- Char curss; /* Current single shift. */
- String term_id; /* resource for terminal_id */
- int terminal_id; /* 100=vt100, 220=vt220, etc. */
- int vtXX_level; /* 0=vt52, 1,2,3 = vt100 ... vt320 */
- int ansi_level; /* levels 1,2,3 */
- int scroll_amt; /* amount to scroll */
- int refresh_amt; /* amount to refresh */
- int protected_mode; /* 0=off, 1=DEC, 2=ISO */
- Boolean old_fkeys; /* true for compatible fkeys */
- Boolean delete_is_del; /* true for compatible Delete key */
- Boolean jumpscroll; /* whether we should jumpscroll */
- Boolean always_highlight; /* whether to highlight cursor */
- Boolean underline; /* whether to underline text */
- Boolean bold_mode; /* whether to use bold font */
- #if OPT_MAXIMIZE
- Boolean restore_data;
- int restore_x;
- int restore_y;
- unsigned restore_width;
- unsigned restore_height;
- #endif
- #if OPT_VT52_MODE
- int vt52_save_level; /* save-area for DECANM */
- char vt52_save_curgl;
- char vt52_save_curgr;
- char vt52_save_curss;
- char vt52_save_gsets[4];
- #endif
- /* Testing */
- #if OPT_XMC_GLITCH
- unsigned xmc_glitch; /* # of spaces to pad on SGR's */
- int xmc_attributes; /* attrs that make a glitch */
- Boolean xmc_inline; /* SGR's propagate only to eol */
- Boolean move_sgr_ok; /* SGR is reset on move */
- #endif
- #if OPT_TEK4014
- /* Tektronix window parameters */
- GC TnormalGC; /* normal painting */
- GC TcursorGC; /* normal cursor painting */
- Boolean Tshow; /* Tek window showing */
- Boolean waitrefresh; /* postpone refresh */
- struct _tekwin fullTwin;
- #ifndef NO_ACTIVE_ICON
- struct _tekwin iconTwin;
- struct _tekwin *whichTwin;
- #endif /* NO_ACTIVE_ICON */
- GC linepat[TEKNUMLINES]; /* line patterns */
- Boolean TekEmu; /* true if Tektronix emulation */
- int cur_X; /* current x */
- int cur_Y; /* current y */
- Tmodes cur; /* current tek modes */
- Tmodes page; /* starting tek modes on page */
- int margin; /* 0 -> margin 1, 1 -> margin 2 */
- int pen; /* current Tektronix pen 0=up, 1=dn */
- char *TekGIN; /* nonzero if Tektronix GIN mode*/
- int gin_terminator; /* Tek strap option */
- #endif /* OPT_TEK4014 */
- int multiClickTime; /* time between multiclick selects */
- int visualBellDelay; /* msecs to delay for visibleBell */
- int bellSuppressTime; /* msecs after Bell before another allowed */
- Boolean bellInProgress; /* still ringing/flashing prev bell? */
- char *charClass; /* for overriding word selection */
- Boolean cutNewline; /* whether or not line cut has \n */
- Boolean cutToBeginningOfLine; /* line cuts to BOL? */
- Boolean highlight_selection; /* controls appearance of selection */
- Boolean trim_selection; /* controls trimming of selection */
- Boolean i18nSelections;
- Boolean brokenSelections;
- Char *selection_data; /* the current selection */
- int selection_size; /* size of allocated buffer */
- int selection_length; /* number of significant bytes */
- Time selection_time; /* latest event timestamp */
- int startHRow, startHCol, /* highlighted text */
- endHRow, endHCol,
- startHCoord, endHCoord;
- Atom* selection_atoms; /* which selections we own */
- Cardinal sel_atoms_size; /* how many atoms allocated */
- Cardinal selection_count; /* how many atoms in use */
- Boolean input_eight_bits;/* use 8th bit instead of ESC prefix */
- Boolean output_eight_bits; /* honor all bits or strip */
- Boolean control_eight_bits; /* send CSI as 8-bits */
- Boolean backarrow_key; /* backspace/delete */
- Boolean meta_sends_esc; /* Meta-key sends ESC prefix */
- Pixmap menu_item_bitmap; /* mask for checking items */
- String menu_font_names[NMENUFONTS][fMAX];
- #define MenuFontName(n) menu_font_names[n][fNorm]
- long menu_font_sizes[NMENUFONTS];
- int menu_font_number;
- #if OPT_RENDERFONT
- XftFont * renderFontNorm[NMENUFONTS];
- XftFont * renderFontBold[NMENUFONTS];
- XftFont * renderFontItal[NMENUFONTS];
- XftFont * renderWideNorm[NMENUFONTS];
- XftFont * renderWideBold[NMENUFONTS];
- XftFont * renderWideItal[NMENUFONTS];
- XftDraw * renderDraw;
- #endif
- #if OPT_INPUT_METHOD
- XIM xim;
- XFontSet fs; /* fontset for XIM preedit */
- int fs_ascent; /* ascent of fs */
- #endif
- XIC xic; /* this is used even without XIM */
- #if OPT_DABBREV
- int dabbrev_working; /* nonzero during dabbrev process */
- unsigned char dabbrev_erase_char; /* used for deleting inserted completion */
- #endif
- } TScreen;
- typedef struct _TekPart {
- XFontStruct * Tfont[TEKNUMFONTS];
- int tobaseline[TEKNUMFONTS]; /* top-baseline, each font */
- char * initial_font; /* large, 2, 3, small */
- char * gin_terminator_str; /* ginTerminator resource */
- #if OPT_TOOLBAR
- TbInfo tb_info; /* toolbar information */
- #endif
- } TekPart;
- #if OPT_READLINE
- #define SCREEN_FLAG(screenp,f) (1&(screenp)->f)
- #define SCREEN_FLAG_set(screenp,f) ((screenp)->f |= 1)
- #define SCREEN_FLAG_unset(screenp,f) ((screenp)->f &= ~1L)
- #define SCREEN_FLAG_save(screenp,f) \
- ((screenp)->f = (((screenp)->f)<<1) | SCREEN_FLAG(screenp,f))
- #define SCREEN_FLAG_restore(screenp,f) ((screenp)->f = (((screenp)->f)>>1))
- #else
- #define SCREEN_FLAG(screenp,f) (0)
- #endif
- /* meaning of bits in screen.select flag */
- #define INWINDOW 01 /* the mouse is in one of the windows */
- #define FOCUS 02 /* one of the windows is the focus window */
- #define MULTICLICKTIME 250 /* milliseconds */
- typedef enum {
- keyboardIsLegacy, /* bogus vt220 codes for F1-F4, etc. */
- keyboardIsDefault,
- keyboardIsHP,
- keyboardIsSCO,
- keyboardIsSun,
- keyboardIsVT220
- } xtermKeyboardType;
- typedef enum { /* legal values for screen.utf8_mode */
- uFalse = 0,
- uTrue = 1,
- uAlways = 2,
- uDefault = 3
- } utf8ModeTypes;
- #if OPT_HP_FUNC_KEYS
- #define NAME_HP_KT " hp"
- #else
- #define NAME_HP_KT /*nothing*/
- #endif
- #if OPT_SCO_FUNC_KEYS
- #define NAME_SCO_KT " sco"
- #else
- #define NAME_SCO_KT /*nothing*/
- #endif
- #define NAME_SUN_KT " sun"
- #if OPT_SUNPC_KBD
- #define NAME_VT220_KT " vt220"
- #else
- #define NAME_VT220_KT /*nothing*/
- #endif
- #define KEYBOARD_TYPES NAME_HP_KT NAME_SCO_KT NAME_SUN_KT NAME_VT220_KT
- #if OPT_TRACE
- extern const char * visibleKeyboardType(xtermKeyboardType);
- #endif
- typedef struct
- {
- xtermKeyboardType type;
- unsigned flags;
- #if OPT_INITIAL_ERASE
- int reset_DECBKM; /* reset should set DECBKM */
- #endif
- int modify_cursor_keys; /* how to handle modifiers */
- } TKeyboard;
- typedef struct {
- char *f_n; /* the normal font */
- char *f_b; /* the bold font */
- #if OPT_WIDE_CHARS
- char *f_w; /* the normal wide font */
- char *f_wb; /* the bold wide font */
- #endif
- } VTFontNames;
- typedef struct _Misc {
- VTFontNames default_font;
- char *geo_metry;
- char *T_geometry;
- #if OPT_WIDE_CHARS
- Boolean cjk_width; /* true for built-in CJK wcwidth() */
- Boolean mk_width; /* true for simpler built-in wcwidth() */
- #endif
- #if OPT_LUIT_PROG
- Boolean callfilter; /* true to invoke luit */
- Boolean use_encoding; /* true to use -encoding option for luit */
- char *locale_str; /* "locale" resource */
- char *localefilter; /* path for luit */
- #endif
- #if OPT_INPUT_METHOD
- char *f_x; /* font for XIM */
- #endif
- int limit_resize;
- #ifdef ALLOWLOGGING
- Boolean log_on;
- #endif
- Boolean login_shell;
- Boolean re_verse;
- Boolean re_verse0; /* initial value of "-rv" */
- XtGravity resizeGravity;
- Boolean reverseWrap;
- Boolean autoWrap;
- Boolean logInhibit;
- Boolean signalInhibit;
- #if OPT_TEK4014
- Boolean tekInhibit;
- Boolean tekSmall; /* start tek window in small size */
- #endif
- Boolean scrollbar;
- #ifdef SCROLLBAR_RIGHT
- Boolean useRight;
- #endif
- Boolean titeInhibit;
- Boolean tiXtraScroll;
- Boolean appcursorDefault;
- Boolean appkeypadDefault;
- #if OPT_INPUT_METHOD
- char* input_method;
- char* preedit_type;
- Boolean open_im;
- Boolean cannot_im; /* true if we cannot use input-method */
- #endif
- Boolean dynamicColors;
- Boolean shared_ic;
- #ifndef NO_ACTIVE_ICON
- Boolean active_icon; /* use application icon window */
- unsigned icon_border_width;
- Pixel icon_border_pixel;
- #endif /* NO_ACTIVE_ICON */
- #if OPT_DEC_SOFTFONT
- …
Large files files are truncated, but you can click here to view the full file