📄 rxvtlib.h
字号:
#define COMMENT_CHAR '#'#define DOT "."#define DOTS ".."/* On Solaris link with -lsocket and -lnsl *//* these next two are probably only on Sun (not Solaris) */ int cmd_fd ; pid_t cmd_pid ; int Xfd ; struct stat ttyfd_stat;#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING int scroll_arrow_delay;#endif#ifdef META8_OPTION unsigned char meta_char;#endif unsigned int ModMetaMask, ModNumLockMask; unsigned long PrivateModes ; unsigned long SavedModes ; int refresh_count , refresh_limit , refresh_type ; Atom wmDeleteWindow;#ifdef USE_XIM XIC Input_Context;#endif char *v_buffer; char *v_bufstr ; char *v_bufptr; char *v_bufend;#define PTYCHAR1 "pqrstuvwxyz"#define PTYCHAR2 "0123456789abcdef"#ifdef DEBUG_TTYMODE#ifdef HAVE_TERMIOS_H# define FOO(flag,name) \ if ((ttymode->c_iflag) & flag) \ fprintf (stderr, "%s ", name)# undef FOO# define FOO(entry, name) \ fprintf (stderr, "%s = %#3o\n", name, ttymode->c_cc [entry])# undef FOO#endif /* HAVE_TERMIOS_H */#endif /* DEBUG_TTYMODE */#define FKEY(n, fkey) \ len = 5; \ sprintf((char *) kbuf,"\033[%02d~", (int)((n) + (keysym - fkey)))#define TIMEOUT_USEC 5000struct _MEvent { int clicks; Time time; unsigned int state; unsigned int button; } MEvent;#define PrivCases(bit) \ if (mode == 's') { \ o->SavedModes |= (o->PrivateModes & bit); \ break; \ } else { \ if (mode == 'r') \ state = (o->SavedModes & bit) ? 1 : 0; \ else \ state = (mode == 't') ? !(o->PrivateModes & bit) : mode; \ PrivMode(state, bit); \ }#define MAX_PTY_WRITE 128 /* 1/2 POSIX minimum MAX_INPUT */#ifndef GRX_SCALE# define GRX_SCALE 10000#endif#ifdef UTMP_SUPPORT char ut_id[5];# ifndef USE_SYSV_UTMP int utmp_pos;# endif#endif#define INTERN /* assign all global vars to me */ char *def_colorName[32] ;#ifdef MULTICHAR_SET char *def_mfontName[32] ;#endif /* MULTICHAR_SET */ char *def_fontName[32] ;#ifdef XTERM_COLOR_CHANGE#else# define set_window_color(idx,color) ((void)0)#endif /* XTERM_COLOR_CHANGE */#if (FONT0_IDX == 0)# define IDX2FNUM(i) (i)# define FNUM2IDX(f) (f)#else# define IDX2FNUM(i) (i == 0 ? FONT0_IDX : (i <= FONT0_IDX ? (i-1) : i))# define FNUM2IDX(f) (f == FONT0_IDX ? 0 : (f < FONT0_IDX ? (f+1) : f))#endif#define FNUM_RANGE(i) (i <= 0 ? 0 : (i >= NFONTS ? (NFONTS-1) : i))#ifdef MENUBAR#define Menu_PixelWidth(menu) \ (2 * SHADOW + Width2Pixel ((menu)->width + 3 * HSPACE)) GC topShadowGC, botShadowGC, neutralGC, menubarGC; int menu_readonly ; int Arrows_x ;struct _Arrows { char name; unsigned char str[4]; }; struct _Arrows Arrows[NARROWS] ;#if (MENUBAR_MAX > 1) int Nbars ;#else /* (MENUBAR_MAX > 1) */ bar_t BarList;#endif /* (MENUBAR_MAX > 1) */ menu_t *ActiveMenu ;#endif#define INTERN_SCREEN char charsets[4]; short current_screen; rend_t rstyle; short rvideo;#ifdef MULTICHAR_SETshort multi_byte;short lost_multi;enum _chstat { SBYTE, WBYTE};enum _chstat chstat;#define RESET_CHSTAT \ if (chstat == WBYTE) \ chstat = SBYTE, lost_multi = 1#else# define RESET_CHSTAT#endif#ifdef MULTICHAR_SETint encoding_method;#endif#define PROP_SIZE 4096#define TABSIZE 8 /* default tab size */#ifdef DEBUG_SCREEN# define D_SCREEN(x) fprintf x ; fputc('\n', stderr)#else# define D_SCREEN(x)#endif#ifdef DEBUG_SELECT# define D_SELECT(x) fprintf x ; fputc('\n', stderr)#else# define D_SELECT(x)#endif#define ZERO_SCROLLBACK \ if ((o->Options & Opt_scrollTtyOutput) == Opt_scrollTtyOutput) \ o->TermWin.view_start = 0#define CHECK_SELECTION(x) \ if (o->selection.op) \ rxvtlib_selection_check(o, x)#define CLEAR_SELECTION \ o->selection.beg.row = o->selection.beg.col \ = o->selection.end.row = o->selection.end.col = 0#define CLEAR_ALL_SELECTION \ o->selection.beg.row = o->selection.beg.col \ = o->selection.mark.row = o->selection.mark.col \ = o->selection.end.row = o->selection.end.col = 0#define ROW_AND_COL_IS_AFTER(A, B, C, D) \ (((A) > (C)) || (((A) == (C)) && ((B) > (D))))#define ROW_AND_COL_IS_BEFORE(A, B, C, D) \ (((A) < (C)) || (((A) == (C)) && ((B) < (D))))#define ROW_AND_COL_IN_ROW_AFTER(A, B, C, D) \ (((A) == (C)) && ((B) > (D)))#define ROW_AND_COL_IN_ROW_AT_OR_AFTER(A, B, C, D) \ (((A) == (C)) && ((B) >= (D)))#define ROW_AND_COL_IN_ROW_BEFORE(A, B, C, D) \ (((A) == (C)) && ((B) < (D)))#define ROW_AND_COL_IN_ROW_AT_OR_BEFORE(A, B, C, D) \ (((A) == (C)) && ((B) <= (D)))#define ROWCOL_IS_AFTER(X, Y) \ ROW_AND_COL_IS_AFTER((X).row, (X).col, (Y).row, (Y).col)#define ROWCOL_IS_BEFORE(X, Y) \ ROW_AND_COL_IS_BEFORE((X).row, (X).col, (Y).row, (Y).col)#define ROWCOL_IN_ROW_AFTER(X, Y) \ ROW_AND_COL_IN_ROW_AFTER((X).row, (X).col, (Y).row, (Y).col)#define ROWCOL_IN_ROW_BEFORE(X, Y) \ ROW_AND_COL_IN_ROW_BEFORE((X).row, (X).col, (Y).row, (Y).col)#define ROWCOL_IN_ROW_AT_OR_AFTER(X, Y) \ ROW_AND_COL_IN_ROW_AT_OR_AFTER((X).row, (X).col, (Y).row, (Y).col)#define ROWCOL_IN_ROW_AT_OR_BEFORE(X, Y) \ ROW_AND_COL_IN_ROW_AT_OR_BEFORE((X).row, (X).col, (Y).row, (Y).col)#if defined(XPM_BACKGROUND) && defined(XPM_BUFFERING)#define drawBuffer (o->TermWin.buf_pixmap)#define CLEAR_ROWS(row, num) \ if (o->TermWin.mapped) \ XCopyArea(o->Xdisplay, o->TermWin.pixmap, drawBuffer, o->TermWin.gc, \ Col2Pixel(0), Row2Pixel(row), \ o->TermWin.width, Height2Pixel(num), \ Col2Pixel(0), Row2Pixel(row))#define CLEAR_CHARS(x, y, num) \ if (o->TermWin.mapped) \ XCopyArea(Xdisplay, TermWin.pixmap, drawBuffer, TermWin.gc, \ x, y, Width2Pixel(num), Height2Pixel(1), x, y)#else /* XPM_BUFFERING && XPM_BACKGROUND */#define drawBuffer (o->TermWin.vt)#define CLEAR_ROWS(row, num) \ if (o->TermWin.mapped) \ XClearArea(o->Xdisplay, drawBuffer, Col2Pixel(0), Row2Pixel(row), \ o->TermWin.width, Height2Pixel(num), 0)#define CLEAR_CHARS(x, y, num) \ if (o->TermWin.mapped) \ XClearArea(o->Xdisplay, drawBuffer, x, y, \ Width2Pixel(num), Height2Pixel(1), 0)#endif /* XPM_BUFFERING && XPM_BACKGROUND */#define ERASE_ROWS(row, num) \ XFillRectangle(o->Xdisplay, drawBuffer, o->TermWin.gc, \ Col2Pixel(0), Row2Pixel(row), \ o->TermWin.width, Height2Pixel(num)) int prev_nrow , prev_ncol ;#ifdef MULTICHAR_SET#ifdef KANJI void (*multichar_decode) (unsigned char *str, int len) ;#else /* then we must be BIG5 to get in here */# ifdef ZH void (*multichar_decode) (unsigned char *str, int len) ;# else# ifdef ZHCN /* The GB fonts are in iso-2022 encoding (JIS). */ void (*multichar_decode) (unsigned char *str, int len) ;# endif# endif#endif#endif /* MULTICHAR_SET */#define DRAW_STRING(Func, x, y, str, len) \ Func(o->Xdisplay, drawBuffer, o->TermWin.gc, (x), (y), (str), (len))#if defined (NO_BRIGHTCOLOR) || defined (VERYBOLD)# define MONO_BOLD(x) ((x) & (RS_Bold|RS_Blink))#else# define MONO_BOLD(x) (((x) & RS_Bold) && fore == Color_fg)#endif#define FONT_WIDTH(X, Y) \ (X)->per_char[(Y) - (X)->min_char_or_byte2].width#define FONT_RBEAR(X, Y) \ (X)->per_char[(Y) - (X)->min_char_or_byte2].rbearing#define DELIMIT_TEXT(x) \ (((x) == ' ' || (x) == '\t') ? 2 : (strchr(o->rs[Rs_cutchars], (x)) != NULL))#ifdef MULTICHAR_SET# define DELIMIT_REND(x) (((x) & RS_multiMask) ? 1 : 0)#else# define DELIMIT_REND(x) 1#endif#ifndef NEXT_SCROLLBAR GC scrollbarGC;#ifdef XTERM_SCROLLBAR /* bitmap scrollbar */ GC ShadowGC; char sb_bits[] ;#if (SB_WIDTH != 15)#error Error, check scrollbar width (SB_WIDTH).It must be 15 for XTERM_SCROLLBAR#endif#else /* XTERM_SCROLLBAR */#ifndef MENUBAR GC topShadowGC, botShadowGC;#endif#endif /* ! XTERM_SCROLLBAR */#else /* ! NEXT_SCROLLBAR */ GC blackGC, whiteGC, grayGC, darkGC, stippleGC; Pixmap dimple, upArrow, downArrow, upArrowHi, downArrowHi;char *SCROLLER_DIMPLE[32];#define SCROLLER_DIMPLE_WIDTH 6#define SCROLLER_DIMPLE_HEIGHT 6char *SCROLLER_ARROW_UP[32];char *SCROLLER_ARROW_DOWN[32];char *HI_SCROLLER_ARROW_UP[32];char *HI_SCROLLER_ARROW_DOWN[32];#define ARROW_WIDTH 13#define ARROW_HEIGHT 13#define stp_width 8#define stp_height 8unsigned char stp_bits[256] ;#endif /* ! NEXT_SCROLLBAR */#if 0#define INFO(opt, arg, desc) \ {0, NULL, NULL, opt, arg, desc}#define STRG(p, kw, opt, arg, desc) \ {0, &(o->rs[p]), kw, opt, arg, desc}#define RSTRG(p, kw, arg) \ {0, &(o->rs[p]), kw, NULL, arg, NULL}#define BOOL(p, kw, opt, flag, desc) \ {(Opt_Boolean|flag), &(o->rs[p]), kw, opt, NULL, desc}#define SWCH(opt, flag, desc) \ {(flag), NULL, NULL, opt, NULL, desc}#else#define INFO(opt, arg, desc) \ {0, -1, NULL, opt, arg, desc}#define STRG(p, kw, opt, arg, desc) \ {0, p, kw, opt, arg, desc}#define RSTRG(p, kw, arg) \ {0, p, kw, NULL, arg, NULL}#define BOOL(p, kw, opt, flag, desc) \ {(Opt_Boolean|flag), p, kw, opt, NULL, desc}#define SWCH(opt, flag, desc) \ {(flag), -1, NULL, opt, NULL, desc}#endif#define INDENT 30#ifndef NO_RESOURCES# ifdef KEYSYM_RESOURCE#define NEWARGLIM 500 /* `reasonable' size */# endif /* KEYSYM_RESOURCE */#endif /* NO_RESOURCES */struct _bgPixmap_t { short w, h, x, y; Pixmap pixmap;} bgPixmap;#ifdef XPM_BACKGROUND XpmAttributes xpmAttr;#endif#ifndef STANDALONE XEvent xevent; int x_events_pending; int cmd_fd_available; int fds_available;#endif int old_width; int old_height; char *buffer; int currmaxcol;#ifdef MULTICHAR_SET int oldcursormulti;#endif#ifdef MENUBAR struct menu_t *BuildMenu;#endif Window parent_window; int killed;};enum _sstyle_t { OLD_SELECT, OLD_WORD_SELECT, NEW_SELECT};typedef enum _sstyle_t sstyle_t;#ifdef MULTICHAR_SETenum _ENC_METHOD { EUCJ, SJIS, BIG5, CNS, GB };typedef enum _ENC_METHOD ENC_METHOD;#endif#include "rxvtlibproto.h"#include "mad.h"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -