xref: /illumos-gate/usr/src/lib/libxcurses/h/curses.h (revision 7c478bd9)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate  */
26*7c478bd9Sstevel@tonic-gate 
27*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
28*7c478bd9Sstevel@tonic-gate 
29*7c478bd9Sstevel@tonic-gate /*
30*7c478bd9Sstevel@tonic-gate  * curses.h
31*7c478bd9Sstevel@tonic-gate  *
32*7c478bd9Sstevel@tonic-gate  * XCurses Library
33*7c478bd9Sstevel@tonic-gate  *
34*7c478bd9Sstevel@tonic-gate  * Copyright 1990, 1995 by Mortice Kern Systems Inc.  All rights reserved.
35*7c478bd9Sstevel@tonic-gate  *
36*7c478bd9Sstevel@tonic-gate  */
37*7c478bd9Sstevel@tonic-gate 
38*7c478bd9Sstevel@tonic-gate #ifndef __M_CURSES_H__
39*7c478bd9Sstevel@tonic-gate #define __M_CURSES_H__
40*7c478bd9Sstevel@tonic-gate 
41*7c478bd9Sstevel@tonic-gate #define _XOPEN_CURSES
42*7c478bd9Sstevel@tonic-gate 
43*7c478bd9Sstevel@tonic-gate #include <stdio.h>
44*7c478bd9Sstevel@tonic-gate #include <term.h>
45*7c478bd9Sstevel@tonic-gate #include <unctrl.h>
46*7c478bd9Sstevel@tonic-gate #include <wchar.h>
47*7c478bd9Sstevel@tonic-gate 
48*7c478bd9Sstevel@tonic-gate #ifndef EOF
49*7c478bd9Sstevel@tonic-gate #define EOF			(-1)
50*7c478bd9Sstevel@tonic-gate #endif
51*7c478bd9Sstevel@tonic-gate 
52*7c478bd9Sstevel@tonic-gate #ifndef WEOF
53*7c478bd9Sstevel@tonic-gate #define WEOF			(-1)
54*7c478bd9Sstevel@tonic-gate #endif
55*7c478bd9Sstevel@tonic-gate 
56*7c478bd9Sstevel@tonic-gate /*
57*7c478bd9Sstevel@tonic-gate  * Not all <wchar.h> are created equal.
58*7c478bd9Sstevel@tonic-gate  */
59*7c478bd9Sstevel@tonic-gate #ifndef _MBSTATE_T
60*7c478bd9Sstevel@tonic-gate #define _MBSTATE_T
61*7c478bd9Sstevel@tonic-gate typedef int mbstate_t;
62*7c478bd9Sstevel@tonic-gate #endif
63*7c478bd9Sstevel@tonic-gate 
64*7c478bd9Sstevel@tonic-gate #define ERR			EOF
65*7c478bd9Sstevel@tonic-gate #define OK			0
66*7c478bd9Sstevel@tonic-gate 
67*7c478bd9Sstevel@tonic-gate #if !(defined(__cplusplus) && defined(_BOOL))
68*7c478bd9Sstevel@tonic-gate typedef	short bool;
69*7c478bd9Sstevel@tonic-gate #endif
70*7c478bd9Sstevel@tonic-gate 
71*7c478bd9Sstevel@tonic-gate #define TRUE    		1
72*7c478bd9Sstevel@tonic-gate #define FALSE   		0
73*7c478bd9Sstevel@tonic-gate 
74*7c478bd9Sstevel@tonic-gate typedef unsigned short attr_t;
75*7c478bd9Sstevel@tonic-gate 
76*7c478bd9Sstevel@tonic-gate /*
77*7c478bd9Sstevel@tonic-gate  * These attributes and masks can be applied to an attr_t.
78*7c478bd9Sstevel@tonic-gate  * These are ordered according to the <no_color_video> mask,
79*7c478bd9Sstevel@tonic-gate  * which has been extended to include additional attributes.
80*7c478bd9Sstevel@tonic-gate  */
81*7c478bd9Sstevel@tonic-gate #define WA_NORMAL	0x0
82*7c478bd9Sstevel@tonic-gate #define WA_STANDOUT	0x0001
83*7c478bd9Sstevel@tonic-gate #define WA_UNDERLINE	0x0002
84*7c478bd9Sstevel@tonic-gate #define WA_REVERSE	0x0004
85*7c478bd9Sstevel@tonic-gate #define WA_BLINK	0x0008
86*7c478bd9Sstevel@tonic-gate #define WA_DIM		0x0010
87*7c478bd9Sstevel@tonic-gate #define WA_BOLD		0x0020
88*7c478bd9Sstevel@tonic-gate #define WA_INVIS	0x0040
89*7c478bd9Sstevel@tonic-gate #define WA_PROTECT	0x0080
90*7c478bd9Sstevel@tonic-gate #define WA_ALTCHARSET	0x0100
91*7c478bd9Sstevel@tonic-gate #define WA_HORIZONTAL	0x0200
92*7c478bd9Sstevel@tonic-gate #define WA_LEFT		0x0400
93*7c478bd9Sstevel@tonic-gate #define WA_LOW		0x0800
94*7c478bd9Sstevel@tonic-gate #define WA_RIGHT	0x1000
95*7c478bd9Sstevel@tonic-gate #define WA_TOP		0x2000
96*7c478bd9Sstevel@tonic-gate #define WA_VERTICAL	0x4000
97*7c478bd9Sstevel@tonic-gate 
98*7c478bd9Sstevel@tonic-gate #define WA_SGR_MASK	0x01ff		/* Historical attribute set. */
99*7c478bd9Sstevel@tonic-gate #define WA_SGR1_MASK	0x7e00		/* Extended attribute set. */
100*7c478bd9Sstevel@tonic-gate 
101*7c478bd9Sstevel@tonic-gate /*
102*7c478bd9Sstevel@tonic-gate  * Internal attribute used to support <ceol_standout_glitch>.
103*7c478bd9Sstevel@tonic-gate  */
104*7c478bd9Sstevel@tonic-gate #define WA_COOKIE	0x8000
105*7c478bd9Sstevel@tonic-gate 
106*7c478bd9Sstevel@tonic-gate /*
107*7c478bd9Sstevel@tonic-gate  * Color names.
108*7c478bd9Sstevel@tonic-gate  */
109*7c478bd9Sstevel@tonic-gate #define COLOR_BLACK     0
110*7c478bd9Sstevel@tonic-gate #define COLOR_BLUE      1
111*7c478bd9Sstevel@tonic-gate #define COLOR_GREEN     2
112*7c478bd9Sstevel@tonic-gate #define COLOR_CYAN      3
113*7c478bd9Sstevel@tonic-gate #define COLOR_RED       4
114*7c478bd9Sstevel@tonic-gate #define COLOR_MAGENTA   5
115*7c478bd9Sstevel@tonic-gate #define COLOR_YELLOW    6
116*7c478bd9Sstevel@tonic-gate #define COLOR_WHITE     7
117*7c478bd9Sstevel@tonic-gate 
118*7c478bd9Sstevel@tonic-gate /*
119*7c478bd9Sstevel@tonic-gate  * A cchar_t details the attributes, color, and a string of wide characters
120*7c478bd9Sstevel@tonic-gate  * composing a complex character (p12).  The wide character string consists
121*7c478bd9Sstevel@tonic-gate  * of a spacing character (wcwidth() > 0) and zero or more non-spacing
122*7c478bd9Sstevel@tonic-gate  * characters.  Xcurses (p17) states that the minimum number of non-spacing
123*7c478bd9Sstevel@tonic-gate  * characters associated with a spacing character must be at least 5, if a
124*7c478bd9Sstevel@tonic-gate  * limit is imposed.
125*7c478bd9Sstevel@tonic-gate  */
126*7c478bd9Sstevel@tonic-gate #define M_CCHAR_MAX	6
127*7c478bd9Sstevel@tonic-gate 
128*7c478bd9Sstevel@tonic-gate /***
129*7c478bd9Sstevel@tonic-gate  *** Opaque data type.  Keep your grubby mits off.
130*7c478bd9Sstevel@tonic-gate  ***/
131*7c478bd9Sstevel@tonic-gate typedef struct {
132*7c478bd9Sstevel@tonic-gate 	short _f;			/* True if start of character. */
133*7c478bd9Sstevel@tonic-gate 	short _n;			/* Number of elements in wc[]. */
134*7c478bd9Sstevel@tonic-gate         short _co;			/* Color pair number. */
135*7c478bd9Sstevel@tonic-gate         attr_t _at;			/* Attribute flags. */
136*7c478bd9Sstevel@tonic-gate         wchar_t _wc[M_CCHAR_MAX];	/* Complex spacing character. */
137*7c478bd9Sstevel@tonic-gate } cchar_t;
138*7c478bd9Sstevel@tonic-gate 
139*7c478bd9Sstevel@tonic-gate /***
140*7c478bd9Sstevel@tonic-gate  *** Opaque data type.  Keep your grubby mits off.
141*7c478bd9Sstevel@tonic-gate  ***/
142*7c478bd9Sstevel@tonic-gate typedef struct window_t {
143*7c478bd9Sstevel@tonic-gate 	cchar_t _bg;			/* Background. */
144*7c478bd9Sstevel@tonic-gate 	cchar_t _fg;			/* Foreground, ignore character. */
145*7c478bd9Sstevel@tonic-gate 	short _cury, _curx;		/* Curent cursor position in window. */
146*7c478bd9Sstevel@tonic-gate 	short _begy, _begx;		/* Upper-left origin on screen. */
147*7c478bd9Sstevel@tonic-gate 	short _maxy, _maxx;		/* Window dimensions. */
148*7c478bd9Sstevel@tonic-gate 	short _top, _bottom;		/* Window's software scroll region. */
149*7c478bd9Sstevel@tonic-gate 	short _refy, _refx;		/* Pad origin of last refresh. */
150*7c478bd9Sstevel@tonic-gate 	short _sminy, _sminx;		/* T-L screen corner of last refresh. */
151*7c478bd9Sstevel@tonic-gate 	short _smaxy, _smaxx;		/* B-R screen corner of last refresh. */
152*7c478bd9Sstevel@tonic-gate 	short _vmin, _vtime;		/* wtimeout() control. */
153*7c478bd9Sstevel@tonic-gate 	short *_first, *_last;		/* Dirty region for each screen line. */
154*7c478bd9Sstevel@tonic-gate 	unsigned short _flags;		/* Internal flags for the window. */
155*7c478bd9Sstevel@tonic-gate 	unsigned short _scroll;		/* Internal for scroll optimization. */
156*7c478bd9Sstevel@tonic-gate 	cchar_t **_line;
157*7c478bd9Sstevel@tonic-gate 	cchar_t *_base;			/* Block of M*N screen cells. */
158*7c478bd9Sstevel@tonic-gate 	struct window_t *_parent;	/* Parent of sub-window. */
159*7c478bd9Sstevel@tonic-gate } WINDOW;
160*7c478bd9Sstevel@tonic-gate 
161*7c478bd9Sstevel@tonic-gate /***
162*7c478bd9Sstevel@tonic-gate  *** Opaque data type.  Keep your grubby mits off.
163*7c478bd9Sstevel@tonic-gate  ***/
164*7c478bd9Sstevel@tonic-gate typedef struct {
165*7c478bd9Sstevel@tonic-gate 	int _kfd;		/* typeahead() file descriptor. */
166*7c478bd9Sstevel@tonic-gate 	FILE *_if, *_of;	/* I/O file pointers. */
167*7c478bd9Sstevel@tonic-gate 	TERMINAL *_term;	/* Associated terminfo entry. */
168*7c478bd9Sstevel@tonic-gate 	WINDOW *_newscr;	/* New screen image built by wnoutrefresh(). */
169*7c478bd9Sstevel@tonic-gate 	WINDOW *_curscr;	/* Current screen image after doupdate(). */
170*7c478bd9Sstevel@tonic-gate 	mbstate_t _state;	/* Current multibyte state of _of. */
171*7c478bd9Sstevel@tonic-gate 	unsigned long *_hash;	/* Hash values for curscr's screen lines. */
172*7c478bd9Sstevel@tonic-gate 	unsigned short _flags;	/* Assorted flags. */
173*7c478bd9Sstevel@tonic-gate 	void *_decode;		/* Function key decode tree. */
174*7c478bd9Sstevel@tonic-gate 	void *_in;		/* Wide I/O object. */
175*7c478bd9Sstevel@tonic-gate 	struct {
176*7c478bd9Sstevel@tonic-gate 		int _size;	/* Allocated size of the input stack. */
177*7c478bd9Sstevel@tonic-gate 		int _count;	/* Number of entries on the input stack. */
178*7c478bd9Sstevel@tonic-gate 		int *_stack;	/* Buffer used for the input stack. */
179*7c478bd9Sstevel@tonic-gate 	} _unget;
180*7c478bd9Sstevel@tonic-gate 	struct {
181*7c478bd9Sstevel@tonic-gate 		WINDOW *_w;	/* Exists on if emulating soft label keys. */
182*7c478bd9Sstevel@tonic-gate 		char *_labels[8];	/* Soft label key strings. */
183*7c478bd9Sstevel@tonic-gate 		short _justify[8];	/* Justification for label. */
184*7c478bd9Sstevel@tonic-gate 	} _slk;
185*7c478bd9Sstevel@tonic-gate } SCREEN;
186*7c478bd9Sstevel@tonic-gate 
187*7c478bd9Sstevel@tonic-gate #ifndef __M_UNCTRL_H__
188*7c478bd9Sstevel@tonic-gate /*
189*7c478bd9Sstevel@tonic-gate  * Backwards compatiblity with historical Curses applications.
190*7c478bd9Sstevel@tonic-gate  */
191*7c478bd9Sstevel@tonic-gate typedef unsigned long chtype;
192*7c478bd9Sstevel@tonic-gate #endif
193*7c478bd9Sstevel@tonic-gate 
194*7c478bd9Sstevel@tonic-gate /*
195*7c478bd9Sstevel@tonic-gate  * These attributes and masks can be applied to a chtype.
196*7c478bd9Sstevel@tonic-gate  * They are order according to the <no_color_video> mask.
197*7c478bd9Sstevel@tonic-gate  */
198*7c478bd9Sstevel@tonic-gate #define A_NORMAL        0x00000000L
199*7c478bd9Sstevel@tonic-gate #define A_ATTRIBUTES    0xffff0000L	/* Color/Attribute mask */
200*7c478bd9Sstevel@tonic-gate #define A_CHARTEXT      0x0000ffffL     /* 16-bit character mask */
201*7c478bd9Sstevel@tonic-gate #define A_COLOR         0xfe000000L     /* Colour mask, see __COLOR_SHIFT */
202*7c478bd9Sstevel@tonic-gate #define A_STANDOUT      0x00010000L
203*7c478bd9Sstevel@tonic-gate #define A_UNDERLINE     0x00020000L
204*7c478bd9Sstevel@tonic-gate #define A_REVERSE       0x00040000L
205*7c478bd9Sstevel@tonic-gate #define A_BLINK         0x00080000L
206*7c478bd9Sstevel@tonic-gate #define A_DIM           0x00100000L
207*7c478bd9Sstevel@tonic-gate #define A_BOLD          0x00200000L
208*7c478bd9Sstevel@tonic-gate #define A_INVIS         0x00400000L
209*7c478bd9Sstevel@tonic-gate #define A_PROTECT       0x00800000L
210*7c478bd9Sstevel@tonic-gate #define A_ALTCHARSET    0x01000000L
211*7c478bd9Sstevel@tonic-gate 
212*7c478bd9Sstevel@tonic-gate /*
213*7c478bd9Sstevel@tonic-gate  * Colour atttribute support for chtype.
214*7c478bd9Sstevel@tonic-gate  */
215*7c478bd9Sstevel@tonic-gate #define __COLOR_SHIFT	26
216*7c478bd9Sstevel@tonic-gate 
217*7c478bd9Sstevel@tonic-gate /*
218*7c478bd9Sstevel@tonic-gate  * Characters constants used with a chtype.
219*7c478bd9Sstevel@tonic-gate  * Mapping defined in Xcurses Section 6.2.12 (p260).
220*7c478bd9Sstevel@tonic-gate  */
221*7c478bd9Sstevel@tonic-gate #define ACS_VLINE       (A_ALTCHARSET | 'x')
222*7c478bd9Sstevel@tonic-gate #define ACS_HLINE       (A_ALTCHARSET | 'q')
223*7c478bd9Sstevel@tonic-gate #define ACS_ULCORNER    (A_ALTCHARSET | 'l')
224*7c478bd9Sstevel@tonic-gate #define ACS_URCORNER    (A_ALTCHARSET | 'k')
225*7c478bd9Sstevel@tonic-gate #define ACS_LLCORNER    (A_ALTCHARSET | 'm')
226*7c478bd9Sstevel@tonic-gate #define ACS_LRCORNER    (A_ALTCHARSET | 'j')
227*7c478bd9Sstevel@tonic-gate #define ACS_RTEE        (A_ALTCHARSET | 'u')
228*7c478bd9Sstevel@tonic-gate #define ACS_LTEE        (A_ALTCHARSET | 't')
229*7c478bd9Sstevel@tonic-gate #define ACS_BTEE        (A_ALTCHARSET | 'v')
230*7c478bd9Sstevel@tonic-gate #define ACS_TTEE        (A_ALTCHARSET | 'w')
231*7c478bd9Sstevel@tonic-gate #define ACS_PLUS        (A_ALTCHARSET | 'n')
232*7c478bd9Sstevel@tonic-gate #define ACS_S1          (A_ALTCHARSET | 'o')
233*7c478bd9Sstevel@tonic-gate #define ACS_S9          (A_ALTCHARSET | 's')
234*7c478bd9Sstevel@tonic-gate #define ACS_DIAMOND     (A_ALTCHARSET | '`')
235*7c478bd9Sstevel@tonic-gate #define ACS_CKBOARD     (A_ALTCHARSET | 'a')
236*7c478bd9Sstevel@tonic-gate #define ACS_DEGREE      (A_ALTCHARSET | 'f')
237*7c478bd9Sstevel@tonic-gate #define ACS_PLMINUS     (A_ALTCHARSET | 'g')
238*7c478bd9Sstevel@tonic-gate #define ACS_BULLET      (A_ALTCHARSET | '~')
239*7c478bd9Sstevel@tonic-gate #define ACS_LARROW      (A_ALTCHARSET | ',')
240*7c478bd9Sstevel@tonic-gate #define ACS_RARROW      (A_ALTCHARSET | '+')
241*7c478bd9Sstevel@tonic-gate #define ACS_DARROW      (A_ALTCHARSET | '.')
242*7c478bd9Sstevel@tonic-gate #define ACS_UARROW      (A_ALTCHARSET | '-')
243*7c478bd9Sstevel@tonic-gate #define ACS_BOARD       (A_ALTCHARSET | 'h')
244*7c478bd9Sstevel@tonic-gate #define ACS_LANTERN     (A_ALTCHARSET | 'I')
245*7c478bd9Sstevel@tonic-gate #define ACS_BLOCK       (A_ALTCHARSET | '0')
246*7c478bd9Sstevel@tonic-gate 
247*7c478bd9Sstevel@tonic-gate #ifndef _XOPEN_SOURCE
248*7c478bd9Sstevel@tonic-gate /*
249*7c478bd9Sstevel@tonic-gate  * MKS Extensions for double width box characters.
250*7c478bd9Sstevel@tonic-gate  */
251*7c478bd9Sstevel@tonic-gate #define ACS_DVLINE      ACS_VLINE
252*7c478bd9Sstevel@tonic-gate #define ACS_DHLINE      ACS_HLINE
253*7c478bd9Sstevel@tonic-gate #define ACS_DULCORNER   ACS_ULCORNER
254*7c478bd9Sstevel@tonic-gate #define ACS_DURCORNER   ACS_URCORNER
255*7c478bd9Sstevel@tonic-gate #define ACS_DLLCORNER   ACS_LLCORNER
256*7c478bd9Sstevel@tonic-gate #define ACS_DLRCORNER   ACS_LRCORNER
257*7c478bd9Sstevel@tonic-gate #define ACS_DRTEE       ACS_RTEE
258*7c478bd9Sstevel@tonic-gate #define ACS_DLTEE       ACS_LTEE
259*7c478bd9Sstevel@tonic-gate #define ACS_DBTEE       ACS_BTEE
260*7c478bd9Sstevel@tonic-gate #define ACS_DTTEE       ACS_TTEE
261*7c478bd9Sstevel@tonic-gate #endif /* _XOPEN_SOURCE */
262*7c478bd9Sstevel@tonic-gate 
263*7c478bd9Sstevel@tonic-gate /*
264*7c478bd9Sstevel@tonic-gate  * Wide characters constants for a cchar_t.
265*7c478bd9Sstevel@tonic-gate  */
266*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_VLINE;
267*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_HLINE;
268*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_ULCORNER;
269*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_URCORNER;
270*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_LLCORNER;
271*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_LRCORNER;
272*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_RTEE;
273*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_LTEE;
274*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_BTEE;
275*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_TTEE;
276*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_PLUS;
277*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_S1;
278*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_S9;
279*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_DIAMOND;
280*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_CKBOARD;
281*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_DEGREE;
282*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_PLMINUS;
283*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_BULLET;
284*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_LARROW;
285*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_RARROW;
286*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_DARROW;
287*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_UARROW;
288*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_BOARD;
289*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_LANTERN;
290*7c478bd9Sstevel@tonic-gate extern const cchar_t __WACS_BLOCK;
291*7c478bd9Sstevel@tonic-gate 
292*7c478bd9Sstevel@tonic-gate #define WACS_VLINE	&__WACS_VLINE
293*7c478bd9Sstevel@tonic-gate #define WACS_HLINE	&__WACS_HLINE
294*7c478bd9Sstevel@tonic-gate #define WACS_ULCORNER	&__WACS_ULCORNER
295*7c478bd9Sstevel@tonic-gate #define WACS_URCORNER	&__WACS_URCORNER
296*7c478bd9Sstevel@tonic-gate #define WACS_LLCORNER	&__WACS_LLCORNER
297*7c478bd9Sstevel@tonic-gate #define WACS_LRCORNER	&__WACS_LRCORNER
298*7c478bd9Sstevel@tonic-gate #define WACS_RTEE	&__WACS_RTEE
299*7c478bd9Sstevel@tonic-gate #define WACS_LTEE	&__WACS_LTEE
300*7c478bd9Sstevel@tonic-gate #define WACS_BTEE	&__WACS_BTEE
301*7c478bd9Sstevel@tonic-gate #define WACS_TTEE	&__WACS_TTEE
302*7c478bd9Sstevel@tonic-gate #define WACS_PLUS	&__WACS_PLUS
303*7c478bd9Sstevel@tonic-gate #define WACS_S1		&__WACS_S1
304*7c478bd9Sstevel@tonic-gate #define WACS_S9		&__WACS_S9
305*7c478bd9Sstevel@tonic-gate #define WACS_DIAMOND	&__WACS_DIAMOND
306*7c478bd9Sstevel@tonic-gate #define WACS_CKBOARD	&__WACS_CKBOARD
307*7c478bd9Sstevel@tonic-gate #define WACS_DEGREE	&__WACS_DEGREE
308*7c478bd9Sstevel@tonic-gate #define WACS_PLMINUS	&__WACS_PLMINUS
309*7c478bd9Sstevel@tonic-gate #define WACS_BULLET	&__WACS_BULLET
310*7c478bd9Sstevel@tonic-gate #define WACS_LARROW	&__WACS_LARROW
311*7c478bd9Sstevel@tonic-gate #define WACS_RARROW	&__WACS_RARROW
312*7c478bd9Sstevel@tonic-gate #define WACS_DARROW	&__WACS_DARROW
313*7c478bd9Sstevel@tonic-gate #define WACS_UARROW	&__WACS_UARROW
314*7c478bd9Sstevel@tonic-gate #define WACS_BOARD	&__WACS_BOARD
315*7c478bd9Sstevel@tonic-gate #define WACS_LANTERN	&__WACS_LANTERN
316*7c478bd9Sstevel@tonic-gate #define WACS_BLOCK	&__WACS_BLOCK
317*7c478bd9Sstevel@tonic-gate 
318*7c478bd9Sstevel@tonic-gate #ifndef _XOPEN_SOURCE
319*7c478bd9Sstevel@tonic-gate /*
320*7c478bd9Sstevel@tonic-gate  * MKS Extensions for double width box characters.
321*7c478bd9Sstevel@tonic-gate  */
322*7c478bd9Sstevel@tonic-gate #define WACS_DVLINE      WACS_VLINE
323*7c478bd9Sstevel@tonic-gate #define WACS_DHLINE      WACS_HLINE
324*7c478bd9Sstevel@tonic-gate #define WACS_DULCORNER   WACS_ULCORNER
325*7c478bd9Sstevel@tonic-gate #define WACS_DURCORNER   WACS_URCORNER
326*7c478bd9Sstevel@tonic-gate #define WACS_DLLCORNER   WACS_LLCORNER
327*7c478bd9Sstevel@tonic-gate #define WACS_DLRCORNER   WACS_LRCORNER
328*7c478bd9Sstevel@tonic-gate #define WACS_DRTEE       WACS_RTEE
329*7c478bd9Sstevel@tonic-gate #define WACS_DLTEE       WACS_LTEE
330*7c478bd9Sstevel@tonic-gate #define WACS_DBTEE       WACS_BTEE
331*7c478bd9Sstevel@tonic-gate #define WACS_DTTEE       WACS_TTEE
332*7c478bd9Sstevel@tonic-gate #endif /* _XOPEN_SOURCE */
333*7c478bd9Sstevel@tonic-gate 
334*7c478bd9Sstevel@tonic-gate /*
335*7c478bd9Sstevel@tonic-gate  * Internal functions.
336*7c478bd9Sstevel@tonic-gate  */
337*7c478bd9Sstevel@tonic-gate extern int __m_outc(int);
338*7c478bd9Sstevel@tonic-gate extern int __m_tty_wc(int, wchar_t *);
339*7c478bd9Sstevel@tonic-gate extern int __m_chtype_cc(chtype, cchar_t *);
340*7c478bd9Sstevel@tonic-gate extern chtype __m_cc_chtype(const cchar_t *);
341*7c478bd9Sstevel@tonic-gate extern int __m_copywin(const WINDOW *, WINDOW *, int);
342*7c478bd9Sstevel@tonic-gate extern WINDOW *__m_newwin(WINDOW *, int, int, int, int);
343*7c478bd9Sstevel@tonic-gate 
344*7c478bd9Sstevel@tonic-gate /*
345*7c478bd9Sstevel@tonic-gate  * Internal macros.
346*7c478bd9Sstevel@tonic-gate  */
347*7c478bd9Sstevel@tonic-gate #define __m_getpary(w)		((w)->_parent == (WINDOW *) 0 ? -1 \
348*7c478bd9Sstevel@tonic-gate 				: (w)->_begy - (w)->_parent->_begy)
349*7c478bd9Sstevel@tonic-gate #define __m_getparx(w)		((w)->_parent == (WINDOW *) 0 ? -1 \
350*7c478bd9Sstevel@tonic-gate 				: (w)->_begx - (w)->_parent->_begx)
351*7c478bd9Sstevel@tonic-gate 
352*7c478bd9Sstevel@tonic-gate /*
353*7c478bd9Sstevel@tonic-gate  * Global Window Macros
354*7c478bd9Sstevel@tonic-gate  */
355*7c478bd9Sstevel@tonic-gate #define getyx(w,y,x)            (y = (w)->_cury, x = (w)->_curx)
356*7c478bd9Sstevel@tonic-gate #define getbegyx(w,y,x)         (y = (w)->_begy, x = (w)->_begx)
357*7c478bd9Sstevel@tonic-gate #define getmaxyx(w,y,x)         (y = (w)->_maxy, x = (w)->_maxx)
358*7c478bd9Sstevel@tonic-gate #define getparyx(w,y,x)         (y = __m_getpary(w), x = __m_getparx(w))
359*7c478bd9Sstevel@tonic-gate 
360*7c478bd9Sstevel@tonic-gate /*
361*7c478bd9Sstevel@tonic-gate  * Global variables
362*7c478bd9Sstevel@tonic-gate  */
363*7c478bd9Sstevel@tonic-gate extern int LINES, COLS;
364*7c478bd9Sstevel@tonic-gate extern int COLORS, COLOR_PAIRS;
365*7c478bd9Sstevel@tonic-gate extern WINDOW *curscr, *stdscr;
366*7c478bd9Sstevel@tonic-gate 
367*7c478bd9Sstevel@tonic-gate #ifndef _XOPEN_SOURCE
368*7c478bd9Sstevel@tonic-gate /*
369*7c478bd9Sstevel@tonic-gate  * Non-portable extension functions.
370*7c478bd9Sstevel@tonic-gate  */
371*7c478bd9Sstevel@tonic-gate extern int wistombs(char *, const wint_t *, int);
372*7c478bd9Sstevel@tonic-gate extern int wistowcs(wchar_t *, const wint_t *, int);
373*7c478bd9Sstevel@tonic-gate #endif /* _XOPEN_SOURCE */
374*7c478bd9Sstevel@tonic-gate 
375*7c478bd9Sstevel@tonic-gate #ifdef M_CURSES_TRACE
376*7c478bd9Sstevel@tonic-gate /*
377*7c478bd9Sstevel@tonic-gate  * Curses trace facility is only available with a version of
378*7c478bd9Sstevel@tonic-gate  * the library that was compiled with -DM_CURSES_TRACE.
379*7c478bd9Sstevel@tonic-gate  */
380*7c478bd9Sstevel@tonic-gate extern void traceoff(void);
381*7c478bd9Sstevel@tonic-gate extern void traceon(void);
382*7c478bd9Sstevel@tonic-gate #endif /* M_CURSES_TRACE */
383*7c478bd9Sstevel@tonic-gate 
384*7c478bd9Sstevel@tonic-gate extern int addch(chtype);
385*7c478bd9Sstevel@tonic-gate extern int addchnstr(const chtype *, int);
386*7c478bd9Sstevel@tonic-gate extern int addchstr(const chtype *);
387*7c478bd9Sstevel@tonic-gate extern int add_wch(const cchar_t *);
388*7c478bd9Sstevel@tonic-gate extern int add_wchnstr(const cchar_t *, int);
389*7c478bd9Sstevel@tonic-gate extern int add_wchstr(const cchar_t *);
390*7c478bd9Sstevel@tonic-gate extern int mvaddch(int, int, chtype);
391*7c478bd9Sstevel@tonic-gate extern int mvaddchnstr(int, int, const chtype *, int);
392*7c478bd9Sstevel@tonic-gate extern int mvaddchstr(int, int, const chtype *);
393*7c478bd9Sstevel@tonic-gate extern int mvadd_wch(int, int, const cchar_t *);
394*7c478bd9Sstevel@tonic-gate extern int mvadd_wchnstr(int, int, const cchar_t *, int);
395*7c478bd9Sstevel@tonic-gate extern int mvadd_wchstr(int, int, const cchar_t *);
396*7c478bd9Sstevel@tonic-gate extern int mvwaddch(WINDOW *, int, int, chtype);
397*7c478bd9Sstevel@tonic-gate extern int mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
398*7c478bd9Sstevel@tonic-gate extern int mvwaddchstr(WINDOW *, int, int, const chtype *);
399*7c478bd9Sstevel@tonic-gate extern int mvwadd_wch(WINDOW *, int, int, const cchar_t *);
400*7c478bd9Sstevel@tonic-gate extern int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
401*7c478bd9Sstevel@tonic-gate extern int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
402*7c478bd9Sstevel@tonic-gate extern int waddch(WINDOW *, chtype);
403*7c478bd9Sstevel@tonic-gate extern int waddchnstr(WINDOW *, const chtype *, int);
404*7c478bd9Sstevel@tonic-gate extern int waddchstr(WINDOW *, const chtype *);
405*7c478bd9Sstevel@tonic-gate extern int wadd_wch(WINDOW *, const cchar_t *);
406*7c478bd9Sstevel@tonic-gate extern int wadd_wchnstr(WINDOW *, const cchar_t *, int);
407*7c478bd9Sstevel@tonic-gate extern int wadd_wchstr(WINDOW *, const cchar_t *);
408*7c478bd9Sstevel@tonic-gate 
409*7c478bd9Sstevel@tonic-gate extern int addnstr(const char *, int);
410*7c478bd9Sstevel@tonic-gate extern int addstr(const char *);
411*7c478bd9Sstevel@tonic-gate extern int addnwstr(const wchar_t *, int);
412*7c478bd9Sstevel@tonic-gate extern int addwstr(const wchar_t *);
413*7c478bd9Sstevel@tonic-gate extern int mvaddnstr(int, int, const char *, int);
414*7c478bd9Sstevel@tonic-gate extern int mvaddstr(int, int, const char *);
415*7c478bd9Sstevel@tonic-gate extern int mvaddnwstr(int, int, const wchar_t *, int);
416*7c478bd9Sstevel@tonic-gate extern int mvaddwstr(int, int, const wchar_t *);
417*7c478bd9Sstevel@tonic-gate extern int mvwaddnstr(WINDOW *, int, int, const char *, int);
418*7c478bd9Sstevel@tonic-gate extern int mvwaddstr(WINDOW *, int, int, const char *);
419*7c478bd9Sstevel@tonic-gate extern int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
420*7c478bd9Sstevel@tonic-gate extern int mvwaddwstr(WINDOW *, int, int, const wchar_t *);
421*7c478bd9Sstevel@tonic-gate extern int waddnstr(WINDOW *, const char *, int);
422*7c478bd9Sstevel@tonic-gate extern int waddstr(WINDOW *, const char *);
423*7c478bd9Sstevel@tonic-gate extern int waddnwstr(WINDOW *, const wchar_t *, int);
424*7c478bd9Sstevel@tonic-gate extern int waddwstr(WINDOW *, const wchar_t *);
425*7c478bd9Sstevel@tonic-gate 
426*7c478bd9Sstevel@tonic-gate extern int attroff(int);
427*7c478bd9Sstevel@tonic-gate extern int attron(int);
428*7c478bd9Sstevel@tonic-gate extern int attrset(int);
429*7c478bd9Sstevel@tonic-gate extern int wattroff(WINDOW *, int);
430*7c478bd9Sstevel@tonic-gate extern int wattron(WINDOW *, int);
431*7c478bd9Sstevel@tonic-gate extern int wattrset(WINDOW *, int);
432*7c478bd9Sstevel@tonic-gate 
433*7c478bd9Sstevel@tonic-gate extern int attr_get(attr_t *, short *, void *);
434*7c478bd9Sstevel@tonic-gate extern int attr_off(attr_t, void *);
435*7c478bd9Sstevel@tonic-gate extern int attr_on(attr_t, void *);
436*7c478bd9Sstevel@tonic-gate extern int attr_set(attr_t, short, void *);
437*7c478bd9Sstevel@tonic-gate extern int color_set(short, void *);
438*7c478bd9Sstevel@tonic-gate extern int wattr_get(WINDOW *, attr_t *, short *, void *);
439*7c478bd9Sstevel@tonic-gate extern int wattr_off(WINDOW *, attr_t, void *);
440*7c478bd9Sstevel@tonic-gate extern int wattr_on(WINDOW *, attr_t, void *);
441*7c478bd9Sstevel@tonic-gate extern int wattr_set(WINDOW *, attr_t, short, void *);
442*7c478bd9Sstevel@tonic-gate extern int wcolor_set(WINDOW *, short, void *);
443*7c478bd9Sstevel@tonic-gate 
444*7c478bd9Sstevel@tonic-gate extern chtype COLOR_PAIR(short);
445*7c478bd9Sstevel@tonic-gate extern short PAIR_NUMBER(chtype);
446*7c478bd9Sstevel@tonic-gate 
447*7c478bd9Sstevel@tonic-gate extern int baudrate(void);
448*7c478bd9Sstevel@tonic-gate 
449*7c478bd9Sstevel@tonic-gate extern int delay_output(int);
450*7c478bd9Sstevel@tonic-gate extern int napms(int);
451*7c478bd9Sstevel@tonic-gate 
452*7c478bd9Sstevel@tonic-gate extern int beep(void);
453*7c478bd9Sstevel@tonic-gate extern int flash(void);
454*7c478bd9Sstevel@tonic-gate 
455*7c478bd9Sstevel@tonic-gate extern int bkgd(chtype);
456*7c478bd9Sstevel@tonic-gate extern int bkgdset(chtype);
457*7c478bd9Sstevel@tonic-gate extern chtype getbkgd(WINDOW *);
458*7c478bd9Sstevel@tonic-gate extern int wbkgd(WINDOW *, chtype);
459*7c478bd9Sstevel@tonic-gate extern int wbkgdset(WINDOW *, chtype);
460*7c478bd9Sstevel@tonic-gate 
461*7c478bd9Sstevel@tonic-gate extern int bkgrnd(const cchar_t *);
462*7c478bd9Sstevel@tonic-gate extern void bkgrndset(const cchar_t *);
463*7c478bd9Sstevel@tonic-gate extern int getbkgrnd(cchar_t *);
464*7c478bd9Sstevel@tonic-gate extern int wbkgrnd(WINDOW *, const cchar_t *);
465*7c478bd9Sstevel@tonic-gate extern void wbkgrndset(WINDOW *, const cchar_t *);
466*7c478bd9Sstevel@tonic-gate extern int wgetbkgrnd(WINDOW *, cchar_t *);
467*7c478bd9Sstevel@tonic-gate 
468*7c478bd9Sstevel@tonic-gate extern int border(
469*7c478bd9Sstevel@tonic-gate 	chtype, chtype, chtype, chtype,
470*7c478bd9Sstevel@tonic-gate 	chtype, chtype, chtype, chtype);
471*7c478bd9Sstevel@tonic-gate extern int border_set(
472*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
473*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
474*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
475*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *);
476*7c478bd9Sstevel@tonic-gate extern int box(WINDOW *, chtype, chtype);
477*7c478bd9Sstevel@tonic-gate extern int box_set(WINDOW *, const cchar_t *, const cchar_t *);
478*7c478bd9Sstevel@tonic-gate extern int wborder(
479*7c478bd9Sstevel@tonic-gate 	WINDOW *,
480*7c478bd9Sstevel@tonic-gate 	chtype, chtype, chtype, chtype,
481*7c478bd9Sstevel@tonic-gate 	chtype, chtype, chtype, chtype);
482*7c478bd9Sstevel@tonic-gate extern int wborder_set(
483*7c478bd9Sstevel@tonic-gate 	WINDOW *,
484*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
485*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
486*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *,
487*7c478bd9Sstevel@tonic-gate 	const cchar_t *, const cchar_t *);
488*7c478bd9Sstevel@tonic-gate 
489*7c478bd9Sstevel@tonic-gate extern bool can_change_color(void);
490*7c478bd9Sstevel@tonic-gate extern int color_content(short, short *, short *, short *);
491*7c478bd9Sstevel@tonic-gate extern bool has_colors(void);
492*7c478bd9Sstevel@tonic-gate extern int init_color(short, short, short, short);
493*7c478bd9Sstevel@tonic-gate extern int init_pair(short, short, short);
494*7c478bd9Sstevel@tonic-gate extern int pair_content(short, short *, short *);
495*7c478bd9Sstevel@tonic-gate extern int start_color(void);
496*7c478bd9Sstevel@tonic-gate 
497*7c478bd9Sstevel@tonic-gate extern int cbreak(void);
498*7c478bd9Sstevel@tonic-gate extern int halfdelay(int);
499*7c478bd9Sstevel@tonic-gate extern int nocbreak(void);
500*7c478bd9Sstevel@tonic-gate extern int raw(void);
501*7c478bd9Sstevel@tonic-gate extern int noraw(void);
502*7c478bd9Sstevel@tonic-gate 
503*7c478bd9Sstevel@tonic-gate extern int chgat(int, attr_t, short, const void *);
504*7c478bd9Sstevel@tonic-gate extern int mvchgat(int, int, int, attr_t, short, const void *);
505*7c478bd9Sstevel@tonic-gate extern int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
506*7c478bd9Sstevel@tonic-gate extern int wchgat(WINDOW *, int, attr_t, short, const void *);
507*7c478bd9Sstevel@tonic-gate 
508*7c478bd9Sstevel@tonic-gate extern int clear(void);
509*7c478bd9Sstevel@tonic-gate extern int clrtobot(void);
510*7c478bd9Sstevel@tonic-gate extern int clrtoeol(void);
511*7c478bd9Sstevel@tonic-gate extern int erase(void);
512*7c478bd9Sstevel@tonic-gate extern int wclear(WINDOW *);
513*7c478bd9Sstevel@tonic-gate extern int wclrtobot(WINDOW *);
514*7c478bd9Sstevel@tonic-gate extern int wclrtoeol(WINDOW *);
515*7c478bd9Sstevel@tonic-gate extern int werase(WINDOW *);
516*7c478bd9Sstevel@tonic-gate 
517*7c478bd9Sstevel@tonic-gate extern int clearok(WINDOW *, bool);
518*7c478bd9Sstevel@tonic-gate extern void idcok(WINDOW *, bool);
519*7c478bd9Sstevel@tonic-gate extern int idlok(WINDOW *, bool);
520*7c478bd9Sstevel@tonic-gate extern void immedok(WINDOW *, bool);
521*7c478bd9Sstevel@tonic-gate extern int intrflush(WINDOW *, bool);
522*7c478bd9Sstevel@tonic-gate extern int keypad(WINDOW *, bool);
523*7c478bd9Sstevel@tonic-gate extern int leaveok(WINDOW *, bool);
524*7c478bd9Sstevel@tonic-gate extern int meta(WINDOW *, bool);
525*7c478bd9Sstevel@tonic-gate extern int nodelay(WINDOW *, bool);
526*7c478bd9Sstevel@tonic-gate extern int notimeout(WINDOW *, bool);
527*7c478bd9Sstevel@tonic-gate extern int scrollok(WINDOW *, bool);
528*7c478bd9Sstevel@tonic-gate extern int syncok(WINDOW *, bool);
529*7c478bd9Sstevel@tonic-gate 
530*7c478bd9Sstevel@tonic-gate extern int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
531*7c478bd9Sstevel@tonic-gate extern int overlay(const WINDOW *, WINDOW *);
532*7c478bd9Sstevel@tonic-gate extern int overwrite(const WINDOW *, WINDOW *);
533*7c478bd9Sstevel@tonic-gate 
534*7c478bd9Sstevel@tonic-gate extern int curs_set(int);
535*7c478bd9Sstevel@tonic-gate 
536*7c478bd9Sstevel@tonic-gate extern int def_prog_mode(void);
537*7c478bd9Sstevel@tonic-gate extern int def_shell_mode(void);
538*7c478bd9Sstevel@tonic-gate extern int reset_prog_mode(void);
539*7c478bd9Sstevel@tonic-gate extern int reset_shell_mode(void);
540*7c478bd9Sstevel@tonic-gate 
541*7c478bd9Sstevel@tonic-gate extern int delch(void);
542*7c478bd9Sstevel@tonic-gate extern int mvdelch(int, int);
543*7c478bd9Sstevel@tonic-gate extern int mvwdelch(WINDOW *, int, int);
544*7c478bd9Sstevel@tonic-gate extern int wdelch(WINDOW *);
545*7c478bd9Sstevel@tonic-gate 
546*7c478bd9Sstevel@tonic-gate extern int deleteln(void);
547*7c478bd9Sstevel@tonic-gate extern int insdelln(int);
548*7c478bd9Sstevel@tonic-gate extern int insertln(void);
549*7c478bd9Sstevel@tonic-gate extern int wdeleteln(WINDOW *);
550*7c478bd9Sstevel@tonic-gate extern int winsdelln(WINDOW *, int);
551*7c478bd9Sstevel@tonic-gate extern int winsertln(WINDOW *);
552*7c478bd9Sstevel@tonic-gate 
553*7c478bd9Sstevel@tonic-gate extern void delscreen(SCREEN *);
554*7c478bd9Sstevel@tonic-gate extern SCREEN *newterm(char *, FILE *, FILE *);
555*7c478bd9Sstevel@tonic-gate extern SCREEN *set_term(SCREEN *);
556*7c478bd9Sstevel@tonic-gate 
557*7c478bd9Sstevel@tonic-gate extern int delwin(WINDOW *);
558*7c478bd9Sstevel@tonic-gate extern WINDOW *derwin(WINDOW *, int, int, int, int);
559*7c478bd9Sstevel@tonic-gate extern WINDOW *dupwin(WINDOW *);
560*7c478bd9Sstevel@tonic-gate extern WINDOW *getwin(FILE *);
561*7c478bd9Sstevel@tonic-gate extern int mvwin(WINDOW *, int, int);
562*7c478bd9Sstevel@tonic-gate extern int mvderwin(WINDOW *, int, int);
563*7c478bd9Sstevel@tonic-gate extern WINDOW *newwin(int, int, int, int);
564*7c478bd9Sstevel@tonic-gate extern int putwin(WINDOW *,  FILE *);
565*7c478bd9Sstevel@tonic-gate extern int redrawwin(WINDOW *);
566*7c478bd9Sstevel@tonic-gate extern WINDOW *subwin(WINDOW *, int, int, int, int);
567*7c478bd9Sstevel@tonic-gate extern int wredrawln(WINDOW *, int, int);
568*7c478bd9Sstevel@tonic-gate 
569*7c478bd9Sstevel@tonic-gate extern int doupdate(void);
570*7c478bd9Sstevel@tonic-gate extern int refresh(void);
571*7c478bd9Sstevel@tonic-gate extern int wnoutrefresh(WINDOW *);
572*7c478bd9Sstevel@tonic-gate extern int wrefresh(WINDOW *);
573*7c478bd9Sstevel@tonic-gate 
574*7c478bd9Sstevel@tonic-gate extern int echo(void);
575*7c478bd9Sstevel@tonic-gate extern int noecho(void);
576*7c478bd9Sstevel@tonic-gate extern int echochar(chtype);
577*7c478bd9Sstevel@tonic-gate extern int echo_wchar(const cchar_t *);
578*7c478bd9Sstevel@tonic-gate extern int wechochar(WINDOW *, chtype);
579*7c478bd9Sstevel@tonic-gate extern int wecho_wchar(WINDOW *, const cchar_t *);
580*7c478bd9Sstevel@tonic-gate 
581*7c478bd9Sstevel@tonic-gate extern int endwin(void);
582*7c478bd9Sstevel@tonic-gate extern void filter(void);
583*7c478bd9Sstevel@tonic-gate extern WINDOW *initscr(void);
584*7c478bd9Sstevel@tonic-gate extern bool isendwin(void);
585*7c478bd9Sstevel@tonic-gate extern int ripoffline(int, int (*)(WINDOW *, int));
586*7c478bd9Sstevel@tonic-gate extern int typeahead(int);
587*7c478bd9Sstevel@tonic-gate extern void use_env(bool);
588*7c478bd9Sstevel@tonic-gate 
589*7c478bd9Sstevel@tonic-gate extern int erasechar(void);
590*7c478bd9Sstevel@tonic-gate extern int erasewchar(wchar_t *);
591*7c478bd9Sstevel@tonic-gate extern int killchar(void);
592*7c478bd9Sstevel@tonic-gate extern int killwchar(wchar_t *);
593*7c478bd9Sstevel@tonic-gate 
594*7c478bd9Sstevel@tonic-gate extern int flushinp(void);
595*7c478bd9Sstevel@tonic-gate 
596*7c478bd9Sstevel@tonic-gate extern int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
597*7c478bd9Sstevel@tonic-gate extern int setcchar(cchar_t *, const wchar_t *, attr_t, short, const void *);
598*7c478bd9Sstevel@tonic-gate 
599*7c478bd9Sstevel@tonic-gate extern int getch(void);
600*7c478bd9Sstevel@tonic-gate extern int get_wch(wint_t *);
601*7c478bd9Sstevel@tonic-gate extern int mvgetch(int, int);
602*7c478bd9Sstevel@tonic-gate extern int mvget_wch(int, int, wint_t *);
603*7c478bd9Sstevel@tonic-gate extern int mvwgetch(WINDOW *, int, int);
604*7c478bd9Sstevel@tonic-gate extern int mvwget_wch(WINDOW *, int, int, wint_t *);
605*7c478bd9Sstevel@tonic-gate extern int wgetch(WINDOW *);
606*7c478bd9Sstevel@tonic-gate extern int wget_wch(WINDOW *, wint_t *);
607*7c478bd9Sstevel@tonic-gate 
608*7c478bd9Sstevel@tonic-gate extern int getnstr(char *, int);
609*7c478bd9Sstevel@tonic-gate extern int getstr(char *);
610*7c478bd9Sstevel@tonic-gate extern int mvgetnstr(int, int, char *, int);
611*7c478bd9Sstevel@tonic-gate extern int mvgetstr(int, int, char *);
612*7c478bd9Sstevel@tonic-gate extern int mvwgetnstr(WINDOW *, int, int, char *, int);
613*7c478bd9Sstevel@tonic-gate extern int mvwgetstr(WINDOW *, int, int, char *);
614*7c478bd9Sstevel@tonic-gate extern int wgetnstr(WINDOW *, char *, int);
615*7c478bd9Sstevel@tonic-gate extern int wgetstr(WINDOW *, char *);
616*7c478bd9Sstevel@tonic-gate 
617*7c478bd9Sstevel@tonic-gate extern int getn_wstr(wint_t *, int);
618*7c478bd9Sstevel@tonic-gate extern int get_wstr(wint_t *);
619*7c478bd9Sstevel@tonic-gate extern int mvgetn_wstr(int, int, wint_t *, int);
620*7c478bd9Sstevel@tonic-gate extern int mvget_wstr(int, int, wint_t *);
621*7c478bd9Sstevel@tonic-gate extern int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);
622*7c478bd9Sstevel@tonic-gate extern int mvwget_wstr(WINDOW *, int, int, wint_t *);
623*7c478bd9Sstevel@tonic-gate extern int wgetn_wstr(WINDOW *, wint_t *, int);
624*7c478bd9Sstevel@tonic-gate extern int wget_wstr(WINDOW *, wint_t *);
625*7c478bd9Sstevel@tonic-gate 
626*7c478bd9Sstevel@tonic-gate extern bool has_ic(void);
627*7c478bd9Sstevel@tonic-gate extern bool has_il(void);
628*7c478bd9Sstevel@tonic-gate 
629*7c478bd9Sstevel@tonic-gate extern int hline(chtype, int);
630*7c478bd9Sstevel@tonic-gate extern int hline_set(const cchar_t *, int);
631*7c478bd9Sstevel@tonic-gate extern int vline(chtype, int);
632*7c478bd9Sstevel@tonic-gate extern int vline_set(const cchar_t *, int);
633*7c478bd9Sstevel@tonic-gate extern int mvhline(int, int, chtype, int);
634*7c478bd9Sstevel@tonic-gate extern int mvhline_set(int, int, const cchar_t *, int);
635*7c478bd9Sstevel@tonic-gate extern int mvvline(int, int, chtype, int);
636*7c478bd9Sstevel@tonic-gate extern int mvvline_set(int, int, const cchar_t *, int);
637*7c478bd9Sstevel@tonic-gate extern int mvwhline(WINDOW *, int, int, chtype, int);
638*7c478bd9Sstevel@tonic-gate extern int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
639*7c478bd9Sstevel@tonic-gate extern int mvwvline(WINDOW *, int, int, chtype, int);
640*7c478bd9Sstevel@tonic-gate extern int mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
641*7c478bd9Sstevel@tonic-gate extern int whline(WINDOW *, chtype, int);
642*7c478bd9Sstevel@tonic-gate extern int whline_set(WINDOW *, const cchar_t *, int);
643*7c478bd9Sstevel@tonic-gate extern int wvline(WINDOW *, chtype, int);
644*7c478bd9Sstevel@tonic-gate extern int wvline_set(WINDOW *, const cchar_t *, int);
645*7c478bd9Sstevel@tonic-gate 
646*7c478bd9Sstevel@tonic-gate extern chtype inch(void);
647*7c478bd9Sstevel@tonic-gate extern int inchnstr(chtype *, int);
648*7c478bd9Sstevel@tonic-gate extern int inchstr(chtype *);
649*7c478bd9Sstevel@tonic-gate extern int in_wch(cchar_t *);
650*7c478bd9Sstevel@tonic-gate extern int in_wchnstr(cchar_t *, int);
651*7c478bd9Sstevel@tonic-gate extern int in_wchstr(cchar_t *);
652*7c478bd9Sstevel@tonic-gate extern chtype mvinch(int, int);
653*7c478bd9Sstevel@tonic-gate extern int mvinchnstr(int, int, chtype *, int);
654*7c478bd9Sstevel@tonic-gate extern int mvinchstr(int, int, chtype *);
655*7c478bd9Sstevel@tonic-gate extern int mvin_wch(int, int, cchar_t *);
656*7c478bd9Sstevel@tonic-gate extern int mvin_wchnstr(int, int, cchar_t *, int);
657*7c478bd9Sstevel@tonic-gate extern int mvin_wchstr(int, int, cchar_t *);
658*7c478bd9Sstevel@tonic-gate extern chtype mvwinch(WINDOW *, int, int);
659*7c478bd9Sstevel@tonic-gate extern int mvwinchnstr(WINDOW *, int, int, chtype *, int);
660*7c478bd9Sstevel@tonic-gate extern int mvwinchstr(WINDOW *, int, int, chtype *);
661*7c478bd9Sstevel@tonic-gate extern int mvwin_wch(WINDOW *, int, int, cchar_t *);
662*7c478bd9Sstevel@tonic-gate extern int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
663*7c478bd9Sstevel@tonic-gate extern int mvwin_wchstr(WINDOW *, int, int, cchar_t *);
664*7c478bd9Sstevel@tonic-gate extern chtype winch(WINDOW *);
665*7c478bd9Sstevel@tonic-gate extern int winchnstr(WINDOW *, chtype *, int);
666*7c478bd9Sstevel@tonic-gate extern int winchstr(WINDOW *, chtype *);
667*7c478bd9Sstevel@tonic-gate extern int win_wch(WINDOW *, cchar_t *);
668*7c478bd9Sstevel@tonic-gate extern int win_wchnstr(WINDOW *, cchar_t *, int);
669*7c478bd9Sstevel@tonic-gate extern int win_wchstr(WINDOW *, cchar_t *);
670*7c478bd9Sstevel@tonic-gate 
671*7c478bd9Sstevel@tonic-gate extern int innstr(char *, int);
672*7c478bd9Sstevel@tonic-gate extern int instr(char *);
673*7c478bd9Sstevel@tonic-gate extern int innwstr(wchar_t *, int);
674*7c478bd9Sstevel@tonic-gate extern int inwstr(wchar_t *);
675*7c478bd9Sstevel@tonic-gate extern int mvinnstr(int, int, char *, int);
676*7c478bd9Sstevel@tonic-gate extern int mvinstr(int, int, char *);
677*7c478bd9Sstevel@tonic-gate extern int mvinnwstr(int, int, wchar_t *, int);
678*7c478bd9Sstevel@tonic-gate extern int mvinwstr(int, int, wchar_t *);
679*7c478bd9Sstevel@tonic-gate extern int mvwinnstr(WINDOW *, int, int, char *, int);
680*7c478bd9Sstevel@tonic-gate extern int mvwinstr(WINDOW *, int, int, char *);
681*7c478bd9Sstevel@tonic-gate extern int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
682*7c478bd9Sstevel@tonic-gate extern int mvwinwstr(WINDOW *, int, int, wchar_t *);
683*7c478bd9Sstevel@tonic-gate extern int winnstr(WINDOW *, char *, int);
684*7c478bd9Sstevel@tonic-gate extern int winstr(WINDOW *, char *);
685*7c478bd9Sstevel@tonic-gate extern int winnwstr(WINDOW *, wchar_t *, int);
686*7c478bd9Sstevel@tonic-gate extern int winwstr(WINDOW *, wchar_t *);
687*7c478bd9Sstevel@tonic-gate 
688*7c478bd9Sstevel@tonic-gate extern int insch(chtype);
689*7c478bd9Sstevel@tonic-gate extern int ins_wch(const cchar_t *);
690*7c478bd9Sstevel@tonic-gate extern int mvinsch(int, int, chtype);
691*7c478bd9Sstevel@tonic-gate extern int mvins_wch(int, int, const cchar_t *);
692*7c478bd9Sstevel@tonic-gate extern int mvwinsch(WINDOW *, int, int, chtype);
693*7c478bd9Sstevel@tonic-gate extern int mvwins_wch(WINDOW *, int, int, const cchar_t *);
694*7c478bd9Sstevel@tonic-gate extern int winsch(WINDOW *, chtype);
695*7c478bd9Sstevel@tonic-gate extern int wins_wch(WINDOW *, const cchar_t *);
696*7c478bd9Sstevel@tonic-gate 
697*7c478bd9Sstevel@tonic-gate extern int insnstr(const char *, int);
698*7c478bd9Sstevel@tonic-gate extern int insstr(const char *);
699*7c478bd9Sstevel@tonic-gate extern int ins_nwstr(const wchar_t *, int);
700*7c478bd9Sstevel@tonic-gate extern int ins_wstr(const wchar_t *);
701*7c478bd9Sstevel@tonic-gate extern int mvinsnstr(int, int, const char *, int);
702*7c478bd9Sstevel@tonic-gate extern int mvinsstr(int, int, const char *);
703*7c478bd9Sstevel@tonic-gate extern int mvins_nwstr(int, int, const wchar_t *, int);
704*7c478bd9Sstevel@tonic-gate extern int mvins_wstr(int, int, const wchar_t *);
705*7c478bd9Sstevel@tonic-gate extern int mvwinsnstr(WINDOW *, int, int, const char *, int);
706*7c478bd9Sstevel@tonic-gate extern int mvwinsstr(WINDOW *, int, int, const char *);
707*7c478bd9Sstevel@tonic-gate extern int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
708*7c478bd9Sstevel@tonic-gate extern int mvwins_wstr(WINDOW *, int, int, const wchar_t *);
709*7c478bd9Sstevel@tonic-gate extern int winsnstr(WINDOW *, const char *, int);
710*7c478bd9Sstevel@tonic-gate extern int winsstr(WINDOW *, const char *);
711*7c478bd9Sstevel@tonic-gate extern int wins_nwstr(WINDOW *, const wchar_t *, int);
712*7c478bd9Sstevel@tonic-gate extern int wins_wstr(WINDOW *, const wchar_t *);
713*7c478bd9Sstevel@tonic-gate 
714*7c478bd9Sstevel@tonic-gate extern bool is_linetouched(WINDOW *, int);
715*7c478bd9Sstevel@tonic-gate extern bool is_wintouched(WINDOW *);
716*7c478bd9Sstevel@tonic-gate extern int touchline(WINDOW *, int, int);
717*7c478bd9Sstevel@tonic-gate extern int touchwin(WINDOW *);
718*7c478bd9Sstevel@tonic-gate extern int wtouchln(WINDOW *, int, int, int);
719*7c478bd9Sstevel@tonic-gate extern int untouchwin(WINDOW *);
720*7c478bd9Sstevel@tonic-gate 
721*7c478bd9Sstevel@tonic-gate extern const char *keyname(int);
722*7c478bd9Sstevel@tonic-gate extern const char *key_name(wchar_t);
723*7c478bd9Sstevel@tonic-gate 
724*7c478bd9Sstevel@tonic-gate extern char *longname(void);
725*7c478bd9Sstevel@tonic-gate extern char *termname(void);
726*7c478bd9Sstevel@tonic-gate 
727*7c478bd9Sstevel@tonic-gate extern int move(int, int);
728*7c478bd9Sstevel@tonic-gate extern int wmove(WINDOW *, int, int);
729*7c478bd9Sstevel@tonic-gate 
730*7c478bd9Sstevel@tonic-gate extern int mvcur(int, int, int, int);
731*7c478bd9Sstevel@tonic-gate 
732*7c478bd9Sstevel@tonic-gate extern WINDOW *newpad(int, int);
733*7c478bd9Sstevel@tonic-gate extern int pechochar(WINDOW *, chtype);
734*7c478bd9Sstevel@tonic-gate extern int pecho_wchar(WINDOW *, const cchar_t *);
735*7c478bd9Sstevel@tonic-gate extern int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
736*7c478bd9Sstevel@tonic-gate extern int prefresh(WINDOW *, int, int, int, int, int, int);
737*7c478bd9Sstevel@tonic-gate extern WINDOW *subpad(WINDOW *, int, int, int, int);
738*7c478bd9Sstevel@tonic-gate 
739*7c478bd9Sstevel@tonic-gate extern int nl(void);
740*7c478bd9Sstevel@tonic-gate extern int nonl(void);
741*7c478bd9Sstevel@tonic-gate 
742*7c478bd9Sstevel@tonic-gate extern int printw(const char *, ...);
743*7c478bd9Sstevel@tonic-gate extern int mvprintw(int, int, const char *, ...);
744*7c478bd9Sstevel@tonic-gate extern int mvwprintw(WINDOW *, int, int, const char *, ...);
745*7c478bd9Sstevel@tonic-gate #if defined(sun)
746*7c478bd9Sstevel@tonic-gate extern int vwprintw(WINDOW *, const char *, __va_list);
747*7c478bd9Sstevel@tonic-gate extern int vw_printw(WINDOW *, const char *, __va_list);
748*7c478bd9Sstevel@tonic-gate #else
749*7c478bd9Sstevel@tonic-gate extern int vwprintw(WINDOW *, const char *, void *);
750*7c478bd9Sstevel@tonic-gate extern int vw_printw(WINDOW *, const char *, void *);
751*7c478bd9Sstevel@tonic-gate #endif
752*7c478bd9Sstevel@tonic-gate extern int wprintw(WINDOW *, const char *, ...);
753*7c478bd9Sstevel@tonic-gate 
754*7c478bd9Sstevel@tonic-gate extern void qiflush(void);
755*7c478bd9Sstevel@tonic-gate extern void noqiflush(void);
756*7c478bd9Sstevel@tonic-gate 
757*7c478bd9Sstevel@tonic-gate extern int resetty(void);
758*7c478bd9Sstevel@tonic-gate extern int savetty(void);
759*7c478bd9Sstevel@tonic-gate 
760*7c478bd9Sstevel@tonic-gate extern int scanw(const char *, ...);
761*7c478bd9Sstevel@tonic-gate extern int mvscanw(int, int, const char *, ...);
762*7c478bd9Sstevel@tonic-gate extern int mvwscanw(WINDOW *, int, int, const char *, ...);
763*7c478bd9Sstevel@tonic-gate #if defined(sun)
764*7c478bd9Sstevel@tonic-gate extern int vwscanw(WINDOW *, const char *, __va_list);
765*7c478bd9Sstevel@tonic-gate extern int vw_scanw(WINDOW *, const char *, __va_list);
766*7c478bd9Sstevel@tonic-gate #else
767*7c478bd9Sstevel@tonic-gate extern int vwscanw(WINDOW *, const char *, void *);
768*7c478bd9Sstevel@tonic-gate extern int vw_scanw(WINDOW *, const char *, void *);
769*7c478bd9Sstevel@tonic-gate #endif
770*7c478bd9Sstevel@tonic-gate extern int wscanw(WINDOW *, const char *, ...);
771*7c478bd9Sstevel@tonic-gate 
772*7c478bd9Sstevel@tonic-gate extern int scr_dump(const char *);
773*7c478bd9Sstevel@tonic-gate extern int scr_init(const char *);
774*7c478bd9Sstevel@tonic-gate extern int scr_restore(const char *);
775*7c478bd9Sstevel@tonic-gate extern int scr_set(const char *);
776*7c478bd9Sstevel@tonic-gate 
777*7c478bd9Sstevel@tonic-gate extern int scrl(int);
778*7c478bd9Sstevel@tonic-gate extern int scroll(WINDOW *);
779*7c478bd9Sstevel@tonic-gate extern int setscrreg(int, int);
780*7c478bd9Sstevel@tonic-gate extern int wscrl(WINDOW *, int);
781*7c478bd9Sstevel@tonic-gate extern int wsetscrreg(WINDOW *, int, int);
782*7c478bd9Sstevel@tonic-gate 
783*7c478bd9Sstevel@tonic-gate extern int slk_attroff(const chtype);
784*7c478bd9Sstevel@tonic-gate extern int slk_attron(const chtype);
785*7c478bd9Sstevel@tonic-gate extern int slk_attrset(const chtype);
786*7c478bd9Sstevel@tonic-gate extern int slk_attr_off(const attr_t, void *);
787*7c478bd9Sstevel@tonic-gate extern int slk_attr_on(const attr_t, void *);
788*7c478bd9Sstevel@tonic-gate extern int slk_attr_set(const attr_t, short, void *);
789*7c478bd9Sstevel@tonic-gate extern int slk_color_set(short);
790*7c478bd9Sstevel@tonic-gate extern int slk_clear(void);
791*7c478bd9Sstevel@tonic-gate extern int slk_init(int);
792*7c478bd9Sstevel@tonic-gate extern char *slk_label(int);
793*7c478bd9Sstevel@tonic-gate extern int slk_noutrefresh(void);
794*7c478bd9Sstevel@tonic-gate extern int slk_refresh(void);
795*7c478bd9Sstevel@tonic-gate extern int slk_restore(void);
796*7c478bd9Sstevel@tonic-gate extern int slk_set(int, const char *, int);
797*7c478bd9Sstevel@tonic-gate extern int slk_touch(void);
798*7c478bd9Sstevel@tonic-gate extern int slk_wset(int, const wchar_t *, int);
799*7c478bd9Sstevel@tonic-gate 
800*7c478bd9Sstevel@tonic-gate extern int standend(void);
801*7c478bd9Sstevel@tonic-gate extern int wstandend(WINDOW *);
802*7c478bd9Sstevel@tonic-gate extern int standout(void);
803*7c478bd9Sstevel@tonic-gate extern int wstandout(WINDOW *);
804*7c478bd9Sstevel@tonic-gate 
805*7c478bd9Sstevel@tonic-gate extern chtype termattrs(void);
806*7c478bd9Sstevel@tonic-gate extern attr_t term_attrs(void);
807*7c478bd9Sstevel@tonic-gate 
808*7c478bd9Sstevel@tonic-gate extern void timeout(int);
809*7c478bd9Sstevel@tonic-gate extern void wtimeout(WINDOW *, int);
810*7c478bd9Sstevel@tonic-gate 
811*7c478bd9Sstevel@tonic-gate extern int ungetch(int);
812*7c478bd9Sstevel@tonic-gate extern int unget_wch(const wchar_t);
813*7c478bd9Sstevel@tonic-gate 
814*7c478bd9Sstevel@tonic-gate extern int vidattr(chtype);
815*7c478bd9Sstevel@tonic-gate extern int vid_attr(attr_t, short, void *);
816*7c478bd9Sstevel@tonic-gate extern int vidputs(chtype, int (*)(int));
817*7c478bd9Sstevel@tonic-gate extern int vid_puts(attr_t, short, void *, int (*)(int));
818*7c478bd9Sstevel@tonic-gate 
819*7c478bd9Sstevel@tonic-gate extern void wcursyncup(WINDOW *);
820*7c478bd9Sstevel@tonic-gate extern void wsyncdown(WINDOW *);
821*7c478bd9Sstevel@tonic-gate extern void wsyncup(WINDOW *);
822*7c478bd9Sstevel@tonic-gate 
823*7c478bd9Sstevel@tonic-gate extern const wchar_t *wunctrl(const cchar_t *);
824*7c478bd9Sstevel@tonic-gate 
825*7c478bd9Sstevel@tonic-gate /*
826*7c478bd9Sstevel@tonic-gate  * These macros are not suitable for strict XPG4 conformance,
827*7c478bd9Sstevel@tonic-gate  * because some of them evaluate their arguments more than once.
828*7c478bd9Sstevel@tonic-gate  * However, they can improve speed and size of an application,
829*7c478bd9Sstevel@tonic-gate  * provided an application is careful about not using side effects
830*7c478bd9Sstevel@tonic-gate  * with function/macro parameters.
831*7c478bd9Sstevel@tonic-gate  */
832*7c478bd9Sstevel@tonic-gate #ifndef _XOPEN_SOURCE_EXTENDED
833*7c478bd9Sstevel@tonic-gate 
834*7c478bd9Sstevel@tonic-gate #define addch(ch)			waddch(stdscr,ch)
835*7c478bd9Sstevel@tonic-gate #define mvaddch(y,x,ch)			(move(y,x)?ERR:addch(ch))
836*7c478bd9Sstevel@tonic-gate #define mvwaddch(w,y,x,ch)		(wmove(w,y,x)?ERR:waddch(w,ch))
837*7c478bd9Sstevel@tonic-gate 
838*7c478bd9Sstevel@tonic-gate #define add_wch(cp)			wadd_wch(stdscr,cp)
839*7c478bd9Sstevel@tonic-gate #define mvadd_wch(y,x,cp)		(move(y,x)?ERR:add_wch(cp))
840*7c478bd9Sstevel@tonic-gate #define mvwadd_wch(w,y,x,cp)		(wmove(w,y,x)?ERR:wadd_wch(w,cp))
841*7c478bd9Sstevel@tonic-gate 
842*7c478bd9Sstevel@tonic-gate #define addchnstr(chs,n)		waddchnstr(stdscr,chs,n)
843*7c478bd9Sstevel@tonic-gate #define addchstr(chs)			waddchstr(stdscr,chs)
844*7c478bd9Sstevel@tonic-gate #define mvaddchnstr(y,x,chs,n)		(move(y,x)?ERR:addchnstr(chs,n))
845*7c478bd9Sstevel@tonic-gate #define mvaddchstr(y,x,chs)		(move(y,x)?ERR:addchstr(chs))
846*7c478bd9Sstevel@tonic-gate #define mvwaddchnstr(w,y,x,chs,n)	(wmove(w,y,x)?ERR:waddchnstr(w,chs,n))
847*7c478bd9Sstevel@tonic-gate #define mvwaddchstr(w,y,x,chs)		(wmove(w,y,x)?ERR:waddchstr(w,chs))
848*7c478bd9Sstevel@tonic-gate #define waddchstr(w,chs)		waddchnstr(w,chs,-1)
849*7c478bd9Sstevel@tonic-gate 
850*7c478bd9Sstevel@tonic-gate #define add_wchnstr(cp,n)		wadd_wchnstr(stdscr,cp,n)
851*7c478bd9Sstevel@tonic-gate #define add_wchstr(cp)			wadd_wchstr(stdscr,cp)
852*7c478bd9Sstevel@tonic-gate #define mvadd_wchnstr(y,x,cp,n)		(move(y,x)?ERR:add_wchnstr(cp,n))
853*7c478bd9Sstevel@tonic-gate #define mvadd_wchstr(y,x,cp)		(move(y,x)?ERR:add_wchstr(cp))
854*7c478bd9Sstevel@tonic-gate #define mvwadd_wchnstr(w,y,x,cp,n)	(wmove(w,y,x)?ERR:wadd_wchnstr(w,cp,n))
855*7c478bd9Sstevel@tonic-gate #define mvwadd_wchstr(w,y,x,cp)		(wmove(w,y,x)?ERR:wadd_wchstr(w,cp))
856*7c478bd9Sstevel@tonic-gate #define wadd_wchstr(w,cp)		wadd_wchnstr(w,cp,-1)
857*7c478bd9Sstevel@tonic-gate 
858*7c478bd9Sstevel@tonic-gate #define addnstr(s,n)			waddnstr(stdscr,s,n)
859*7c478bd9Sstevel@tonic-gate #define addstr(s)			waddstr(stdscr,s)
860*7c478bd9Sstevel@tonic-gate #define mvaddnstr(y,x,s,n)		(move(y,x)?ERR:addnstr(s,n))
861*7c478bd9Sstevel@tonic-gate #define mvaddstr(y,x,s)			(move(y,x)?ERR:addstr(s))
862*7c478bd9Sstevel@tonic-gate #define mvwaddnstr(w,y,x,s,n)		(wmove(w,y,x)?ERR:waddnstr(w,s,n))
863*7c478bd9Sstevel@tonic-gate #define mvwaddstr(w,y,x,s)		(wmove(w,y,x)?ERR:waddstr(w,s))
864*7c478bd9Sstevel@tonic-gate #define waddstr(w,wcs)			waddnstr(w,wcs,-1)
865*7c478bd9Sstevel@tonic-gate 
866*7c478bd9Sstevel@tonic-gate #define addnwstr(wcs,n)			waddnwstr(stdscr,wcs,n)
867*7c478bd9Sstevel@tonic-gate #define addwstr(wcs)			waddwstr(stdscr,wcs)
868*7c478bd9Sstevel@tonic-gate #define mvaddnwstr(y,x,wcs,n)		(move(y,x)?ERR:addnwstr(wcs,n))
869*7c478bd9Sstevel@tonic-gate #define mvaddwstr(y,x,wcs)		(move(y,x)?ERR:addwstr(wcs))
870*7c478bd9Sstevel@tonic-gate #define mvwaddnwstr(w,y,x,wcs,n)	(wmove(w,y,x)?ERR:waddnwstr(w,wcs,n))
871*7c478bd9Sstevel@tonic-gate #define mvwaddwstr(w,y,x,wcs)		(wmove(w,y,x)?ERR:waddwstr(w,wcs))
872*7c478bd9Sstevel@tonic-gate #define waddwstr(w,wcs)			waddnwstr(w,wcs,-1)
873*7c478bd9Sstevel@tonic-gate 
874*7c478bd9Sstevel@tonic-gate #define attr_get(a,c,o)			wattr_get(stdscr,a,c,o)
875*7c478bd9Sstevel@tonic-gate #define attr_off(a,o)			wattr_off(stdscr,a,o)
876*7c478bd9Sstevel@tonic-gate #define attr_on(a,o)			wattr_on(stdscr,a,o)
877*7c478bd9Sstevel@tonic-gate #define attr_set(a,c,o)			wattr_set(stdscr,a,c,o)
878*7c478bd9Sstevel@tonic-gate 
879*7c478bd9Sstevel@tonic-gate #define COLOR_PAIR(n)   		((chtype)(n)<<__COLOR_SHIFT)
880*7c478bd9Sstevel@tonic-gate #define PAIR_NUMBER(a)  		(((chtype)(a)&A_COLOR)>>__COLOR_SHIFT)
881*7c478bd9Sstevel@tonic-gate 
882*7c478bd9Sstevel@tonic-gate #define bkgd(ch)			wbkgd(stdscr, ch)
883*7c478bd9Sstevel@tonic-gate #define bkgdset(ch)			__m_chtype_cc(ch, &stdscr->_bg)
884*7c478bd9Sstevel@tonic-gate #define getbkgd(w)			__m_cc_chtype(&(w)->_bg)
885*7c478bd9Sstevel@tonic-gate #define wbkgdset(w,ch)			__m_chtype_cc(ch, &(w)->_bg)
886*7c478bd9Sstevel@tonic-gate 
887*7c478bd9Sstevel@tonic-gate #define bkgrnd(b)			wbkgrnd(stdscr,b)
888*7c478bd9Sstevel@tonic-gate #define bkgrndset(b)			wbkgrndset(stdscr,b)
889*7c478bd9Sstevel@tonic-gate #define getbkgrnd(b)			wgetbkgrnd(stdscr,b)
890*7c478bd9Sstevel@tonic-gate #define wbkgrndset(w,b)			((w)->_bg = *(b))
891*7c478bd9Sstevel@tonic-gate #define wgetbkgrnd(w,b)			(*(b) = (w)->_bg, OK)
892*7c478bd9Sstevel@tonic-gate 
893*7c478bd9Sstevel@tonic-gate #define border(ls, rs, ts, bs, tl, tr, bl, br) \
894*7c478bd9Sstevel@tonic-gate 	wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
895*7c478bd9Sstevel@tonic-gate #define border_set(ls, rs, ts, bs, tl, tr, bl, br) \
896*7c478bd9Sstevel@tonic-gate 	wborder_set(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
897*7c478bd9Sstevel@tonic-gate #define box(w,v,h)			wborder(w,v,v,h,h,0,0,0,0)
898*7c478bd9Sstevel@tonic-gate #define box_set(w,v,h)			wborder_set(w,v,v,h,h,0,0,0,0)
899*7c478bd9Sstevel@tonic-gate 
900*7c478bd9Sstevel@tonic-gate #define can_change_color()		(2 < max_colors && can_change \
901*7c478bd9Sstevel@tonic-gate 					&& initialize_color != (char *) 0)
902*7c478bd9Sstevel@tonic-gate #define has_colors()			(0 < max_colors)
903*7c478bd9Sstevel@tonic-gate 
904*7c478bd9Sstevel@tonic-gate #define chgat(n,a,co,p)			wchgat(stdscr,n,a,co,p)
905*7c478bd9Sstevel@tonic-gate #define mvchgat(y,x,n,a,co,p)		(move(y,x)?ERR:chgat(n,a,co,p))
906*7c478bd9Sstevel@tonic-gate #define mvwchgat(w,y,x,n,a,co,p)	(wmove(w,y,x)?ERR:wchgat(w,n,a,co,p))
907*7c478bd9Sstevel@tonic-gate 
908*7c478bd9Sstevel@tonic-gate #define clear()				wclear(stdscr)
909*7c478bd9Sstevel@tonic-gate #define clrtobot()			wclrtobot(stdscr)
910*7c478bd9Sstevel@tonic-gate #define clrtoeol()			wclrtoeol(stdscr)
911*7c478bd9Sstevel@tonic-gate #define erase()				werase(stdscr)
912*7c478bd9Sstevel@tonic-gate #define wclear(w)			(clearok(w,1)?ERR:werase(w))
913*7c478bd9Sstevel@tonic-gate #define werase(w)			(wmove(w,0,0)?ERR:wclrtobot(w))
914*7c478bd9Sstevel@tonic-gate 
915*7c478bd9Sstevel@tonic-gate #define delch()				wdelch(stdscr)
916*7c478bd9Sstevel@tonic-gate #define mvdelch(y,x)			(move(y,x)?ERR:delch())
917*7c478bd9Sstevel@tonic-gate #define mvwdelch(w,y,x)			(wmove(w,y,x)?ERR:wdelch(w))
918*7c478bd9Sstevel@tonic-gate 
919*7c478bd9Sstevel@tonic-gate #define deleteln()			wdeleteln(stdscr)
920*7c478bd9Sstevel@tonic-gate #define insdelln(n)			winsdelln(stdscr,n)
921*7c478bd9Sstevel@tonic-gate #define insertln()			winsertln(stdscr)
922*7c478bd9Sstevel@tonic-gate #define wdeleteln(w)			winsdelln(w, -1)
923*7c478bd9Sstevel@tonic-gate #define winsertln(w)			winsdelln(w, 1)
924*7c478bd9Sstevel@tonic-gate 
925*7c478bd9Sstevel@tonic-gate #define refresh()			wrefresh(stdscr)
926*7c478bd9Sstevel@tonic-gate 
927*7c478bd9Sstevel@tonic-gate #define echochar(ch)			wechochar(stdscr,ch)
928*7c478bd9Sstevel@tonic-gate #define echo_wchar(cp)			wecho_wchar(stdscr,cp)
929*7c478bd9Sstevel@tonic-gate #define wechochar(w,ch)			(waddch(w,ch)?ERR:wrefresh(w))
930*7c478bd9Sstevel@tonic-gate #define wecho_wchar(w,cp)		(wadd_wch(w,cp)?ERR:wrefresh(w))
931*7c478bd9Sstevel@tonic-gate 
932*7c478bd9Sstevel@tonic-gate #define erasewchar(wp)			__m_tty_wc(VERASE, wp)
933*7c478bd9Sstevel@tonic-gate #define killwchar(wp)			__m_tty_wc(VKILL, wp)
934*7c478bd9Sstevel@tonic-gate 
935*7c478bd9Sstevel@tonic-gate #define getch()				wgetch(stdscr)
936*7c478bd9Sstevel@tonic-gate #define mvgetch(y,x)			(move(y,x)?ERR:getch())
937*7c478bd9Sstevel@tonic-gate #define mvwgetch(w,y,x)			(wmove(w,y,x)?ERR:wgetch(w))
938*7c478bd9Sstevel@tonic-gate 
939*7c478bd9Sstevel@tonic-gate #define get_wch(wcp)			wget_wch(stdscr,wcp)
940*7c478bd9Sstevel@tonic-gate #define mvget_wch(y,x,wcp)		(move(y,x)?ERR:get_wch(wcp))
941*7c478bd9Sstevel@tonic-gate #define mvwget_wch(w,y,x,wcp)		(wmove(w,y,x)?ERR:wget_wch(w,wcp))
942*7c478bd9Sstevel@tonic-gate 
943*7c478bd9Sstevel@tonic-gate #define getnstr(s,n)			wgetnstr(stdscr,s,n)
944*7c478bd9Sstevel@tonic-gate #define getstr(s)			wgetstr(stdscr,s)
945*7c478bd9Sstevel@tonic-gate #define mvgetnstr(y,x,s,n)		(move(y,x)?ERR:getnstr(s,n))
946*7c478bd9Sstevel@tonic-gate #define mvgetstr(y,x,s)			(move(y,x)?ERR:getstr(s))
947*7c478bd9Sstevel@tonic-gate #define mvwgetnstr(w,y,x,s,n)		(wmove(w,y,x)?ERR:wgetnstr(w,s,n))
948*7c478bd9Sstevel@tonic-gate #define mvwgetstr(w,y,x,s)		(wmove(w,y,x)?ERR:wgetstr(w,s))
949*7c478bd9Sstevel@tonic-gate #define wgetstr(w,s)			wgetnstr(w,s,-1)
950*7c478bd9Sstevel@tonic-gate 
951*7c478bd9Sstevel@tonic-gate #define getn_wstr(wcs,n)		wgetn_wstr(stdscr,wcs,n)
952*7c478bd9Sstevel@tonic-gate #define get_wstr(wcs)			wget_wstr(stdscr,wcs)
953*7c478bd9Sstevel@tonic-gate #define mvgetn_wstr(y,x,wcs,n)		(move(y,x)?ERR:getn_wstr(wcs,n))
954*7c478bd9Sstevel@tonic-gate #define mvget_wstr(y,x,wcs)		(move(y,x)?ERR:get_wstr(wcs))
955*7c478bd9Sstevel@tonic-gate #define mvwgetn_wstr(w,y,x,wcs,n)	(wmove(w,y,x)?ERR:wgetn_wstr(w,wcs,n))
956*7c478bd9Sstevel@tonic-gate #define mvwget_wstr(w,y,x,wcs)		(wmove(w,y,x)?ERR:wget_wstr(w,wcs))
957*7c478bd9Sstevel@tonic-gate #define wget_wstr(w,wcs)		wgetn_wstr(w,wcs,-1)
958*7c478bd9Sstevel@tonic-gate 
959*7c478bd9Sstevel@tonic-gate #define has_ic()			(((insert_character != (char *) 0 \
960*7c478bd9Sstevel@tonic-gate 					   || parm_ich != (char *) 0) \
961*7c478bd9Sstevel@tonic-gate 					  && (delete_character != (char *) 0 \
962*7c478bd9Sstevel@tonic-gate 					      || parm_dch != (char *) 0)) \
963*7c478bd9Sstevel@tonic-gate 					 || (enter_insert_mode != (char *) 0 \
964*7c478bd9Sstevel@tonic-gate 					     && exit_insert_mode))
965*7c478bd9Sstevel@tonic-gate 
966*7c478bd9Sstevel@tonic-gate #define has_il()			(((insert_line != (char *) 0 \
967*7c478bd9Sstevel@tonic-gate 					   || parm_insert_line != (char *) 0) \
968*7c478bd9Sstevel@tonic-gate 					  && (delete_line != (char *) 0 \
969*7c478bd9Sstevel@tonic-gate 					      || parm_delete_line !=(char*)0)) \
970*7c478bd9Sstevel@tonic-gate 					 || change_scroll_region != (char *) 0)
971*7c478bd9Sstevel@tonic-gate 
972*7c478bd9Sstevel@tonic-gate 
973*7c478bd9Sstevel@tonic-gate #define hline(ch,n)			whline(stdscr,ch,n)
974*7c478bd9Sstevel@tonic-gate #define vline(ch,n)			wvline(stdscr,ch,n)
975*7c478bd9Sstevel@tonic-gate #define mvhline(y,x,ch,n)		(move(y,x)?ERR:hline(ch,n))
976*7c478bd9Sstevel@tonic-gate #define mvvline(y,x,ch,n)		(move(y,x)?ERR:vline(ch,n))
977*7c478bd9Sstevel@tonic-gate #define mvwhline(w,y,x,ch,n)		(wmove(w,y,x)?ERR:whline(w,ch,n))
978*7c478bd9Sstevel@tonic-gate #define mvwvline(w,y,x,ch,n)		(wmove(w,y,x)?ERR:wvline(w,ch,n))
979*7c478bd9Sstevel@tonic-gate 
980*7c478bd9Sstevel@tonic-gate #define hline_set(cp,n)			whline_set(stdscr,cp,n)
981*7c478bd9Sstevel@tonic-gate #define vline_set(cp,n)			wvline_set(stdscr,cp,n)
982*7c478bd9Sstevel@tonic-gate #define mvhline_set(y,x,cp,n)		(move(y,x)?ERR:hline_set(cp,n))
983*7c478bd9Sstevel@tonic-gate #define mvvline_set(y,x,cp,n)		(move(y,x)?ERR:vline_set(cp,n))
984*7c478bd9Sstevel@tonic-gate #define mvwhline_set(w,y,x,cp,n)	(wmove(w,y,x)?ERR:whline_set(w,cp,n))
985*7c478bd9Sstevel@tonic-gate #define mvwvline_set(w,y,x,cp,n)	(wmove(w,y,x)?ERR:wvline_set(w,cp,n))
986*7c478bd9Sstevel@tonic-gate 
987*7c478bd9Sstevel@tonic-gate #define inch()				winch(stdscr)
988*7c478bd9Sstevel@tonic-gate #define mvinch(y,x)			(move(y,x)?ERR:inch())
989*7c478bd9Sstevel@tonic-gate #define mvwinch(w,y,x)			(wmove(w,y,x)?ERR:winch(w))
990*7c478bd9Sstevel@tonic-gate 
991*7c478bd9Sstevel@tonic-gate #define in_wch(cp)			win_wch(stdscr,cp)
992*7c478bd9Sstevel@tonic-gate #define mvin_wch(y,x,cp)		(move(y,x)?ERR:in_wch(cp))
993*7c478bd9Sstevel@tonic-gate #define mvwin_wch(w,y,x,cp)		(wmove(w,y,x)?ERR:win_wch(w,cp))
994*7c478bd9Sstevel@tonic-gate 
995*7c478bd9Sstevel@tonic-gate #define inchnstr(chs,n)			winchnstr(stdscr,chs,n)
996*7c478bd9Sstevel@tonic-gate #define inchstr(chs)			winchstr(stdscr,chs)
997*7c478bd9Sstevel@tonic-gate #define mvinchnstr(y,x,chs,n)		(move(y,x)?ERR:inchnstr(chs,n))
998*7c478bd9Sstevel@tonic-gate #define mvinchstr(y,x,chs)		(move(y,x)?ERR:inchstr(chs))
999*7c478bd9Sstevel@tonic-gate #define mvwinchnstr(w,y,x,chs,n)	(wmove(w,y,x)?ERR:winchnstr(w,chs,n))
1000*7c478bd9Sstevel@tonic-gate #define mvwinchstr(w,y,x,chs)		(wmove(w,y,x)?ERR:winchstr(w,chs))
1001*7c478bd9Sstevel@tonic-gate #define winchstr(w,chs)			winchnstr(w,chs,-1)
1002*7c478bd9Sstevel@tonic-gate 
1003*7c478bd9Sstevel@tonic-gate #define in_wchnstr(cp,n)		win_wchnstr(stdscr,cp,n)
1004*7c478bd9Sstevel@tonic-gate #define in_wchstr(cp)			win_wchstr(stdscr,cp)
1005*7c478bd9Sstevel@tonic-gate #define mvin_wchnstr(y,x,cp,n)		(move(y,x)?ERR:in_wchnstr(cp,n))
1006*7c478bd9Sstevel@tonic-gate #define mvin_wchstr(y,x,cp)		(move(y,x)?ERR:in_wchstr(cp))
1007*7c478bd9Sstevel@tonic-gate #define mvwin_wchnstr(w,y,x,cp,n)	(wmove(w,y,x)?ERR:win_wchnstr(w,cp,n))
1008*7c478bd9Sstevel@tonic-gate #define mvwin_wchstr(w,y,x,cp)		(wmove(w,y,x)?ERR:win_wchstr(w,cp))
1009*7c478bd9Sstevel@tonic-gate #define win_wchstr(w,cp)		win_wchnstr(w,cp,-1)
1010*7c478bd9Sstevel@tonic-gate 
1011*7c478bd9Sstevel@tonic-gate #define innstr(s,n)			winnstr(stdscr,s,n)
1012*7c478bd9Sstevel@tonic-gate #define instr(s)			winstr(stdscr,s)
1013*7c478bd9Sstevel@tonic-gate #define mvinnstr(y,x,s,n)		(move(y,x)?ERR:innstr(s,n))
1014*7c478bd9Sstevel@tonic-gate #define mvinstr(y,x,s)			(move(y,x)?ERR:instr(s))
1015*7c478bd9Sstevel@tonic-gate #define mvwinnstr(w,y,x,s,n)		(wmove(w,y,x)?ERR:winnstr(w,s,n))
1016*7c478bd9Sstevel@tonic-gate #define mvwinstr(w,y,x,s)		(wmove(w,y,x)?ERR:winstr(w,s))
1017*7c478bd9Sstevel@tonic-gate #define winstr(w,s)			winnstr(w,s,-1)
1018*7c478bd9Sstevel@tonic-gate 
1019*7c478bd9Sstevel@tonic-gate #define innwstr(wcs,n)			winnwstr(stdscr,wcs,n)
1020*7c478bd9Sstevel@tonic-gate #define inwstr(wcs)			winwstr(stdscr,wcs)
1021*7c478bd9Sstevel@tonic-gate #define mvinnwstr(y,x,wcs,n)		(move(y,x)?ERR:innwstr(wcs,n))
1022*7c478bd9Sstevel@tonic-gate #define mvinwstr(y,x,wcs)		(move(y,x)?ERR:inwstr(wcs))
1023*7c478bd9Sstevel@tonic-gate #define mvwinnwstr(w,y,x,wcs,n)		(wmove(w,y,x)?ERR:winnwstr(w,wcs,n))
1024*7c478bd9Sstevel@tonic-gate #define mvwinwstr(w,y,x,wcs)		(wmove(w,y,x)?ERR:winwstr(w,wcs))
1025*7c478bd9Sstevel@tonic-gate #define winwstr(w,wcs)			winnwstr(w,wcs,-1)
1026*7c478bd9Sstevel@tonic-gate 
1027*7c478bd9Sstevel@tonic-gate #define insch(ch)			winsch(stdscr,ch)
1028*7c478bd9Sstevel@tonic-gate #define mvinsch(y,x,ch)			(move(y,x)?ERR:insch(ch))
1029*7c478bd9Sstevel@tonic-gate #define mvwinsch(w,y,x,ch)		(wmove(w,y,x)?ERR:winsch(w,ch))
1030*7c478bd9Sstevel@tonic-gate 
1031*7c478bd9Sstevel@tonic-gate #define ins_wch(cp)			wins_wch(stdscr,cp)
1032*7c478bd9Sstevel@tonic-gate #define mvins_wch(y,x,cp)		(move(y,x)?ERR:ins_wch(cp))
1033*7c478bd9Sstevel@tonic-gate #define mvwins_wch(w,y,x,cp)		(wmove(w,y,x)?ERR:wins_wch(w,cp))
1034*7c478bd9Sstevel@tonic-gate 
1035*7c478bd9Sstevel@tonic-gate #define insnstr(s,n)			winsnstr(stdscr,s,n)
1036*7c478bd9Sstevel@tonic-gate #define insstr(s)			winsstr(stdscr,s)
1037*7c478bd9Sstevel@tonic-gate #define mvinsnstr(y,x,s,n)		(move(y,x)?ERR:insnstr(s,n))
1038*7c478bd9Sstevel@tonic-gate #define mvinsstr(y,x,s)			(move(y,x)?ERR:insstr(s))
1039*7c478bd9Sstevel@tonic-gate #define	mvwinsnstr(w, y, x, s, n)	(wmove(w, y, x)?ERR:winsnstr(w, s, n))
1040*7c478bd9Sstevel@tonic-gate #define	mvwinsstr(w, y, x, s)		(wmove(w, y, x)?ERR:winsstr(w, s))
1041*7c478bd9Sstevel@tonic-gate #define	winsstr(w, s)			winsnstr(w, s, -1)
1042*7c478bd9Sstevel@tonic-gate 
1043*7c478bd9Sstevel@tonic-gate #define	ins_nwstr(wcs, n)		wins_nwstr(stdscr, wcs, n)
1044*7c478bd9Sstevel@tonic-gate #define	ins_wstr(wcs)			wins_wstr(stdscr, wcs)
1045*7c478bd9Sstevel@tonic-gate #define	mvins_nwstr(y, x, wcs, n)	(move(y, x)?ERR:ins_nwstr(wcs, n))
1046*7c478bd9Sstevel@tonic-gate #define	mvins_wstr(y, x, wcs)		(move(y, x)?ERR:ins_wstr(wcs))
1047*7c478bd9Sstevel@tonic-gate #define	mvwins_nwstr(w, y, x, wcs, n)	(wmove(w, y, x)?ERR:wins_nwstr(w,wcs,n))
1048*7c478bd9Sstevel@tonic-gate #define	mvwins_wstr(w, y, x, wcs)	(wmove(w, y, x)?ERR:wins_wstr(w,wcs))
1049*7c478bd9Sstevel@tonic-gate #define	wins_wstr(w, wcs)		wins_nwstr(w, wcs, -1)
1050*7c478bd9Sstevel@tonic-gate 
1051*7c478bd9Sstevel@tonic-gate #define	is_linetouched(w, y)		(0 <= (w)->_last[y])
1052*7c478bd9Sstevel@tonic-gate 
1053*7c478bd9Sstevel@tonic-gate #define	mvcur(or, oc, nr, nc)		__m_mvcur(or, oc, nr, nc, __m_outc)
1054*7c478bd9Sstevel@tonic-gate 
1055*7c478bd9Sstevel@tonic-gate #define	move(y, x)			wmove(stdscr, y, x)
1056*7c478bd9Sstevel@tonic-gate 
1057*7c478bd9Sstevel@tonic-gate #define	overlay(s, t)			__m_copywin(s, t, 1)
1058*7c478bd9Sstevel@tonic-gate #define	overwrite(s, t)			__m_copywin(s, t, 0)
1059*7c478bd9Sstevel@tonic-gate 
1060*7c478bd9Sstevel@tonic-gate #define	newpad(ny, nx)			__m_newwin((WINDOW *) 0, ny, nx, -1, -1)
1061*7c478bd9Sstevel@tonic-gate #define	subpad(par, ny, nx, by, bx)	subwin(par, ny, nx, by, bx)
1062*7c478bd9Sstevel@tonic-gate 
1063*7c478bd9Sstevel@tonic-gate #define	nodelay(w, bf)			(wtimeout(w, (bf)?0:-1), OK)
1064*7c478bd9Sstevel@tonic-gate #define	timeout(n)			wtimeout(stdscr, n)
1065*7c478bd9Sstevel@tonic-gate 
1066*7c478bd9Sstevel@tonic-gate #define	qiflush()			((void) intrflush((WINDOW *) 0, 1))
1067*7c478bd9Sstevel@tonic-gate #define	noqiflush()			((void) intrflush((WINDOW *) 0, 0))
1068*7c478bd9Sstevel@tonic-gate 
1069*7c478bd9Sstevel@tonic-gate #define	redrawwin(w)			wredrawln(w, 0, (w)->_maxy)
1070*7c478bd9Sstevel@tonic-gate 
1071*7c478bd9Sstevel@tonic-gate #define	scrl(n)				wscrl(stdscr, n)
1072*7c478bd9Sstevel@tonic-gate #define	setscrreg(t, b)			wsetscrreg(stdscr, t, b)
1073*7c478bd9Sstevel@tonic-gate 
1074*7c478bd9Sstevel@tonic-gate #define	standend()			wstandend(stdscr)
1075*7c478bd9Sstevel@tonic-gate #define	standout()			wstandout(stdscr)
1076*7c478bd9Sstevel@tonic-gate #define	wstandend(w)			(wattr_set(w, WA_NORMAL, COLOR_BLACK, \
1077*7c478bd9Sstevel@tonic-gate 					(void *)0), 1)
1078*7c478bd9Sstevel@tonic-gate #define	wstandout(w)			(wattr_on(w, WA_STANDOUT, (void *)0), 1)
1079*7c478bd9Sstevel@tonic-gate 
1080*7c478bd9Sstevel@tonic-gate #define	touchline(w, y, n)		wtouchln(w, y, n, 1)
1081*7c478bd9Sstevel@tonic-gate #define	touchwin(w)			wtouchln(w, 0, (w)->_maxy, 1)
1082*7c478bd9Sstevel@tonic-gate #define	untouchwin(w)			wtouchln(w, 0, (w)->_maxy, 0)
1083*7c478bd9Sstevel@tonic-gate 
1084*7c478bd9Sstevel@tonic-gate #define	termname()			(cur_term->_term)
1085*7c478bd9Sstevel@tonic-gate 
1086*7c478bd9Sstevel@tonic-gate #ifndef _XOPEN_SOURCE
1087*7c478bd9Sstevel@tonic-gate /*
1088*7c478bd9Sstevel@tonic-gate  * Obsolete functions names.
1089*7c478bd9Sstevel@tonic-gate  */
1090*7c478bd9Sstevel@tonic-gate #define	crmode				cbreak
1091*7c478bd9Sstevel@tonic-gate #define	nocrmode			nocbreak
1092*7c478bd9Sstevel@tonic-gate #define	saveterm			def_prog_mode
1093*7c478bd9Sstevel@tonic-gate #define	fixterm				reset_prog_mode
1094*7c478bd9Sstevel@tonic-gate #define	resetterm			reset_shell_mode
1095*7c478bd9Sstevel@tonic-gate #endif /* _XOPEN_SOURCE */
1096*7c478bd9Sstevel@tonic-gate #endif /* _XOPEN_SOURCE_EXTENDED */
1097*7c478bd9Sstevel@tonic-gate 
1098*7c478bd9Sstevel@tonic-gate /*
1099*7c478bd9Sstevel@tonic-gate  * Special Keys
1100*7c478bd9Sstevel@tonic-gate  *
1101*7c478bd9Sstevel@tonic-gate  * Keypad layout
1102*7c478bd9Sstevel@tonic-gate  *	A1	up	A3
1103*7c478bd9Sstevel@tonic-gate  *     left	B2     right
1104*7c478bd9Sstevel@tonic-gate  *	C1     down	C3
1105*7c478bd9Sstevel@tonic-gate  *
1106*7c478bd9Sstevel@tonic-gate  * Chossing negative values for KEY_ constants means that they can
1107*7c478bd9Sstevel@tonic-gate  * be safely returned in either an int or long type.
1108*7c478bd9Sstevel@tonic-gate  */
1109*7c478bd9Sstevel@tonic-gate #define	__KEY_BASE	(-2)
1110*7c478bd9Sstevel@tonic-gate #define	__KEY_MAX	__KEY_BASE
1111*7c478bd9Sstevel@tonic-gate 
1112*7c478bd9Sstevel@tonic-gate #define	KEY_CODE_YES	(__KEY_BASE-1)		/* Special indicator. */
1113*7c478bd9Sstevel@tonic-gate 
1114*7c478bd9Sstevel@tonic-gate #define	KEY_BREAK	(__KEY_BASE-2)		/* Break key (unreliable) */
1115*7c478bd9Sstevel@tonic-gate #define	KEY_DOWN	(__KEY_BASE-3)		/* The four arrow keys ... */
1116*7c478bd9Sstevel@tonic-gate #define	KEY_UP		(__KEY_BASE-4)
1117*7c478bd9Sstevel@tonic-gate #define	KEY_LEFT	(__KEY_BASE-5)
1118*7c478bd9Sstevel@tonic-gate #define	KEY_RIGHT	(__KEY_BASE-6)
1119*7c478bd9Sstevel@tonic-gate #define	KEY_HOME	(__KEY_BASE-7)		/* Move to upper-left corner. */
1120*7c478bd9Sstevel@tonic-gate #define	KEY_BACKSPACE	(__KEY_BASE-8)		/* Backspace */
1121*7c478bd9Sstevel@tonic-gate #define	KEY_F0		(__KEY_BASE-9)		/* Function keys.  Space for */
1122*7c478bd9Sstevel@tonic-gate #define	KEY_F(n)	(KEY_F0-(n))    	/* 64 keys is reserved. */
1123*7c478bd9Sstevel@tonic-gate #define	KEY_DL		(__KEY_BASE-73)		/* Delete line */
1124*7c478bd9Sstevel@tonic-gate #define	KEY_IL		(__KEY_BASE-74)		/* Insert line */
1125*7c478bd9Sstevel@tonic-gate #define	KEY_DC		(__KEY_BASE-75)		/* Delete character */
1126*7c478bd9Sstevel@tonic-gate #define	KEY_IC		(__KEY_BASE-76)		/* Ins char / enter ins mode */
1127*7c478bd9Sstevel@tonic-gate #define	KEY_EIC		(__KEY_BASE-77)		/* Exit insert char mode */
1128*7c478bd9Sstevel@tonic-gate #define	KEY_CLEAR	(__KEY_BASE-78)		/* Clear screen */
1129*7c478bd9Sstevel@tonic-gate #define	KEY_EOS		(__KEY_BASE-79)		/* Clear to end of screen */
1130*7c478bd9Sstevel@tonic-gate #define	KEY_EOL		(__KEY_BASE-80)		/* Clear to end of line */
1131*7c478bd9Sstevel@tonic-gate #define	KEY_SF		(__KEY_BASE-81)		/* Scroll 1 line forward */
1132*7c478bd9Sstevel@tonic-gate #define	KEY_SR		(__KEY_BASE-82)		/* Scroll 1 line backwards */
1133*7c478bd9Sstevel@tonic-gate #define	KEY_NPAGE	(__KEY_BASE-83)		/* Next page */
1134*7c478bd9Sstevel@tonic-gate #define	KEY_PPAGE	(__KEY_BASE-84)		/* Previous page */
1135*7c478bd9Sstevel@tonic-gate #define	KEY_STAB	(__KEY_BASE-85)		/* Set tab */
1136*7c478bd9Sstevel@tonic-gate #define	KEY_CTAB	(__KEY_BASE-86)		/* Clear tab */
1137*7c478bd9Sstevel@tonic-gate #define	KEY_CATAB	(__KEY_BASE-87)		/* Clear all tabs */
1138*7c478bd9Sstevel@tonic-gate #define	KEY_ENTER	(__KEY_BASE-88)		/* Enter or send */
1139*7c478bd9Sstevel@tonic-gate #define	KEY_SRESET	(__KEY_BASE-89)		/* Soft (partial) reset */
1140*7c478bd9Sstevel@tonic-gate #define	KEY_RESET	(__KEY_BASE-90)		/* Hard reset */
1141*7c478bd9Sstevel@tonic-gate #define	KEY_PRINT	(__KEY_BASE-91)		/* Print or copy */
1142*7c478bd9Sstevel@tonic-gate #define	KEY_LL		(__KEY_BASE-92)		/* Move to lower left corner. */
1143*7c478bd9Sstevel@tonic-gate #define	KEY_A1		(__KEY_BASE-93)		/* Upper left of keypad */
1144*7c478bd9Sstevel@tonic-gate #define	KEY_A3		(__KEY_BASE-94) 	/* Upper rght of keypad */
1145*7c478bd9Sstevel@tonic-gate #define	KEY_B2		(__KEY_BASE-95) 	/* Center of keypad */
1146*7c478bd9Sstevel@tonic-gate #define	KEY_C1		(__KEY_BASE-96) 	/* Lower left of keypad */
1147*7c478bd9Sstevel@tonic-gate #define	KEY_C3		(__KEY_BASE-97) 	/* Lower right of keypad */
1148*7c478bd9Sstevel@tonic-gate #define	KEY_BTAB	(__KEY_BASE-98) 	/* Back Tab */
1149*7c478bd9Sstevel@tonic-gate #define	KEY_BEG		(__KEY_BASE-99) 	/* Beginning */
1150*7c478bd9Sstevel@tonic-gate #define	KEY_CANCEL	(__KEY_BASE-100)
1151*7c478bd9Sstevel@tonic-gate #define	KEY_CLOSE	(__KEY_BASE-101)
1152*7c478bd9Sstevel@tonic-gate #define	KEY_COMMAND	(__KEY_BASE-102)
1153*7c478bd9Sstevel@tonic-gate #define	KEY_COPY	(__KEY_BASE-103)
1154*7c478bd9Sstevel@tonic-gate #define	KEY_CREATE	(__KEY_BASE-104)
1155*7c478bd9Sstevel@tonic-gate #define	KEY_END		(__KEY_BASE-105)
1156*7c478bd9Sstevel@tonic-gate #define	KEY_EXIT	(__KEY_BASE-106)
1157*7c478bd9Sstevel@tonic-gate #define	KEY_FIND	(__KEY_BASE-107)
1158*7c478bd9Sstevel@tonic-gate #define	KEY_HELP	(__KEY_BASE-108)
1159*7c478bd9Sstevel@tonic-gate #define	KEY_MARK	(__KEY_BASE-109)
1160*7c478bd9Sstevel@tonic-gate #define	KEY_MESSAGE	(__KEY_BASE-110)
1161*7c478bd9Sstevel@tonic-gate #define	KEY_MOUSE	(__KEY_BASE-111)	/* Mouse event occured */
1162*7c478bd9Sstevel@tonic-gate #define	KEY_MOVE	(__KEY_BASE-112)
1163*7c478bd9Sstevel@tonic-gate #define	KEY_NEXT	(__KEY_BASE-113)	/* Next object */
1164*7c478bd9Sstevel@tonic-gate #define	KEY_OPEN	(__KEY_BASE-114)
1165*7c478bd9Sstevel@tonic-gate #define	KEY_OPTIONS	(__KEY_BASE-115)
1166*7c478bd9Sstevel@tonic-gate #define	KEY_PREVIOUS	(__KEY_BASE-116)	/* Previous object */
1167*7c478bd9Sstevel@tonic-gate #define	KEY_REDO	(__KEY_BASE-117)
1168*7c478bd9Sstevel@tonic-gate #define	KEY_REFERENCE	(__KEY_BASE-118)
1169*7c478bd9Sstevel@tonic-gate #define	KEY_REFRESH	(__KEY_BASE-119)
1170*7c478bd9Sstevel@tonic-gate #define	KEY_REPLACE	(__KEY_BASE-120)
1171*7c478bd9Sstevel@tonic-gate #define	KEY_RESTART	(__KEY_BASE-121)
1172*7c478bd9Sstevel@tonic-gate #define	KEY_RESUME	(__KEY_BASE-122)
1173*7c478bd9Sstevel@tonic-gate #define	KEY_SAVE	(__KEY_BASE-123)
1174*7c478bd9Sstevel@tonic-gate #define	KEY_SBEG	(__KEY_BASE-124)	/* Shifted keys */
1175*7c478bd9Sstevel@tonic-gate #define	KEY_SCANCEL	(__KEY_BASE-125)
1176*7c478bd9Sstevel@tonic-gate #define	KEY_SCOMMAND	(__KEY_BASE-126)
1177*7c478bd9Sstevel@tonic-gate #define	KEY_SCOPY	(__KEY_BASE-127)
1178*7c478bd9Sstevel@tonic-gate #define	KEY_SCREATE	(__KEY_BASE-128)
1179*7c478bd9Sstevel@tonic-gate #define	KEY_SDC		(__KEY_BASE-129)
1180*7c478bd9Sstevel@tonic-gate #define	KEY_SDL		(__KEY_BASE-130)
1181*7c478bd9Sstevel@tonic-gate #define	KEY_SELECT	(__KEY_BASE-131)	/* Select */
1182*7c478bd9Sstevel@tonic-gate #define	KEY_SEND	(__KEY_BASE-132)	/* Shifted end key */
1183*7c478bd9Sstevel@tonic-gate #define	KEY_SEOL	(__KEY_BASE-133)
1184*7c478bd9Sstevel@tonic-gate #define	KEY_SEXIT	(__KEY_BASE-134)
1185*7c478bd9Sstevel@tonic-gate #define	KEY_SFIND	(__KEY_BASE-135)
1186*7c478bd9Sstevel@tonic-gate #define	KEY_SHELP	(__KEY_BASE-136)
1187*7c478bd9Sstevel@tonic-gate #define	KEY_SHOME	(__KEY_BASE-137)
1188*7c478bd9Sstevel@tonic-gate #define	KEY_SIC		(__KEY_BASE-138)
1189*7c478bd9Sstevel@tonic-gate #define	KEY_SLEFT	(__KEY_BASE-139)
1190*7c478bd9Sstevel@tonic-gate #define	KEY_SMESSAGE	(__KEY_BASE-140)
1191*7c478bd9Sstevel@tonic-gate #define	KEY_SMOVE	(__KEY_BASE-141)
1192*7c478bd9Sstevel@tonic-gate #define	KEY_SNEXT	(__KEY_BASE-142)
1193*7c478bd9Sstevel@tonic-gate #define	KEY_SOPTIONS	(__KEY_BASE-143)
1194*7c478bd9Sstevel@tonic-gate #define	KEY_SPREVIOUS	(__KEY_BASE-144)
1195*7c478bd9Sstevel@tonic-gate #define	KEY_SPRINT	(__KEY_BASE-145)
1196*7c478bd9Sstevel@tonic-gate #define	KEY_SREDO	(__KEY_BASE-146)
1197*7c478bd9Sstevel@tonic-gate #define	KEY_SREPLACE	(__KEY_BASE-147)
1198*7c478bd9Sstevel@tonic-gate #define	KEY_SRIGHT	(__KEY_BASE-148)
1199*7c478bd9Sstevel@tonic-gate #define	KEY_SRSUME	(__KEY_BASE-149)
1200*7c478bd9Sstevel@tonic-gate #define	KEY_SSAVE	(__KEY_BASE-150)
1201*7c478bd9Sstevel@tonic-gate #define	KEY_SSUSPEND	(__KEY_BASE-151)
1202*7c478bd9Sstevel@tonic-gate #define	KEY_SUNDO	(__KEY_BASE-152)
1203*7c478bd9Sstevel@tonic-gate #define	KEY_SUSPEND	(__KEY_BASE-153)
1204*7c478bd9Sstevel@tonic-gate #define	KEY_UNDO	(__KEY_BASE-154)
1205*7c478bd9Sstevel@tonic-gate 
1206*7c478bd9Sstevel@tonic-gate #define	__KEY_MIN	(__KEY_BASE-155)
1207*7c478bd9Sstevel@tonic-gate 
1208*7c478bd9Sstevel@tonic-gate #endif /* __M_CURSES_H__ */
1209