📄 ncurses.h
字号:
/**************************************************************************** * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. * * * * 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, distribute with modifications, 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 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIMF, * * 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. * ****************************************************************************//**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * * and: Thomas E. Dickey 1996-on * ****************************************************************************//* $Id: curses.h.in,v 1.136 2003/01/18 23:33:20 tom Exp $ */#ifndef __NCURSES_H#define __NCURSES_H#define CURSES 1#define CURSES_H 1/* This should be defined for the enhanced functionality to be visible. * However, some of the wide-character (enhanced) functionality is missing. * So we do not define it (yet).#define _XOPEN_CURSES 1 *//* These are defined only in curses.h, and are used for conditional compiles */#define NCURSES_VERSION_MAJOR 5#define NCURSES_VERSION_MINOR 3#define NCURSES_VERSION_PATCH 20030118/* This is defined in more than one ncurses header, for identification */#undef NCURSES_VERSION#define NCURSES_VERSION "5.3"#include <ncurses/ncurses_dll.h>/* * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses * configured using --disable-macros. */#ifdef NCURSES_NOMACROS#define NCURSES_ATTR_T attr_t#endif#ifndef NCURSES_ATTR_T#define NCURSES_ATTR_T int#endif/* * Expands to 'const' if ncurses is configured using --enable-const. Note that * doing so makes it incompatible with other implementations of X/Open Curses. */#undef NCURSES_CONST#define NCURSES_CONST /*nothing*//* * The internal type used for color values */#undef NCURSES_COLOR_T#define NCURSES_COLOR_T short/* * The internal type used for window dimensions. */#undef NCURSES_SIZE_T#define NCURSES_SIZE_T short/* * NCURSES_CH_T is used in building the library, but not used otherwise in * this header file, since that would make the normal/wide-character versions * of the header incompatible. */#undef NCURSES_CH_T#define NCURSES_CH_T chtypetypedef unsigned long chtype;#include <stdio.h>#include <ncurses/unctrl.h>#include <stdarg.h> /* we need va_list */#ifdef _XOPEN_SOURCE_EXTENDED#include <stddef.h> /* we want wchar_t */#endif /* _XOPEN_SOURCE_EXTENDED *//* XSI and SVr4 specify that curses implements 'bool'. However, C++ may also * implement it. If so, we must use the C++ compiler's type to avoid conflict * with other interfaces. * * A further complication is that <stdbool.h> may declare 'bool' to be a * different type, such as an enum which is not necessarily compatible with * C++. If we have <stdbool.h>, make 'bool' a macro, so users may #undef it. * Otherwise, let it remain a typedef to avoid conflicts with other #define's. * In either case, make a typedef for NCURSES_BOOL which can be used if needed * from either C or C++. */#undef TRUE#define TRUE 1#undef FALSE#define FALSE 0typedef unsigned char NCURSES_BOOL;#if (!defined(__cplusplus) || !1) && (!0)#if 1#include <stdbool.h>#endif#undef bool#if 1#define bool NCURSES_BOOL#elsetypedef unsigned char bool;#endif#endif /* !__cplusplus, etc. */#ifdef __cplusplusextern "C" {#endif/* * XSI attributes. In the ncurses implementation, they are identical to the * A_ attributes. */#define WA_ATTRIBUTES A_ATTRIBUTES#define WA_NORMAL A_NORMAL#define WA_STANDOUT A_STANDOUT#define WA_UNDERLINE A_UNDERLINE#define WA_REVERSE A_REVERSE#define WA_BLINK A_BLINK#define WA_DIM A_DIM#define WA_BOLD A_BOLD#define WA_ALTCHARSET A_ALTCHARSET#define WA_INVIS A_INVIS#define WA_PROTECT A_PROTECT#define WA_HORIZONTAL A_HORIZONTAL#define WA_LEFT A_LEFT#define WA_LOW A_LOW#define WA_RIGHT A_RIGHT#define WA_TOP A_TOP#define WA_VERTICAL A_VERTICAL/* colors */extern NCURSES_EXPORT_VAR(int) COLORS;extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;#define COLOR_BLACK 0#define COLOR_RED 1#define COLOR_GREEN 2#define COLOR_YELLOW 3#define COLOR_BLUE 4#define COLOR_MAGENTA 5#define COLOR_CYAN 6#define COLOR_WHITE 7/* line graphics */#if 0extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);#define acs_map (_nc_acs_map())#elseextern NCURSES_EXPORT_VAR(chtype) acs_map[];#endif/* VT100 symbols begin here */#define ACS_ULCORNER (acs_map['l']) /* upper left corner */#define ACS_LLCORNER (acs_map['m']) /* lower left corner */#define ACS_URCORNER (acs_map['k']) /* upper right corner */#define ACS_LRCORNER (acs_map['j']) /* lower right corner */#define ACS_LTEE (acs_map['t']) /* tee pointing right */#define ACS_RTEE (acs_map['u']) /* tee pointing left */#define ACS_BTEE (acs_map['v']) /* tee pointing up */#define ACS_TTEE (acs_map['w']) /* tee pointing down */#define ACS_HLINE (acs_map['q']) /* horizontal line */#define ACS_VLINE (acs_map['x']) /* vertical line */#define ACS_PLUS (acs_map['n']) /* large plus or crossover */#define ACS_S1 (acs_map['o']) /* scan line 1 */#define ACS_S9 (acs_map['s']) /* scan line 9 */#define ACS_DIAMOND (acs_map['`']) /* diamond */#define ACS_CKBOARD (acs_map['a']) /* checker board (stipple) */#define ACS_DEGREE (acs_map['f']) /* degree symbol */#define ACS_PLMINUS (acs_map['g']) /* plus/minus */#define ACS_BULLET (acs_map['~']) /* bullet *//* Teletype 5410v1 symbols begin here */#define ACS_LARROW (acs_map[',']) /* arrow pointing left */#define ACS_RARROW (acs_map['+']) /* arrow pointing right */#define ACS_DARROW (acs_map['.']) /* arrow pointing down */#define ACS_UARROW (acs_map['-']) /* arrow pointing up */#define ACS_BOARD (acs_map['h']) /* board of squares */#define ACS_LANTERN (acs_map['i']) /* lantern symbol */#define ACS_BLOCK (acs_map['0']) /* solid square block *//* * These aren't documented, but a lot of System Vs have them anyway * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). * The ACS_names may not match AT&T's, our source didn't know them. */#define ACS_S3 (acs_map['p']) /* scan line 3 */#define ACS_S7 (acs_map['r']) /* scan line 7 */#define ACS_LEQUAL (acs_map['y']) /* less/equal */#define ACS_GEQUAL (acs_map['z']) /* greater/equal */#define ACS_PI (acs_map['{']) /* Pi */#define ACS_NEQUAL (acs_map['|']) /* not equal */#define ACS_STERLING (acs_map['}']) /* UK pound sign *//* * Line drawing ACS names are of the form ACS_trbl, where t is the top, r * is the right, b is the bottom, and l is the left. t, r, b, and l might * be B (blank), S (single), D (double), or T (thick). The subset defined * here only uses B and S. */#define ACS_BSSB ACS_ULCORNER#define ACS_SSBB ACS_LLCORNER#define ACS_BBSS ACS_URCORNER#define ACS_SBBS ACS_LRCORNER#define ACS_SBSS ACS_RTEE#define ACS_SSSB ACS_LTEE#define ACS_SSBS ACS_BTEE#define ACS_BSSS ACS_TTEE#define ACS_BSBS ACS_HLINE#define ACS_SBSB ACS_VLINE#define ACS_SSSS ACS_PLUS#undef ERR#define ERR (-1)#undef OK#define OK (0)/* values for the _flags member */#define _SUBWIN 0x01 /* is this a sub-window? */#define _ENDLINE 0x02 /* is the window flush right? */#define _FULLWIN 0x04 /* is the window full-screen? */#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */#define _ISPAD 0x10 /* is this window a pad? */#define _HASMOVED 0x20 /* has cursor moved since last refresh? */#define _WRAPPED 0x40 /* cursor was just wrappped *//* * this value is used in the firstchar and lastchar fields to mark * unchanged lines */#define _NOCHANGE -1/* * this value is used in the oldindex field to mark lines created by insertions * and scrolls. */#define _NEWINDEX -1typedef struct screen SCREEN;typedef struct _win_st WINDOW;typedef chtype attr_t; /* ...must be at least as wide as chtype */#ifdef _XOPEN_SOURCE_EXTENDED#if 0#ifdef mblen /* libutf8.h defines it w/o undefining first */#undef mblen#endif#include <libutf8.h>#define _WCHAR_T#define _WINT_T#endif#if 0#include <wchar.h> /* ...to get mbstate_t, etc. */#endif#if !defined(_WCHAR_T) && !defined(wchar_t)typedef unsigned long wchar_t;#endif /* _WCHAR_T */#if !defined(_WINT_T) && !defined(wint_t)typedef long int wint_t;#endif /* _WINT_T */#define CCHARW_MAX 5typedef struct{ attr_t attr; wchar_t chars[CCHARW_MAX];}cchar_t;#endif /* _XOPEN_SOURCE_EXTENDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -