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