aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/xgterm/ptyx.h
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/x11iraf/xgterm/ptyx.h')
-rw-r--r--vendor/x11iraf/xgterm/ptyx.h557
1 files changed, 557 insertions, 0 deletions
diff --git a/vendor/x11iraf/xgterm/ptyx.h b/vendor/x11iraf/xgterm/ptyx.h
new file mode 100644
index 00000000..ef69a12e
--- /dev/null
+++ b/vendor/x11iraf/xgterm/ptyx.h
@@ -0,0 +1,557 @@
+/*
+ * $XConsortium: ptyx.h,v 1.62 93/02/25 17:21:26 gildea Exp $
+ */
+
+/*
+ * 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.
+ */
+
+/* ptyx.h */
+/* @(#)ptyx.h X10/6.6 11/10/86 */
+
+#include <X11/IntrinsicP.h>
+#include <X11/Xmu/Misc.h> /* For Max() and Min(). */
+#include <X11/Xfuncs.h>
+#include <X11/Xosdefs.h>
+
+
+/* Extra Xlib definitions */
+#define AllButtonsUp(detail, ignore) (\
+ ((ignore) == Button1) ? \
+ (((detail)&(Button2Mask|Button3Mask)) == 0) \
+ : \
+ (((ignore) == Button2) ? \
+ (((detail)&(Button1Mask|Button3Mask)) == 0) \
+ : \
+ (((detail)&(Button1Mask|Button2Mask)) == 0)) \
+ )
+
+#define MAX_COLS 200
+#define MAX_ROWS 128
+
+/*
+** System V definitions
+*/
+
+#ifdef SYSV
+#ifdef X_NOT_POSIX
+#ifndef CRAY
+#define dup2(fd1,fd2) ((fd1 == fd2) ? fd1 : \
+ (close(fd2), fcntl(fd1, F_DUPFD, fd2)))
+#endif
+#endif
+#endif /* SYSV */
+
+/*
+** allow for mobility of the pty master/slave directories
+*/
+#ifndef PTYDEV
+#if defined(hpux) || defined(__hpux)
+#define PTYDEV "/dev/ptym/ptyxx"
+#else /* !__hpux */
+#define PTYDEV "/dev/ptyxx"
+#endif /* !__hpux */
+#endif /* !PTYDEV */
+
+#ifndef TTYDEV
+#if defined(hpux) || defined(__hpux)
+#define TTYDEV "/dev/pty/ttyxx"
+#else /* !__hpux */
+#define TTYDEV "/dev/ttyxx"
+#endif /* !__hpux */
+#endif /* !TTYDEV */
+
+#ifndef PTYCHAR1
+#if defined(hpux) || defined(__hpux)
+#define PTYCHAR1 "zyxwvutsrqp"
+#else /* !__hpux */
+#define PTYCHAR1 "pqrstuvwxyzPQRSTUVWXYZ"
+#endif /* !__hpux */
+#endif /* !PTYCHAR1 */
+
+#ifndef PTYCHAR2
+#if defined(hpux) || defined(__hpux)
+#define PTYCHAR2 "fedcba9876543210"
+#else /* !__hpux */
+#define PTYCHAR2 "0123456789abcdef"
+#endif /* !__hpux */
+#endif /* !PTYCHAR2 */
+
+#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
+
+
+/* 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.
+ */
+
+typedef unsigned char Char; /* to support 8 bit chars */
+typedef Char **ScrnBuf;
+
+/*
+ * ANSI emulation.
+ */
+#define INQ 0x05
+#define FF 0x0C /* C0, C1 control names */
+#define LS1 0x0E
+#define LS0 0x0F
+#define CAN 0x18
+#define SUB 0x1A
+#define ESC 0x1B
+#define US 0x1F
+#define DEL 0x7F
+#define HTS ('H'+0x40)
+#define SS2 0x8E
+#define SS3 0x8F
+#define DCS 0x90
+#define OLDID 0x9A /* ESC Z */
+#define CSI 0x9B
+#define ST 0x9C
+#define OSC 0x9D
+#define PM 0x9E
+#define APC 0x9F
+#define RDEL 0xFF
+
+#define NMENUFONTS 9 /* entries in fontMenu */
+
+#define NBOX 5 /* Number of Points in box */
+#define NPARAM 10 /* Max. parameters */
+
+#define MINHILITE 32
+
+typedef struct {
+ unsigned char a_type;
+ unsigned char a_pintro;
+ unsigned char a_final;
+ unsigned char a_inters;
+ char a_nparam; /* # of parameters */
+ char a_dflt[NPARAM]; /* Default value flags */
+ short a_param[NPARAM]; /* Parameters */
+ char a_nastyf; /* Error flag */
+} ANSI;
+
+typedef struct {
+ int row;
+ int col;
+ unsigned flags; /* Vt100 saves graphics rendition. Ugh! */
+ char curgl;
+ char curgr;
+ char gsets[4];
+} SavedCursor;
+
+#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;
+ int 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 256 /* default # lines to save */
+#define SCROLLLINES 1 /* default # lines to scroll */
+
+/***====================================================================***/
+
+#define TEXT_FG 0
+#define TEXT_BG 1
+#define TEXT_CURSOR 2
+#define MOUSE_FG 3
+#define MOUSE_BG 4
+#define TEK_FG 5
+#define TEK_BG 6
+#define NCOLORS 7
+
+#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)))
+#define OPPOSITE_COLOR(n) (((n)==TEXT_FG?TEXT_BG:\
+ ((n)==TEXT_BG?TEXT_FG:\
+ ((n)==MOUSE_FG?MOUSE_BG:\
+ ((n)==MOUSE_BG?MOUSE_FG:\
+ ((n)==TEK_FG?TEK_BG:\
+ ((n)==TEXT_BG?TEK_FG:(n))))))))
+
+typedef struct {
+ unsigned which;
+ Pixel colors[NCOLORS];
+ char *names[NCOLORS];
+} ScrnColors;
+
+/***====================================================================***/
+
+#define MAXCOLORS 18
+#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 COLOR_BD 16
+#define COLOR_UL 17
+
+
+typedef struct {
+ Display *display; /* X display for screen */
+ int respond; /* socket for responses
+ (position report, etc.) */
+ long pid; /* pid of process on far side */
+ int uid; /* user id of actual person */
+ int gid; /* group id of actual person */
+ GC normalGC; /* normal painting */
+ GC reverseGC; /* reverse painting */
+ GC normalboldGC; /* normal painting, bold font */
+ GC reverseboldGC; /* reverse painting, bold font */
+ GC cursorGC; /* normal cursor painting */
+ GC reversecursorGC;/* reverse cursor painting */
+ GC cursoroutlineGC;/* for painting lines around */
+ Pixel foreground; /* foreground color */
+ Pixel cursorcolor; /* Cursor color */
+ Pixel mousecolor; /* Mouse color */
+ Pixel mousecolorback; /* Mouse color background */
+ Pixel colors[MAXCOLORS]; /* ANSI color emulation */
+ int border; /* inner border */
+ Cursor arrow; /* arrow cursor */
+ unsigned short send_mouse_pos; /* user wants mouse transition */
+ /* and position information */
+ int select; /* xgterm selected */
+ Boolean visualbell; /* visual bell mode */
+ Boolean allowSendEvents;/* SendEvent mode */
+ Boolean grabbedKbd; /* keyboard is grabbed */
+#ifdef ALLOWLOGGING
+ int logging; /* logging mode */
+ int logfd; /* file descriptor of log */
+ char *logfile; /* log file name */
+ unsigned char *logstart; /* current start of log buffer */
+#endif
+ int inhibit; /* flags for inhibiting changes */
+
+ /* VT window parameters */
+ struct {
+ Window window; /* X window id */
+ int width; /* width of columns */
+ int height; /* height of rows */
+ int fullwidth; /* full width of window */
+ int fullheight; /* full height of window */
+ int f_width; /* width of fonts in pixels */
+ int f_height; /* height of fonts in pixels */
+ } fullVwin;
+ Cursor pointer_cursor; /* pointer cursor in window */
+
+ /* Gterm window control */
+ Boolean Vshow; /* VT window showing */
+ Boolean Tshow; /* Tek window showing */
+ Boolean TekEmu; /* true if Tek emulation */
+
+ /* Terminal fonts must be of the same size and of fixed width */
+ XFontStruct *fnt_norm; /* normal font of terminal */
+ XFontStruct *fnt_bold; /* bold font of terminal */
+ int enbolden; /* overstrike for bold font */
+ XPoint *box; /* draw unselected cursor */
+
+ int cursor_state; /* ON or OFF */
+ int cursor_set; /* requested state */
+ int cursor_col; /* previous cursor column */
+ int cursor_row; /* previous cursor row */
+ 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 scrollbar; /* if > 0, width of scrollbar, and
+ scrollbar is showing */
+ 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 buf; /* 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 */
+ 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; /* cludge-ups for more and vi */
+ 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; /* data for restore cursor */
+ int save_modes[19]; /* save dec private modes */
+
+ /* Improved VT100 emulation stuff. */
+ char gsets[4]; /* G0 through G3. */
+ char curgl; /* Current GL setting. */
+ char curgr; /* Current GR setting. */
+ char curss; /* Current single shift. */
+ int scroll_amt; /* amount to scroll */
+ int refresh_amt; /* amount to refresh */
+ Boolean jumpscroll; /* whether we should jumpscroll */
+ Boolean always_highlight; /* whether to highlight cursor */
+ Boolean underline; /* whether to underline text */
+
+ int multiClickTime; /* time between multiclick selects */
+ 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? */
+ char *selection; /* the current selection */
+ int selection_size; /* size of allocated buffer */
+ int selection_length; /* number of significant bytes */
+ int 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 */
+ Pixmap menu_item_bitmap;
+ Pixmap tek_menu_item_bitmap;
+ Widget mainMenu, vtMenu, tekMenu, fontMenu;
+ char* menu_font_names[NMENUFONTS];
+ int menu_font_number;
+#ifdef I18N
+ XIC xic;
+#endif
+} TScreen;
+
+/* 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 struct
+{
+ unsigned flags;
+} TKeyboard;
+
+typedef struct _Misc {
+ char *geo_metry;
+ char *T_geometry;
+ char *f_n;
+ char *f_b;
+#ifdef ALLOWLOGGING
+ Boolean log_on;
+#endif
+ Boolean login_shell;
+ Boolean re_verse;
+ int resizeGravity;
+ Boolean reverseWrap;
+ Boolean autoWrap;
+ Boolean logInhibit;
+ Boolean signalInhibit;
+ Boolean tekInhibit;
+ Boolean scrollbar;
+ Boolean titeInhibit;
+ Boolean appcursorDefault;
+ Boolean appkeypadDefault;
+#ifdef I18N
+ char *input_method;
+ char *preedit_type;
+ Boolean open_im;
+ Boolean shared_ic;
+#endif
+ Boolean dynamicColors; /* use colors */
+ Boolean sb_right; /* scrollbar on right */
+} Misc;
+
+typedef struct {int foo;} XgtermClassPart;
+
+typedef struct _XgtermClassRec {
+ CoreClassPart core_class;
+ XgtermClassPart xgterm_class;
+} XgtermClassRec;
+
+/* define masks for flags */
+#define CAPS_LOCK 0x01
+#define KYPD_APL 0x02
+#define CURSOR_APL 0x04
+
+#define N_MARGINBELL 10
+#define MAX_TABS 320
+#define TAB_ARRAY_SIZE 10 /* number of ints to provide MAX_TABS bits */
+
+typedef unsigned Tabs [TAB_ARRAY_SIZE];
+
+typedef struct _XgtermWidgetRec {
+ CorePart core;
+ TKeyboard keyboard; /* terminal keyboard */
+ TScreen screen; /* terminal screen */
+ unsigned flags; /* mode flags */
+ unsigned cur_foreground; /* current foreground color */
+ unsigned cur_background; /* current background color */
+ unsigned initflags; /* initial mode flags */
+ Tabs tabs; /* tabstops of the terminal */
+ Misc misc; /* miscellaneous parameters */
+} XgtermWidgetRec, *XgtermWidget;
+
+#define BUF_SIZE 4096
+
+/*
+ * terminal flags
+ * There are actually two namespaces mixed together here.
+ * One is the set of flags that can go in screen->buf attributes
+ * and which must fit in a char.
+ * The other is the global setting stored in
+ * term->flags and screen->save_modes. This need only fit in an unsigned.
+ */
+
+#define ATTRIBUTES 0x67 /* mask: user-visible attributes */
+/* global flags and character flags (visible character attributes) */
+#define INVERSE 0x01 /* invert the characters to be output */
+#define UNDERLINE 0x02 /* true if underlining */
+#define BOLD 0x04
+/* character flags (internal attributes) */
+#define LINEWRAPPED 0x08 /* used on the first character in a
+ * line to indicate that it wraps onto
+ * the next line so we can tell the
+ * difference between lines that have
+ * wrapped around and lines that have
+ * ended naturally with a CR at column
+ * max_col.
+ */
+#define CHARDRAWN 0x10 /* a character has been drawn here on the
+ screen. Used to distinguish blanks from
+ empty parts of the screen when selecting */
+/* global flags */
+#define BG_COLOR 0x20 /* true if background set */
+#define FG_COLOR 0x40 /* true if foreground set */
+
+/* global flags */
+#define WRAPAROUND 0x400 /* true if auto wraparound mode */
+#define REVERSEWRAP 0x800 /* true if reverse wraparound mode */
+#define REVERSE_VIDEO 0x1000 /* true if screen white on black */
+#define LINEFEED 0x2000 /* true if in auto linefeed mode */
+#define ORIGIN 0x4000 /* true if in origin mode */
+#define INSERT 0x8000 /* true if in insert mode */
+#define SMOOTHSCROLL 0x10000 /* true if in smooth scroll mode */
+#define IN132COLUMNS 0x20000 /* true if in 132 column mode */
+
+
+#define VWindow(screen) (screen->fullVwin.window)
+#define VShellWindow term->core.parent->core.window
+#define TextWindow(screen) (screen->fullVwin.window)
+#define Width(screen) (screen->fullVwin.width)
+#define Height(screen) (screen->fullVwin.height)
+#define FullWidth(screen) (screen->fullVwin.fullwidth)
+#define FullHeight(screen) (screen->fullVwin.fullheight)
+#define FontWidth(screen) (screen->fullVwin.f_width)
+#define FontHeight(screen) (screen->fullVwin.f_height)
+
+#define CursorX(screen,col) (term->misc.sb_right ? \
+ (col) * FontWidth(screen) + screen->border : \
+ (col) * FontWidth(screen) + screen->border \
+ + screen->scrollbar)
+#define CursorY(screen,row) ((((row) - screen->topline) * FontHeight(screen)) \
+ + screen->border)
+
+#define WINDOWEVENTS (TWINDOWEVENTS | PointerMotionMask)
+
+/* flags for cursors */
+#define OFF 0
+#define ON 1
+#define CLEAR 0
+#define TOGGLE 1
+
+/* flags for inhibit */
+#ifdef ALLOWLOGGING
+#define I_LOG 0x01
+#endif
+#define I_SIGNAL 0x02
+#define I_TEK 0x04
+
+extern Cursor make_colored_cursor();
+extern int GetBytesAvailable();
+extern void first_map_occurred();
+extern int kill_process_group();