This is device-tty.h in view mode; [Download] [Up]
/* Define TTY specific device object for XEmacs. Copyright (C) 1995 Board of Trustees, University of Illinois This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Synched up with: Not in FSF. */ /* Written by Chuck Thompson. */ #ifndef _XEMACS_DEVICE_TTY_H_ #define _XEMACS_DEVICE_TTY_H_ #include "device.h" #include "syssignal.h" /* Always include before systty.h */ #include "systty.h" DECLARE_DEVICE_TYPE (tty); struct tty_device { FILE *infd, *outfd; Lisp_Object tty, terminal_type; char *term_entry_buffer; #ifdef HAVE_TERMIOS speed_t ospeed; /* Output speed (from sg_ospeed) */ #else short ospeed; /* Output speed (from sg_ospeed) */ #endif /* Physical location of cursor on this device. */ int cursor_x; int cursor_y; int height; int width; /* flags indicating presence, absence or value of various features */ struct { unsigned int must_write_spaces :1; /* terminal inserts nulls, not spaces to fill whitespace on screen */ unsigned int insert_mode_motion :1; /* cursor movement commands work while in insert mode */ unsigned int standout_motion :1; /* cursor movement is graceful in standout or underline mode */ unsigned int memory_above_frame :1; /* display retained above screen */ unsigned int memory_below_frame :1; /* display retained below screen */ unsigned int meta_key :2; /* 0 == mask off top bit; 1 == top bit is meta; 2 == top bit is useful as character info */ unsigned int flow_control :1; /* Nonzero means use ^S/^Q as cretinous flow control. */ int standout_width; /* # of spaces printed when change to standout mode */ int underline_width; /* # of spaces printed when change to underline mode */ } flags; /* cursor motion entries - each entry is commented with the terminfo and the termcap entry */ struct { /* local cursor movement */ CONST char *up; /* cuu1, up */ CONST char *down; /* cud1, do */ CONST char *left; /* cub1, le */ CONST char *right; /* cuf1, nd */ CONST char *home; /* home, ho */ CONST char *low_left; /* ll, ll */ CONST char *car_return; /* cr, cr */ /* parameterized local cursor movement */ CONST char *multi_up; /* cuu, UP */ CONST char *multi_down; /* cud, DO */ CONST char *multi_left; /* cub, LE */ CONST char *multi_right; /* cuf, RI */ /* absolute cursor motion */ CONST char *abs; /* cup, cm */ CONST char *hor_abs; /* hpa, ch */ CONST char *ver_abs; /* vpa, cv */ /* scrolling */ CONST char *scroll_forw; /* ind, sf */ CONST char *scroll_back; /* ri, sr */ CONST char *multi_scroll_forw; /* indn, SF */ CONST char *multi_scroll_back; /* rin, SR */ CONST char *set_scroll_region; /* csr, cs */ } cm; /* screen editing entries - each entry is commented with the terminfo and the termcap entry */ struct { /* adding to the screen */ CONST char *ins_line; /* il1, al */ CONST char *multi_ins_line; /* il, AL */ CONST char *repeat; /* rep, rp */ CONST char *begin_ins_mode; /* smir, im */ CONST char *end_ins_mode; /* rmir, ei */ CONST char *ins_char; /* ich1, ic */ CONST char *multi_ins_char; /* ich, IC */ CONST char *insert_pad; /* ip, ip */ /* deleting from the screen */ CONST char *clr_frame; /* clear, cl */ CONST char *clr_from_cursor; /* ed, cd */ CONST char *clr_to_eol; /* el, ce */ CONST char *del_line; /* dl1, dl */ CONST char *multi_del_line; /* dl, DL */ CONST char *del_char; /* dch1, dc */ CONST char *multi_del_char; /* dch, DC */ CONST char *begin_del_mode; /* smdc, dm */ CONST char *end_del_mode; /* rmdc, ed */ CONST char *erase_at_cursor; /* ech, ec */ } se; /* screen display entries - each entry is commented with the terminfo and termcap entry */ struct { CONST char *begin_standout; /* smso, so */ CONST char *end_standout; /* rmso, se */ CONST char *begin_underline; /* smul, us */ CONST char *end_underline; /* rmul, ue */ CONST char *begin_alternate; /* smacs, as */ CONST char *end_alternate; /* rmacs, ae */ CONST char *turn_on_reverse; /* rev, mr */ CONST char *turn_on_blinking; /* blink, mb */ CONST char *turn_on_bold; /* bold, md */ CONST char *turn_on_dim; /* dim, mh */ CONST char *turn_off_attributes; /* sgr0, me */ CONST char *visual_bell; /* flash, vb */ CONST char *audio_bell; /* bel, bl */ CONST char *cursor_visible; /* cvvis, vs */ CONST char *cursor_normal; /* cnorm, ve */ CONST char *init_motion; /* smcup, ti */ CONST char *end_motion; /* rmcup, te */ CONST char *keypad_on; /* smkx, ks */ CONST char *keypad_off; /* rmkx, ke */ } sd; /* costs of various operations */ struct { int cm_up; int cm_down; int cm_left; int cm_right; int cm_home; int cm_low_left; int cm_car_return; int cm_abs; int cm_hor_abs; int cm_ver_abs; } cost; /* The initial tty mode bits */ struct emacs_tty old_tty; /* Is this TTY our controlling terminal? */ int controlling_terminal :1; }; #define DEVICE_TTY_DATA(d) DEVICE_TYPE_DATA (d, tty) #define DEVICE_TTY_CURSOR_X(d) (DEVICE_TTY_DATA (d)->cursor_x) #define DEVICE_TTY_CURSOR_Y(d) (DEVICE_TTY_DATA (d)->cursor_y) #define TTY_CM(d) (DEVICE_TTY_DATA (d)->cm) #define TTY_SE(d) (DEVICE_TTY_DATA (d)->se) #define TTY_SD(d) (DEVICE_TTY_DATA (d)->sd) #define TTY_FLAGS(d) (DEVICE_TTY_DATA (d)->flags) #define TTY_COST(d) (DEVICE_TTY_DATA (d)->cost) #define TTY_INC_CURSOR_X(d, n) (DEVICE_TTY_CURSOR_X (d) += n) #define TTY_INC_CURSOR_Y(d, n) (DEVICE_TTY_CURSOR_Y (d) += n) /* termcap requires this to be global */ #ifdef HAVE_TERMIOS extern speed_t ospeed; /* Output speed (from sg_ospeed) */ #else extern short ospeed; /* Output speed (from sg_ospeed) */ #endif extern FILE *termscript; /****************** Prototypes from cm.c *******************/ /* #### Verify that all of these are still needed. */ extern void cm_cost_init (struct device *d); extern void cmputc (int c); extern void cmgoto (struct frame *f, int row, int col); extern struct device *cmputc_device; /*************** Prototypes from device-tty.c ****************/ extern void init_event_tty_late (void); /*************** Prototypes from event-tty.c ****************/ extern int read_event_from_tty_or_stream_desc (struct Lisp_Event *event, struct device *d, int fd); extern int maybe_read_quit_event (struct Lisp_Event *event); /*************** Prototypes from redisplay-tty.c ****************/ enum term_init_status { TTY_UNABLE_OPEN_DATABASE, TTY_TYPE_UNDEFINED, TTY_TYPE_INSUFFICIENT, TTY_SIZE_UNSPECIFIED, TTY_INIT_SUCCESS }; extern int init_tty_for_redisplay (struct device *d, char *terminal_type); /* #### These should probably be methods. */ void set_tty_modes (struct device *d); void reset_tty_modes (struct device *d); /* #### sysdep.c currently needs this. I think this is wrong. */ extern void tty_clear_region (Lisp_Object locale, face_index findex, int x, int y, int width, int height); #endif /* _XEMACS_DEVICE_TTY_H_ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.