📄 window.h
字号:
/* * window.h Constants, prototypes etc. for the window routines. * * $Id: window.h,v 1.14 2006/04/02 09:58:52 al-guest Exp $ * * This file is part of the minicom communications package, * Copyright 1991-1996 Miquel van Smoorenburg. * * This program 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 of the License, or (at your option) any later version. * * fmg 1/11/94 colors * fmg 8/20/97 added stuff for history search section * fmg 8/21/97 added kludged F_key support for RedHat4.1 */#include <stddef.h>/* * One character is contained in a "ELM" */typedef struct _elm { wchar_t value; char attr; char color;} ELM;/* * Control struct of a window */typedef struct _win { int x1, y1, x2, y2; /* Coordinates */ int sy1, sy2; /* Scrolling region */ int xs, ys; /* x and y size */ char border; /* type of border */ char cursor; /* Does it have a cursor */ char attr; /* Current attribute of window */ char color; /* Current color of window */ char autocr; /* With '\n', do an automatic '\r' */ char doscroll; /* Automatically scroll up */ char wrap; /* Wrap around edge */ char direct; /* Direct write to screen ? */ short curx, cury; /* current x and y */ char o_cursor; short o_curx; short o_cury; char o_attr; char o_color; /* Position & attributes before window was opened */ ELM *map; /* Map of contents */ ELM *histbuf; /* History buffer. */ int histlines; /* How many lines we keep in the history buffer */ int histline; /* Current line in the history buffer. */} WIN;/* * Stdwin is the whole screen */extern WIN *stdwin; /* Whole screen */extern int LINES, COLS; /* Size of sreen */extern int usecolor; /* Use ansi color escape sequences */extern int useattr; /* Use attributes (reverse, bold etc. ) */extern int dirflush; /* Direct flush after write */extern int screen_ibmpc; /* Literal pass-through of all characters? */extern int screen_iso; /* Literal pass-through of all characters? */extern int w_init; /* Already initialized? */extern char *_tptr;extern int use_status; /* Turned on in main() *//* fmg 1/11/94 colors */extern int mfcolor; /* Menu Foreground Color */extern int mbcolor; /* Menu Background Color */extern int tfcolor; /* Terminal Foreground Color */extern int tbcolor; /* Terminal Background Color */extern int sfcolor; /* Status Bar Foreground Color */extern int sbcolor; /* Status Bar Background Color */extern const char *J_col[]; /* Color's names *//* * Possible attributes. */#define XA_NORMAL 0#define XA_BLINK 1#define XA_BOLD 2#define XA_REVERSE 4#define XA_STANDOUT 8#define XA_UNDERLINE 16#define XA_ALTCHARSET 32#define XA_BLANK 64/* * Possible colors */#define BLACK 0#define RED 1#define GREEN 2#define YELLOW 3#define BLUE 4#define MAGENTA 5#define CYAN 6#define WHITE 7#define COLATTR(fg, bg) (((fg) << 4) + (bg))#define COLFG(ca) ((ca) >> 4)#define COLBG(ca) ((ca) % 16)/* * Possible borders. */#define BNONE 0#define BSINGLE 1#define BDOUBLE 2/* * Scrolling directions. */#define S_UP 1#define S_DOWN 2/* * Cursor types. */#define CNONE 0#define CNORMAL 1/* * Title Positions */#define TLEFT 0#define TMID 1#define TRIGHT 2/* * Function prototypes. */int wxgetch(void);void wflush(void);WIN *wopen(int x1, int y1, int x2, int y2, int border, int attr, int fg, int bg, int direct, int hl, int rel);void wclose(WIN *win, int replace);void wleave(void);void wreturn(void);void wresize(WIN *w, int x, int y);void wredraw(WIN *w, int newdirect);void wscroll(WIN *win, int dir);void wlocate(WIN *win, int x, int y);void wputc(WIN *win, wchar_t c);void wdrawelm(WIN *win, int y, ELM *e);void wputs(WIN *win, const char *s);int wprintf(WIN *, const char *, ...) __attribute__((format(printf, 2, 3)));void wbell(void);void wcursor(WIN *win, int type);void wtitle(WIN *w, int pos , const char *s);void wcurbar(WIN *w, int y , int attr);int wselect(int x, int y, const char *const *choices, void (*const *funlist)(void) , const char *title , int attr , int fg , int bg );void wclrch(WIN *w, int n);void wclrel(WIN *w);void wclreol(WIN *w);void wclrbol(WIN *w);void wclreos(WIN *w);void wclrbos(WIN *w);void winclr(WIN *w);void winsline(WIN *w);void wdelline(WIN *w);void winschar(WIN *w);void winschar2(WIN *w, wchar_t c, int move);void wdelchar(WIN *w);int wgets(WIN *win, char *s, int linemax, int totmax);int wgetwcs(WIN *win, wchar_t *s, int linemax, int totmax);void win_end(void);#ifdef BBSint win_init(char *term, int lines);#elseint win_init(int fg, int bg, int attr);#endif/* fmg 8/20/97: both needed by history search section */void wdrawelm_inverse( WIN *w, int y, ELM *e);void wdrawelm_var(WIN *w, ELM *e, wchar_t *buf);/* * Some macro's that can be used as functions. */#define wsetregion(w, z1, z2) (((w)->sy1=(w)->y1+(z1)),((w)->sy2=(w)->y1+(z2)))#define wresetregion(w) ( (w)->sy1 = (w)->y1, (w)->sy2 = (w)->y2 )#define wgetattr(w) ( (w)->attr )#define wsetattr(w, a) ( (w)->attr = (a) )#define wsetfgcol(w, fg) ( (w)->color = ((w)->color & 15) + ((fg) << 4))#define wsetbgcol(w, bg) ( (w)->color = ((w)->color & 240) + (bg) )#define wsetam(w) ( (w)->wrap = 1 )#define wresetam(w) ( (w)->wrap = 0 )/* * Allright, now the macro's for our keyboard routines. */#define K_BS 8#define K_ESC 27#define K_STOP 256#define K_F1 257#define K_F2 258#define K_F3 259#define K_F4 260#define K_F5 261#define K_F6 262#define K_F7 263#define K_F8 264#define K_F9 265#define K_F10 266#define K_F11 277#define K_F12 278#define K_HOME 267#define K_PGUP 268#define K_UP 269#define K_LT 270#define K_RT 271#define K_DN 272#define K_END 273#define K_PGDN 274#define K_INS 275#define K_DEL 276#define NUM_KEYS 23#define KEY_OFFS 256/* Here's where the meta keycode start. (512 + keycode). */#define K_META 512#ifndef EOF# define EOF ((int) -1)#endif#define K_ERA '\b'#define K_KILL ((int) -2)/* Internal structure. */struct key { char *cap; char len;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -