1*0a6a1f1dSLionel Sambuc /* $NetBSD: curses.h,v 1.107 2015/06/08 12:38:57 joerg Exp $ */ 251ffecc1SBen Gras 351ffecc1SBen Gras /* 451ffecc1SBen Gras * Copyright (c) 1981, 1993, 1994 551ffecc1SBen Gras * The Regents of the University of California. All rights reserved. 651ffecc1SBen Gras * 751ffecc1SBen Gras * Redistribution and use in source and binary forms, with or without 851ffecc1SBen Gras * modification, are permitted provided that the following conditions 951ffecc1SBen Gras * are met: 1051ffecc1SBen Gras * 1. Redistributions of source code must retain the above copyright 1151ffecc1SBen Gras * notice, this list of conditions and the following disclaimer. 1251ffecc1SBen Gras * 2. Redistributions in binary form must reproduce the above copyright 1351ffecc1SBen Gras * notice, this list of conditions and the following disclaimer in the 1451ffecc1SBen Gras * documentation and/or other materials provided with the distribution. 1551ffecc1SBen Gras * 3. Neither the name of the University nor the names of its contributors 1651ffecc1SBen Gras * may be used to endorse or promote products derived from this software 1751ffecc1SBen Gras * without specific prior written permission. 1851ffecc1SBen Gras * 1951ffecc1SBen Gras * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2051ffecc1SBen Gras * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2151ffecc1SBen Gras * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2251ffecc1SBen Gras * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2351ffecc1SBen Gras * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2451ffecc1SBen Gras * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2551ffecc1SBen Gras * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2651ffecc1SBen Gras * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2751ffecc1SBen Gras * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2851ffecc1SBen Gras * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2951ffecc1SBen Gras * SUCH DAMAGE. 3051ffecc1SBen Gras * 3151ffecc1SBen Gras * @(#)curses.h 8.5 (Berkeley) 4/29/95 3251ffecc1SBen Gras * 3351ffecc1SBen Gras * Modified by Ruibiao Qiu <ruibiao@arl.wustl.edu,ruibiao@gmail.com> 2005 3451ffecc1SBen Gras * to add wide-character support 3551ffecc1SBen Gras * - Add complex character structure (cchar_t) 3651ffecc1SBen Gras * - Add definitions of wide-character routines 3751ffecc1SBen Gras * - Add KEY_CODE_YES 3851ffecc1SBen Gras */ 3951ffecc1SBen Gras 4051ffecc1SBen Gras #ifndef _CURSES_H_ 4151ffecc1SBen Gras #define _CURSES_H_ 4251ffecc1SBen Gras 4351ffecc1SBen Gras #include <sys/types.h> 4451ffecc1SBen Gras #include <sys/cdefs.h> 4551ffecc1SBen Gras #include <wchar.h> 4651ffecc1SBen Gras 4751ffecc1SBen Gras #include <stdio.h> 4851ffecc1SBen Gras #include <stdbool.h> 4951ffecc1SBen Gras 5051ffecc1SBen Gras /* 5151ffecc1SBen Gras * attr_t must be the same size as wchar_t (see <wchar.h>) to avoid padding 5251ffecc1SBen Gras * in __LDATA. 5351ffecc1SBen Gras */ 5451ffecc1SBen Gras typedef wchar_t chtype; 5551ffecc1SBen Gras typedef wchar_t attr_t; 5651ffecc1SBen Gras 5751ffecc1SBen Gras #if !defined(HAVE_WCHAR) && !defined(DISABLE_WCHAR) 5851ffecc1SBen Gras #define HAVE_WCHAR 1 5951ffecc1SBen Gras #endif 6051ffecc1SBen Gras 6151ffecc1SBen Gras #ifdef HAVE_WCHAR 6251ffecc1SBen Gras /* 6351ffecc1SBen Gras * The complex character structure required by the X/Open reference and used 6451ffecc1SBen Gras * in * functions such as in_wchstr(). It includes a string of up to 8 wide 6551ffecc1SBen Gras * characters and its length, an attribute, and a color-pair. 6651ffecc1SBen Gras */ 6751ffecc1SBen Gras #define CURSES_CCHAR_MAX 8 6851ffecc1SBen Gras #define CCHARW_MAX 5 6951ffecc1SBen Gras typedef struct { 7051ffecc1SBen Gras attr_t attributes; /* character attributes */ 7151ffecc1SBen Gras unsigned elements; /* number of wide char in 7251ffecc1SBen Gras vals[] */ 7351ffecc1SBen Gras wchar_t vals[CURSES_CCHAR_MAX]; /* wide chars including 7451ffecc1SBen Gras non-spacing */ 7551ffecc1SBen Gras } cchar_t; 7651ffecc1SBen Gras #else 7751ffecc1SBen Gras typedef chtype cchar_t; 7851ffecc1SBen Gras #endif /* HAVE_WCHAR */ 7951ffecc1SBen Gras 8051ffecc1SBen Gras #ifndef TRUE 8151ffecc1SBen Gras #define TRUE (/*CONSTCOND*/1) 8251ffecc1SBen Gras #endif 8351ffecc1SBen Gras #ifndef FALSE 8451ffecc1SBen Gras #define FALSE (/*CONSTCOND*/0) 8551ffecc1SBen Gras #endif 8651ffecc1SBen Gras 8751ffecc1SBen Gras #ifndef _CURSES_PRIVATE 8851ffecc1SBen Gras 8951ffecc1SBen Gras #define _puts(s) tputs(s, 0, __cputchar) 9051ffecc1SBen Gras #define _putchar(c) __cputchar(c) 9151ffecc1SBen Gras 9251ffecc1SBen Gras /* Old-style terminal modes access. */ 9351ffecc1SBen Gras #define crmode() cbreak() 9451ffecc1SBen Gras #define nocrmode() nocbreak() 9551ffecc1SBen Gras #endif /* _CURSES_PRIVATE */ 9651ffecc1SBen Gras 9751ffecc1SBen Gras 9851ffecc1SBen Gras /* symbols for values returned by getch in keypad mode */ 9951ffecc1SBen Gras #define KEY_MIN 0x101 /* minimum extended key value */ 10051ffecc1SBen Gras #define KEY_BREAK 0x101 /* break key */ 10151ffecc1SBen Gras #define KEY_DOWN 0x102 /* down arrow */ 10251ffecc1SBen Gras #define KEY_UP 0x103 /* up arrow */ 10351ffecc1SBen Gras #define KEY_LEFT 0x104 /* left arrow */ 10451ffecc1SBen Gras #define KEY_RIGHT 0x105 /* right arrow*/ 10551ffecc1SBen Gras #define KEY_HOME 0x106 /* home key */ 10651ffecc1SBen Gras #define KEY_BACKSPACE 0x107 /* Backspace */ 10751ffecc1SBen Gras 10851ffecc1SBen Gras /* First function key (block of 64 follow) */ 10951ffecc1SBen Gras #define KEY_F0 0x108 11051ffecc1SBen Gras /* Function defining other function key values*/ 11151ffecc1SBen Gras #define KEY_F(n) (KEY_F0+(n)) 11251ffecc1SBen Gras 11351ffecc1SBen Gras #define KEY_DL 0x148 /* Delete Line */ 11451ffecc1SBen Gras #define KEY_IL 0x149 /* Insert Line*/ 11551ffecc1SBen Gras #define KEY_DC 0x14A /* Delete Character */ 11651ffecc1SBen Gras #define KEY_IC 0x14B /* Insert Character */ 11751ffecc1SBen Gras #define KEY_EIC 0x14C /* Exit Insert Char mode */ 11851ffecc1SBen Gras #define KEY_CLEAR 0x14D /* Clear screen */ 11951ffecc1SBen Gras #define KEY_EOS 0x14E /* Clear to end of screen */ 12051ffecc1SBen Gras #define KEY_EOL 0x14F /* Clear to end of line */ 12151ffecc1SBen Gras #define KEY_SF 0x150 /* Scroll one line forward */ 12251ffecc1SBen Gras #define KEY_SR 0x151 /* Scroll one line back */ 12351ffecc1SBen Gras #define KEY_NPAGE 0x152 /* Next Page */ 12451ffecc1SBen Gras #define KEY_PPAGE 0x153 /* Prev Page */ 12551ffecc1SBen Gras #define KEY_STAB 0x154 /* Set Tab */ 12651ffecc1SBen Gras #define KEY_CTAB 0x155 /* Clear Tab */ 12751ffecc1SBen Gras #define KEY_CATAB 0x156 /* Clear All Tabs */ 12851ffecc1SBen Gras #define KEY_ENTER 0x157 /* Enter or Send */ 12951ffecc1SBen Gras #define KEY_SRESET 0x158 /* Soft Reset */ 13051ffecc1SBen Gras #define KEY_RESET 0x159 /* Hard Reset */ 13151ffecc1SBen Gras #define KEY_PRINT 0x15A /* Print */ 13251ffecc1SBen Gras #define KEY_LL 0x15B /* Home Down */ 13351ffecc1SBen Gras 13451ffecc1SBen Gras /* 13551ffecc1SBen Gras * "Keypad" keys arranged like this: 13651ffecc1SBen Gras * 13751ffecc1SBen Gras * A1 up A3 13851ffecc1SBen Gras * left B2 right 13951ffecc1SBen Gras * C1 down C3 14051ffecc1SBen Gras * 14151ffecc1SBen Gras */ 14251ffecc1SBen Gras #define KEY_A1 0x15C /* Keypad upper left */ 14351ffecc1SBen Gras #define KEY_A3 0x15D /* Keypad upper right */ 14451ffecc1SBen Gras #define KEY_B2 0x15E /* Keypad centre key */ 14551ffecc1SBen Gras #define KEY_C1 0x15F /* Keypad lower left */ 14651ffecc1SBen Gras #define KEY_C3 0x160 /* Keypad lower right */ 14751ffecc1SBen Gras 14851ffecc1SBen Gras #define KEY_BTAB 0x161 /* Back Tab */ 14951ffecc1SBen Gras #define KEY_BEG 0x162 /* Begin key */ 15051ffecc1SBen Gras #define KEY_CANCEL 0x163 /* Cancel key */ 15151ffecc1SBen Gras #define KEY_CLOSE 0x164 /* Close Key */ 15251ffecc1SBen Gras #define KEY_COMMAND 0x165 /* Command Key */ 15351ffecc1SBen Gras #define KEY_COPY 0x166 /* Copy key */ 15451ffecc1SBen Gras #define KEY_CREATE 0x167 /* Create key */ 15551ffecc1SBen Gras #define KEY_END 0x168 /* End key */ 15651ffecc1SBen Gras #define KEY_EXIT 0x169 /* Exit key */ 15751ffecc1SBen Gras #define KEY_FIND 0x16A /* Find key */ 15851ffecc1SBen Gras #define KEY_HELP 0x16B /* Help key */ 15951ffecc1SBen Gras #define KEY_MARK 0x16C /* Mark key */ 16051ffecc1SBen Gras #define KEY_MESSAGE 0x16D /* Message key */ 16151ffecc1SBen Gras #define KEY_MOVE 0x16E /* Move key */ 16251ffecc1SBen Gras #define KEY_NEXT 0x16F /* Next Object key */ 16351ffecc1SBen Gras #define KEY_OPEN 0x170 /* Open key */ 16451ffecc1SBen Gras #define KEY_OPTIONS 0x171 /* Options key */ 16551ffecc1SBen Gras #define KEY_PREVIOUS 0x172 /* Previous Object key */ 16651ffecc1SBen Gras #define KEY_REDO 0x173 /* Redo key */ 16751ffecc1SBen Gras #define KEY_REFERENCE 0x174 /* Ref Key */ 16851ffecc1SBen Gras #define KEY_REFRESH 0x175 /* Refresh key */ 16951ffecc1SBen Gras #define KEY_REPLACE 0x176 /* Replace key */ 17051ffecc1SBen Gras #define KEY_RESTART 0x177 /* Restart key */ 17151ffecc1SBen Gras #define KEY_RESUME 0x178 /* Resume key */ 17251ffecc1SBen Gras #define KEY_SAVE 0x179 /* Save key */ 17351ffecc1SBen Gras #define KEY_SBEG 0x17A /* Shift begin key */ 17451ffecc1SBen Gras #define KEY_SCANCEL 0x17B /* Shift Cancel key */ 17551ffecc1SBen Gras #define KEY_SCOMMAND 0x17C /* Shift Command key */ 17651ffecc1SBen Gras #define KEY_SCOPY 0x17D /* Shift Copy key */ 17751ffecc1SBen Gras #define KEY_SCREATE 0x17E /* Shift Create key */ 17851ffecc1SBen Gras #define KEY_SDC 0x17F /* Shift Delete Character */ 17951ffecc1SBen Gras #define KEY_SDL 0x180 /* Shift Delete Line */ 18051ffecc1SBen Gras #define KEY_SELECT 0x181 /* Select key */ 18151ffecc1SBen Gras #define KEY_SEND 0x182 /* Send key */ 18251ffecc1SBen Gras #define KEY_SEOL 0x183 /* Shift Clear Line key */ 18351ffecc1SBen Gras #define KEY_SEXIT 0x184 /* Shift Exit key */ 18451ffecc1SBen Gras #define KEY_SFIND 0x185 /* Shift Find key */ 18551ffecc1SBen Gras #define KEY_SHELP 0x186 /* Shift Help key */ 18651ffecc1SBen Gras #define KEY_SHOME 0x187 /* Shift Home key */ 18751ffecc1SBen Gras #define KEY_SIC 0x188 /* Shift Input key */ 18851ffecc1SBen Gras #define KEY_SLEFT 0x189 /* Shift Left Arrow key */ 18951ffecc1SBen Gras #define KEY_SMESSAGE 0x18A /* Shift Message key */ 19051ffecc1SBen Gras #define KEY_SMOVE 0x18B /* Shift Move key */ 19151ffecc1SBen Gras #define KEY_SNEXT 0x18C /* Shift Next key */ 19251ffecc1SBen Gras #define KEY_SOPTIONS 0x18D /* Shift Options key */ 19351ffecc1SBen Gras #define KEY_SPREVIOUS 0x18E /* Shift Previous key */ 19451ffecc1SBen Gras #define KEY_SPRINT 0x18F /* Shift Print key */ 19551ffecc1SBen Gras #define KEY_SREDO 0x190 /* Shift Redo key */ 19651ffecc1SBen Gras #define KEY_SREPLACE 0x191 /* Shift Replace key */ 19751ffecc1SBen Gras #define KEY_SRIGHT 0x192 /* Shift Right Arrow key */ 19851ffecc1SBen Gras #define KEY_SRSUME 0x193 /* Shift Resume key */ 19951ffecc1SBen Gras #define KEY_SSAVE 0x194 /* Shift Save key */ 20051ffecc1SBen Gras #define KEY_SSUSPEND 0x195 /* Shift Suspend key */ 20151ffecc1SBen Gras #define KEY_SUNDO 0x196 /* Shift Undo key */ 20251ffecc1SBen Gras #define KEY_SUSPEND 0x197 /* Suspend key */ 20351ffecc1SBen Gras #define KEY_UNDO 0x198 /* Undo key */ 20451ffecc1SBen Gras #define KEY_MOUSE 0x199 /* Mouse event has occurred */ 20551ffecc1SBen Gras #define KEY_RESIZE 0x200 /* Resize event has occurred */ 20651ffecc1SBen Gras #define KEY_MAX 0x240 /* maximum extended key value */ 20751ffecc1SBen Gras #define KEY_CODE_YES 0x241 /* A function key pressed */ 20851ffecc1SBen Gras 20951ffecc1SBen Gras #include <unctrl.h> 21051ffecc1SBen Gras 21151ffecc1SBen Gras /* 21251ffecc1SBen Gras * A window an array of __LINE structures pointed to by the 'lines' pointer. 21351ffecc1SBen Gras * A line is an array of __LDATA structures pointed to by the 'line' pointer. 21451ffecc1SBen Gras */ 21551ffecc1SBen Gras 21651ffecc1SBen Gras /* 21751ffecc1SBen Gras * Definitions for characters and attributes in __LDATA 21851ffecc1SBen Gras */ 21951ffecc1SBen Gras #define __CHARTEXT 0x000000ff /* bits for 8-bit characters */ 22051ffecc1SBen Gras #define __NORMAL 0x00000000 /* Added characters are normal. */ 22151ffecc1SBen Gras #define __STANDOUT 0x00000100 /* Added characters are standout. */ 22251ffecc1SBen Gras #define __UNDERSCORE 0x00000200 /* Added characters are underscored. */ 22351ffecc1SBen Gras #define __REVERSE 0x00000400 /* Added characters are reverse 22451ffecc1SBen Gras video. */ 22551ffecc1SBen Gras #define __BLINK 0x00000800 /* Added characters are blinking. */ 22651ffecc1SBen Gras #define __DIM 0x00001000 /* Added characters are dim. */ 22751ffecc1SBen Gras #define __BOLD 0x00002000 /* Added characters are bold. */ 22851ffecc1SBen Gras #define __BLANK 0x00004000 /* Added characters are blanked. */ 22951ffecc1SBen Gras #define __PROTECT 0x00008000 /* Added characters are protected. */ 23051ffecc1SBen Gras #define __ALTCHARSET 0x00010000 /* Added characters are ACS */ 23151ffecc1SBen Gras #define __COLOR 0x03fe0000 /* Color bits */ 23251ffecc1SBen Gras #define __ATTRIBUTES 0x03ffff00 /* All 8-bit attribute bits */ 23351ffecc1SBen Gras #ifdef HAVE_WCHAR 23451ffecc1SBen Gras #define __ACS_IS_WACS 0x04000000 /* internal: use wacs table for ACS char */ 23551ffecc1SBen Gras #endif 23651ffecc1SBen Gras 23751ffecc1SBen Gras typedef struct __ldata __LDATA; 23851ffecc1SBen Gras typedef struct __line __LINE; 23951ffecc1SBen Gras typedef struct __window WINDOW; 24051ffecc1SBen Gras typedef struct __screen SCREEN; 24151ffecc1SBen Gras 24251ffecc1SBen Gras /* 24351ffecc1SBen Gras * Attribute definitions 24451ffecc1SBen Gras */ 24551ffecc1SBen Gras #define A_NORMAL __NORMAL 24651ffecc1SBen Gras #define A_STANDOUT __STANDOUT 24751ffecc1SBen Gras #define A_UNDERLINE __UNDERSCORE 24851ffecc1SBen Gras #define A_REVERSE __REVERSE 24951ffecc1SBen Gras #define A_BLINK __BLINK 25051ffecc1SBen Gras #define A_DIM __DIM 25151ffecc1SBen Gras #define A_BOLD __BOLD 25251ffecc1SBen Gras #define A_BLANK __BLANK 25351ffecc1SBen Gras #define A_INVIS __BLANK 25451ffecc1SBen Gras #define A_PROTECT __PROTECT 25551ffecc1SBen Gras #define A_ALTCHARSET __ALTCHARSET 25651ffecc1SBen Gras #define A_ATTRIBUTES __ATTRIBUTES 25751ffecc1SBen Gras #define A_CHARTEXT __CHARTEXT 25851ffecc1SBen Gras #define A_COLOR __COLOR 25951ffecc1SBen Gras 26051ffecc1SBen Gras #ifdef HAVE_WCHAR 26151ffecc1SBen Gras #define WA_ATTRIBUTES 0x03ffffff /* Wide character attributes mask */ 26284d9c625SLionel Sambuc #define WA_NORMAL __NORMAL 26351ffecc1SBen Gras #define WA_STANDOUT __STANDOUT /* Best highlighting mode */ 26451ffecc1SBen Gras #define WA_UNDERLINE __UNDERSCORE /* Underlining */ 26551ffecc1SBen Gras #define WA_REVERSE __REVERSE /* Reverse video */ 26651ffecc1SBen Gras #define WA_BLINK __BLINK /* Blinking */ 26751ffecc1SBen Gras #define WA_DIM __DIM /* Half bright */ 26851ffecc1SBen Gras #define WA_BOLD __BOLD /* Extra bright or bold */ 26951ffecc1SBen Gras #define WA_INVIS __BLANK /* Invisible */ 27051ffecc1SBen Gras #define WA_PROTECT __PROTECT /* Protected */ 27151ffecc1SBen Gras #define WA_ALTCHARSET __ALTCHARSET /* Alternate character set */ 27251ffecc1SBen Gras #define WA_LOW 0x00000002 /* Low highlight */ 27351ffecc1SBen Gras #define WA_TOP 0x00000004 /* Top highlight */ 27451ffecc1SBen Gras #define WA_HORIZONTAL 0x00000008 /* Horizontal highlight */ 27551ffecc1SBen Gras #define WA_VERTICAL 0x00000010 /* Vertical highlight */ 27651ffecc1SBen Gras #define WA_LEFT 0x00000020 /* Left highlight */ 27751ffecc1SBen Gras #define WA_RIGHT 0x00000040 /* Right highlight */ 27851ffecc1SBen Gras #endif /* HAVE_WCHAR */ 27951ffecc1SBen Gras 28051ffecc1SBen Gras /* 28151ffecc1SBen Gras * Alternate character set definitions 28251ffecc1SBen Gras */ 28351ffecc1SBen Gras 28451ffecc1SBen Gras #define NUM_ACS 128 28551ffecc1SBen Gras 28651ffecc1SBen Gras extern chtype _acs_char[NUM_ACS]; 28751ffecc1SBen Gras #ifdef __cplusplus 28851ffecc1SBen Gras #define __UC_CAST(a) static_cast<unsigned char>(a) 28951ffecc1SBen Gras #else 29051ffecc1SBen Gras #define __UC_CAST(a) (unsigned char)(a) 29151ffecc1SBen Gras #endif 29251ffecc1SBen Gras 29351ffecc1SBen Gras /* Standard definitions */ 29451ffecc1SBen Gras #define ACS_RARROW _acs_char[__UC_CAST('+')] 29551ffecc1SBen Gras #define ACS_LARROW _acs_char[__UC_CAST(',')] 29651ffecc1SBen Gras #define ACS_UARROW _acs_char[__UC_CAST('-')] 29751ffecc1SBen Gras #define ACS_DARROW _acs_char[__UC_CAST('.')] 29851ffecc1SBen Gras #define ACS_BLOCK _acs_char[__UC_CAST('0')] 29951ffecc1SBen Gras #define ACS_DIAMOND _acs_char[__UC_CAST('`')] 30051ffecc1SBen Gras #define ACS_CKBOARD _acs_char[__UC_CAST('a')] 30151ffecc1SBen Gras #define ACS_DEGREE _acs_char[__UC_CAST('f')] 30251ffecc1SBen Gras #define ACS_PLMINUS _acs_char[__UC_CAST('g')] 30351ffecc1SBen Gras #define ACS_BOARD _acs_char[__UC_CAST('h')] 30451ffecc1SBen Gras #define ACS_LANTERN _acs_char[__UC_CAST('i')] 30551ffecc1SBen Gras #define ACS_LRCORNER _acs_char[__UC_CAST('j')] 30651ffecc1SBen Gras #define ACS_URCORNER _acs_char[__UC_CAST('k')] 30751ffecc1SBen Gras #define ACS_ULCORNER _acs_char[__UC_CAST('l')] 30851ffecc1SBen Gras #define ACS_LLCORNER _acs_char[__UC_CAST('m')] 30951ffecc1SBen Gras #define ACS_PLUS _acs_char[__UC_CAST('n')] 31051ffecc1SBen Gras #define ACS_HLINE _acs_char[__UC_CAST('q')] 31151ffecc1SBen Gras #define ACS_S1 _acs_char[__UC_CAST('o')] 31251ffecc1SBen Gras #define ACS_S9 _acs_char[__UC_CAST('s')] 31351ffecc1SBen Gras #define ACS_LTEE _acs_char[__UC_CAST('t')] 31451ffecc1SBen Gras #define ACS_RTEE _acs_char[__UC_CAST('u')] 31551ffecc1SBen Gras #define ACS_BTEE _acs_char[__UC_CAST('v')] 31651ffecc1SBen Gras #define ACS_TTEE _acs_char[__UC_CAST('w')] 31751ffecc1SBen Gras #define ACS_VLINE _acs_char[__UC_CAST('x')] 31851ffecc1SBen Gras #define ACS_BULLET _acs_char[__UC_CAST('~')] 31951ffecc1SBen Gras 32051ffecc1SBen Gras /* Extensions */ 32151ffecc1SBen Gras #define ACS_S3 _acs_char[__UC_CAST('p')] 32251ffecc1SBen Gras #define ACS_S7 _acs_char[__UC_CAST('r')] 32351ffecc1SBen Gras #define ACS_LEQUAL _acs_char[__UC_CAST('y')] 32451ffecc1SBen Gras #define ACS_GEQUAL _acs_char[__UC_CAST('z')] 32551ffecc1SBen Gras #define ACS_PI _acs_char[__UC_CAST('{')] 32651ffecc1SBen Gras #define ACS_NEQUAL _acs_char[__UC_CAST('|')] 32751ffecc1SBen Gras #define ACS_STERLING _acs_char[__UC_CAST('}')] 32851ffecc1SBen Gras 32951ffecc1SBen Gras #ifdef HAVE_WCHAR 33051ffecc1SBen Gras extern cchar_t _wacs_char[NUM_ACS]; 33151ffecc1SBen Gras 33251ffecc1SBen Gras #define WACS_RARROW (&_wacs_char[(unsigned char)'+']) 33351ffecc1SBen Gras #define WACS_LARROW (&_wacs_char[(unsigned char)',']) 33451ffecc1SBen Gras #define WACS_UARROW (&_wacs_char[(unsigned char)'-']) 33551ffecc1SBen Gras #define WACS_DARROW (&_wacs_char[(unsigned char)'.']) 33651ffecc1SBen Gras #define WACS_BLOCK (&_wacs_char[(unsigned char)'0']) 33751ffecc1SBen Gras #define WACS_DIAMOND (&_wacs_char[(unsigned char)'`']) 33851ffecc1SBen Gras #define WACS_CKBOARD (&_wacs_char[(unsigned char)'a']) 33951ffecc1SBen Gras #define WACS_DEGREE (&_wacs_char[(unsigned char)'f']) 34051ffecc1SBen Gras #define WACS_PLMINUS (&_wacs_char[(unsigned char)'g']) 34151ffecc1SBen Gras #define WACS_BOARD (&_wacs_char[(unsigned char)'h']) 34251ffecc1SBen Gras #define WACS_LANTERN (&_wacs_char[(unsigned char)'i']) 34351ffecc1SBen Gras #define WACS_LRCORNER (&_wacs_char[(unsigned char)'j']) 34451ffecc1SBen Gras #define WACS_URCORNER (&_wacs_char[(unsigned char)'k']) 34551ffecc1SBen Gras #define WACS_ULCORNER (&_wacs_char[(unsigned char)'l']) 34651ffecc1SBen Gras #define WACS_LLCORNER (&_wacs_char[(unsigned char)'m']) 34751ffecc1SBen Gras #define WACS_PLUS (&_wacs_char[(unsigned char)'n']) 34851ffecc1SBen Gras #define WACS_HLINE (&_wacs_char[(unsigned char)'q']) 34951ffecc1SBen Gras #define WACS_S1 (&_wacs_char[(unsigned char)'o']) 35051ffecc1SBen Gras #define WACS_S9 (&_wacs_char[(unsigned char)'s']) 35151ffecc1SBen Gras #define WACS_LTEE (&_wacs_char[(unsigned char)'t']) 35251ffecc1SBen Gras #define WACS_RTEE (&_wacs_char[(unsigned char)'u']) 35351ffecc1SBen Gras #define WACS_BTEE (&_wacs_char[(unsigned char)'v']) 35451ffecc1SBen Gras #define WACS_TTEE (&_wacs_char[(unsigned char)'w']) 35551ffecc1SBen Gras #define WACS_VLINE (&_wacs_char[(unsigned char)'x']) 35651ffecc1SBen Gras #define WACS_BULLET (&_wacs_char[(unsigned char)'~']) 35751ffecc1SBen Gras #define WACS_S3 (&_wacs_char[(unsigned char)'p']) 35851ffecc1SBen Gras #define WACS_S7 (&_wacs_char[(unsigned char)'r']) 35951ffecc1SBen Gras #define WACS_LEQUAL (&_wacs_char[(unsigned char)'y']) 36051ffecc1SBen Gras #define WACS_GEQUAL (&_wacs_char[(unsigned char)'z']) 36151ffecc1SBen Gras #define WACS_PI (&_wacs_char[(unsigned char)'{']) 36251ffecc1SBen Gras #define WACS_NEQUAL (&_wacs_char[(unsigned char)'|']) 36351ffecc1SBen Gras #define WACS_STERLING (&_wacs_char[(unsigned char)'}']) 36451ffecc1SBen Gras #endif /* HAVE_WCHAR */ 36551ffecc1SBen Gras 36651ffecc1SBen Gras /* System V compatibility */ 36751ffecc1SBen Gras #define ACS_SBBS ACS_LRCORNER 36851ffecc1SBen Gras #define ACS_BBSS ACS_URCORNER 36951ffecc1SBen Gras #define ACS_BSSB ACS_ULCORNER 37051ffecc1SBen Gras #define ACS_SSBB ACS_LLCORNER 37151ffecc1SBen Gras #define ACS_SSSS ACS_PLUS 37251ffecc1SBen Gras #define ACS_BSBS ACS_HLINE 37351ffecc1SBen Gras #define ACS_SSSB ACS_LTEE 37451ffecc1SBen Gras #define ACS_SBSS ACS_RTEE 37551ffecc1SBen Gras #define ACS_SSBS ACS_BTEE 37651ffecc1SBen Gras #define ACS_BSSS ACS_TTEE 37751ffecc1SBen Gras #define ACS_SBSB ACS_VLINE 37851ffecc1SBen Gras #define _acs_map _acs_char 37951ffecc1SBen Gras 38051ffecc1SBen Gras /* 38151ffecc1SBen Gras * Color definitions (ANSI color numbers) 38251ffecc1SBen Gras */ 38351ffecc1SBen Gras 38451ffecc1SBen Gras #define COLOR_BLACK 0x00 38551ffecc1SBen Gras #define COLOR_RED 0x01 38651ffecc1SBen Gras #define COLOR_GREEN 0x02 38751ffecc1SBen Gras #define COLOR_YELLOW 0x03 38851ffecc1SBen Gras #define COLOR_BLUE 0x04 38951ffecc1SBen Gras #define COLOR_MAGENTA 0x05 39051ffecc1SBen Gras #define COLOR_CYAN 0x06 39151ffecc1SBen Gras #define COLOR_WHITE 0x07 39251ffecc1SBen Gras 39351ffecc1SBen Gras #ifdef __cplusplus 39451ffecc1SBen Gras #define __UINT32_CAST(a) static_cast<u_int32_t>(a) 39551ffecc1SBen Gras #else 39651ffecc1SBen Gras #define __UINT32_CAST(a) (u_int32_t)(a) 39751ffecc1SBen Gras #endif 39851ffecc1SBen Gras #define COLOR_PAIR(n) (((__UINT32_CAST(n)) << 17) & A_COLOR) 39951ffecc1SBen Gras #define PAIR_NUMBER(n) (((__UINT32_CAST(n)) & A_COLOR) >> 17) 40051ffecc1SBen Gras 40151ffecc1SBen Gras /* Curses external declarations. */ 40251ffecc1SBen Gras extern WINDOW *curscr; /* Current screen. */ 40351ffecc1SBen Gras extern WINDOW *stdscr; /* Standard screen. */ 40451ffecc1SBen Gras 40551ffecc1SBen Gras extern int __tcaction; /* If terminal hardware set. */ 40651ffecc1SBen Gras 40751ffecc1SBen Gras extern int COLS; /* Columns on the screen. */ 40851ffecc1SBen Gras extern int LINES; /* Lines on the screen. */ 40951ffecc1SBen Gras extern int COLORS; /* Max colors on the screen. */ 41051ffecc1SBen Gras extern int COLOR_PAIRS; /* Max color pairs on the screen. */ 41151ffecc1SBen Gras 41251ffecc1SBen Gras extern int ESCDELAY; /* Delay between keys in esc seq's. */ 41384d9c625SLionel Sambuc extern int TABSIZE; /* Size of a tab. */ 41451ffecc1SBen Gras 41551ffecc1SBen Gras #ifndef OK 41651ffecc1SBen Gras #define ERR (-1) /* Error return. */ 41751ffecc1SBen Gras #define OK (0) /* Success return. */ 41851ffecc1SBen Gras #endif 41951ffecc1SBen Gras 42051ffecc1SBen Gras /* 42151ffecc1SBen Gras * The following have, traditionally, been macros but X/Open say they 42251ffecc1SBen Gras * need to be functions. Keep the old macros for debugging. 42351ffecc1SBen Gras */ 42451ffecc1SBen Gras #ifdef _CURSES_USE_MACROS 42551ffecc1SBen Gras /* Standard screen pseudo functions. */ 42651ffecc1SBen Gras #define addbytes(s, n) __waddbytes(stdscr, s, n, 0) 42751ffecc1SBen Gras #define addch(ch) waddch(stdscr, ch) 42851ffecc1SBen Gras #define addchnstr(s) waddchnstr(stdscr, s, n) 42951ffecc1SBen Gras #define addchstr(s) waddchnstr(stdscr, s, -1) 43051ffecc1SBen Gras #define addnstr(s, n) waddnstr(stdscr, s, n) 43151ffecc1SBen Gras #define addstr(s) waddnstr(stdscr, s, -1) 43251ffecc1SBen Gras #define attr_get(a, p, o) wattr_get(stdscr, a, p, o) 43351ffecc1SBen Gras #define attr_off(a, o) wattr_off(stdscr, a, o) 43451ffecc1SBen Gras #define attr_on(a, o) wattr_on(stdscr, a, o) 43551ffecc1SBen Gras #define attr_set(a, p, o) wattr_set(stdscr, a, p, o) 43651ffecc1SBen Gras #define attroff(attr) wattroff(stdscr, attr) 43751ffecc1SBen Gras #define attron(attr) wattron(stdscr, attr) 43851ffecc1SBen Gras #define attrset(attr) wattrset(stdscr, attr) 43951ffecc1SBen Gras #define bkgd(ch) wbkgd(stdscr, ch) 44051ffecc1SBen Gras #define bkgdset(ch) wbkgdset(stdscr, ch) 44151ffecc1SBen Gras #define border(l, r, t, b, tl, tr, bl, br) \ 44251ffecc1SBen Gras wborder(stdscr, l, r, t, b, tl, tr, bl, br) 44351ffecc1SBen Gras #define clear() wclear(stdscr) 44451ffecc1SBen Gras #define clrtobot() wclrtobot(stdscr) 44551ffecc1SBen Gras #define clrtoeol() wclrtoeol(stdscr) 44651ffecc1SBen Gras #define color_set(c, o) wcolor_set(stdscr, c, o) 44751ffecc1SBen Gras #define delch() wdelch(stdscr) 44851ffecc1SBen Gras #define deleteln() wdeleteln(stdscr) 44951ffecc1SBen Gras #define echochar(c) wechochar(stdscr, c) 45051ffecc1SBen Gras #define erase() werase(stdscr) 45151ffecc1SBen Gras #define getch() wgetch(stdscr) 45251ffecc1SBen Gras #define getnstr(s, n) wgetnstr(stdscr, s, n) 45351ffecc1SBen Gras #define getstr(s) wgetstr(stdscr, s) 45451ffecc1SBen Gras #define inch() winch(stdscr) 45551ffecc1SBen Gras #define inchnstr(c) winchnstr(stdscr, c) 45651ffecc1SBen Gras #define inchstr(c) winchstr(stdscr, c) 45751ffecc1SBen Gras #define innstr(s, n) winnstr(stdscr, s, n) 45851ffecc1SBen Gras #define insch(ch) winsch(stdscr, ch) 45951ffecc1SBen Gras #define insdelln(n) winsdelln(stdscr, n) 46051ffecc1SBen Gras #define insertln() winsertln(stdscr) 46151ffecc1SBen Gras #define instr(s) winstr(stdscr, s) 46251ffecc1SBen Gras #define move(y, x) wmove(stdscr, y, x) 46351ffecc1SBen Gras #define refresh() wrefresh(stdscr) 46451ffecc1SBen Gras #define scrl(n) wscrl(stdscr, n) 46551ffecc1SBen Gras #define setscrreg(t, b) wsetscrreg(stdscr, t, b) 46651ffecc1SBen Gras #define standend() wstandend(stdscr) 46751ffecc1SBen Gras #define standout() wstandout(stdscr) 46851ffecc1SBen Gras #define timeout(delay) wtimeout(stdscr, delay) 46951ffecc1SBen Gras #define underscore() wunderscore(stdscr) 47051ffecc1SBen Gras #define underend() wunderend(stdscr) 47151ffecc1SBen Gras #define waddbytes(w, s, n) __waddbytes(w, s, n, 0) 47251ffecc1SBen Gras #define waddstr(w, s) waddnstr(w, s, -1) 47351ffecc1SBen Gras 47451ffecc1SBen Gras /* Standard screen plus movement pseudo functions. */ 47551ffecc1SBen Gras #define mvaddbytes(y, x, s, n) mvwaddbytes(stdscr, y, x, s, n) 47651ffecc1SBen Gras #define mvaddch(y, x, ch) mvwaddch(stdscr, y, x, ch) 47751ffecc1SBen Gras #define mvaddchnstr(y, x, s, n) mvwaddchnstr(stdscr, y, x, s, n) 47851ffecc1SBen Gras #define mvaddchstr(y, x, s) mvwaddchstr(stdscr, y, x, s) 47951ffecc1SBen Gras #define mvaddnstr(y, x, s, n) mvwaddnstr(stdscr, y, x, s, n) 48051ffecc1SBen Gras #define mvaddstr(y, x, s) mvwaddstr(stdscr, y, x, s) 48151ffecc1SBen Gras #define mvdelch(y, x) mvwdelch(stdscr, y, x) 48251ffecc1SBen Gras #define mvgetch(y, x) mvwgetch(stdscr, y, x) 483*0a6a1f1dSLionel Sambuc #define mvgetnstr(y, x, s, n) mvwgetnstr(stdscr, y, x, s, n) 48451ffecc1SBen Gras #define mvgetstr(y, x, s) mvwgetstr(stdscr, y, x, s) 48551ffecc1SBen Gras #define mvinch(y, x) mvwinch(stdscr, y, x) 48651ffecc1SBen Gras #define mvinchnstr(y, x, c, n) mvwinchnstr(stdscr, y, x, c, n) 48751ffecc1SBen Gras #define mvinchstr(y, x, c) mvwinchstr(stdscr, y, x, c) 48851ffecc1SBen Gras #define mvinnstr(y, x, s, n) mvwinnstr(stdscr, y, x, s, n) 48951ffecc1SBen Gras #define mvinsch(y, x, c) mvwinsch(stdscr, y, x, c) 49051ffecc1SBen Gras #define mvinstr(y, x, s) mvwinstr(stdscr, y, x, s) 49151ffecc1SBen Gras #define mvwaddbytes(w, y, x, s, n) \ 49251ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : __waddbytes(w, s, n, 0)) 49351ffecc1SBen Gras #define mvwaddch(w, y, x, ch) \ 49451ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : waddch(w, ch)) 49551ffecc1SBen Gras #define mvwaddchnstr(w, y, x, s, n) \ 49651ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : waddchnstr(w, s, n)) 49751ffecc1SBen Gras #define mvwaddchstr(w, y, x, s) \ 49851ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : waddchnstr(w, s, -1)) 49951ffecc1SBen Gras #define mvwaddnstr(w, y, x, s, n) \ 50051ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, n)) 50151ffecc1SBen Gras #define mvwaddstr(w, y, x, s) \ 50251ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, -1)) 50351ffecc1SBen Gras #define mvwdelch(w, y, x) \ 50451ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : wdelch(w)) 50551ffecc1SBen Gras #define mvwgetch(w, y, x) \ 50651ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : wgetch(w)) 50751ffecc1SBen Gras #define mvwgetnstr(w, y, x, s, n) \ 50851ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : wgetnstr(w, s, n)) 50951ffecc1SBen Gras #define mvwgetstr(w, y, x, s) \ 51051ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : wgetstr(w, s)) 51151ffecc1SBen Gras #define mvwinch(w, y, x) \ 51251ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winch(w)) 51351ffecc1SBen Gras #define mvwinchnstr(w, y, x, c, n) \ 51451ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winchnstr(w, c, n)) 51551ffecc1SBen Gras #define mvwinchstr(w, y, x, s) \ 51651ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winchstr(w, c)) 51751ffecc1SBen Gras #define mvwinnstr(w, y, x, s, n) \ 51851ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winnstr(w, s, n)) 51951ffecc1SBen Gras #define mvwinsch(w, y, x, c) \ 52051ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winsch(w, c)) 52151ffecc1SBen Gras #define mvwinstr(w, y, x, s) \ 52251ffecc1SBen Gras (wmove(w, y, x) == ERR ? ERR : winstr(w, s)) 52351ffecc1SBen Gras 52451ffecc1SBen Gras /* Miscellaneous. */ 52551ffecc1SBen Gras #define noqiflush() intrflush(stdscr, FALSE) 52651ffecc1SBen Gras #define qiflush() intrflush(stdscr, TRUE) 52751ffecc1SBen Gras 52851ffecc1SBen Gras #else 52951ffecc1SBen Gras /* Use functions not macros... */ 53051ffecc1SBen Gras __BEGIN_DECLS 53151ffecc1SBen Gras int addbytes(const char *, int); 53251ffecc1SBen Gras int addch(chtype); 53351ffecc1SBen Gras int addchnstr(const chtype *, int); 53451ffecc1SBen Gras int addchstr(const chtype *); 53551ffecc1SBen Gras int addnstr(const char *, int); 53651ffecc1SBen Gras int addstr(const char *); 53751ffecc1SBen Gras int attr_get(attr_t *, short *, void *); 53851ffecc1SBen Gras int attr_off(attr_t, void *); 53951ffecc1SBen Gras int attr_on(attr_t, void *); 54051ffecc1SBen Gras int attr_set(attr_t, short, void *); 54151ffecc1SBen Gras int attroff(int); 54251ffecc1SBen Gras int attron(int); 54351ffecc1SBen Gras int attrset(int); 54451ffecc1SBen Gras int bkgd(chtype); 54551ffecc1SBen Gras void bkgdset(chtype); 54651ffecc1SBen Gras int border(chtype, chtype, chtype, chtype, 54751ffecc1SBen Gras chtype, chtype, chtype, chtype); 54851ffecc1SBen Gras int clear(void); 54951ffecc1SBen Gras int clrtobot(void); 55051ffecc1SBen Gras int clrtoeol(void); 55151ffecc1SBen Gras int color_set(short, void *); 55251ffecc1SBen Gras int delch(void); 55351ffecc1SBen Gras int deleteln(void); 55451ffecc1SBen Gras int echochar(const chtype); 55551ffecc1SBen Gras int erase(void); 55651ffecc1SBen Gras int getch(void); 55751ffecc1SBen Gras int getnstr(char *, int); 55851ffecc1SBen Gras int getstr(char *); 55951ffecc1SBen Gras chtype inch(void); 56051ffecc1SBen Gras int inchnstr(chtype *, int); 56151ffecc1SBen Gras int inchstr(chtype *); 56251ffecc1SBen Gras int innstr(char *, int); 56351ffecc1SBen Gras int insch(chtype); 56451ffecc1SBen Gras int insdelln(int); 56551ffecc1SBen Gras int insertln(void); 56651ffecc1SBen Gras int instr(char *); 56751ffecc1SBen Gras int move(int, int); 56851ffecc1SBen Gras int refresh(void); 56951ffecc1SBen Gras int scrl(int); 57051ffecc1SBen Gras int setscrreg(int, int); 57151ffecc1SBen Gras int standend(void); 57251ffecc1SBen Gras int standout(void); 57351ffecc1SBen Gras void timeout(int); 57451ffecc1SBen Gras int underscore(void); 57551ffecc1SBen Gras int underend(void); 57651ffecc1SBen Gras int waddbytes(WINDOW *, const char *, int); 57751ffecc1SBen Gras int waddstr(WINDOW *, const char *); 57851ffecc1SBen Gras 57951ffecc1SBen Gras /* Standard screen plus movement functions. */ 58051ffecc1SBen Gras int mvaddbytes(int, int, const char *, int); 58151ffecc1SBen Gras int mvaddch(int, int, chtype); 58251ffecc1SBen Gras int mvaddchnstr(int, int, const chtype *, int); 58351ffecc1SBen Gras int mvaddchstr(int, int, const chtype *); 58451ffecc1SBen Gras int mvaddnstr(int, int, const char *, int); 58551ffecc1SBen Gras int mvaddstr(int, int, const char *); 58651ffecc1SBen Gras int mvdelch(int, int); 58751ffecc1SBen Gras int mvgetch(int, int); 58851ffecc1SBen Gras int mvgetnstr(int, int, char *, int); 58951ffecc1SBen Gras int mvgetstr(int, int, char *); 59051ffecc1SBen Gras chtype mvinch(int, int); 59151ffecc1SBen Gras int mvinchnstr(int, int, chtype *, int); 59251ffecc1SBen Gras int mvinchstr(int, int, chtype *); 59351ffecc1SBen Gras int mvinnstr(int, int, char *, int); 59451ffecc1SBen Gras int mvinsch(int, int, chtype); 59551ffecc1SBen Gras int mvinstr(int, int, char *); 59651ffecc1SBen Gras 59751ffecc1SBen Gras int mvwaddbytes(WINDOW *, int, int, const char *, int); 59851ffecc1SBen Gras int mvwaddch(WINDOW *, int, int, chtype); 59951ffecc1SBen Gras int mvwaddchnstr(WINDOW *, int, int, const chtype *, int); 60051ffecc1SBen Gras int mvwaddchstr(WINDOW *, int, int, const chtype *); 60151ffecc1SBen Gras int mvwaddnstr(WINDOW *, int, int, const char *, int); 60251ffecc1SBen Gras int mvwaddstr(WINDOW *, int, int, const char *); 60351ffecc1SBen Gras int mvwdelch(WINDOW *, int, int); 60451ffecc1SBen Gras int mvwgetch(WINDOW *, int, int); 60551ffecc1SBen Gras int mvwgetnstr(WINDOW *, int, int, char *, int); 60651ffecc1SBen Gras int mvwgetstr(WINDOW *, int, int, char *); 60751ffecc1SBen Gras chtype mvwinch(WINDOW *, int, int); 60851ffecc1SBen Gras int mvwinsch(WINDOW *, int, int, chtype); 60951ffecc1SBen Gras __END_DECLS 61051ffecc1SBen Gras #endif /* _CURSES_USE_MACROS */ 61151ffecc1SBen Gras 61251ffecc1SBen Gras #define getyx(w, y, x) (y) = getcury(w), (x) = getcurx(w) 61351ffecc1SBen Gras #define getbegyx(w, y, x) (y) = getbegy(w), (x) = getbegx(w) 61451ffecc1SBen Gras #define getmaxyx(w, y, x) (y) = getmaxy(w), (x) = getmaxx(w) 61551ffecc1SBen Gras #define getparyx(w, y, x) (y) = getpary(w), (x) = getparx(w) 61651ffecc1SBen Gras 61751ffecc1SBen Gras /* Public function prototypes. */ 61851ffecc1SBen Gras __BEGIN_DECLS 61951ffecc1SBen Gras int assume_default_colors(short, short); 62051ffecc1SBen Gras int baudrate(void); 62151ffecc1SBen Gras int beep(void); 62251ffecc1SBen Gras int box(WINDOW *, chtype, chtype); 62351ffecc1SBen Gras bool can_change_color(void); 62451ffecc1SBen Gras int cbreak(void); 62551ffecc1SBen Gras int clearok(WINDOW *, bool); 62651ffecc1SBen Gras int color_content(short, short *, short *, short *); 62751ffecc1SBen Gras int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int); 62851ffecc1SBen Gras int curs_set(int); 62951ffecc1SBen Gras int def_prog_mode(void); 63051ffecc1SBen Gras int def_shell_mode(void); 63151ffecc1SBen Gras int define_key(char *, int); 63251ffecc1SBen Gras int delay_output(int); 63351ffecc1SBen Gras void delscreen(SCREEN *); 63451ffecc1SBen Gras int delwin(WINDOW *); 63551ffecc1SBen Gras WINDOW *derwin(WINDOW *, int, int, int, int); 63651ffecc1SBen Gras WINDOW *dupwin(WINDOW *); 63751ffecc1SBen Gras int doupdate(void); 63851ffecc1SBen Gras int echo(void); 63951ffecc1SBen Gras int endwin(void); 64051ffecc1SBen Gras char erasechar(void); 64151ffecc1SBen Gras int flash(void); 64251ffecc1SBen Gras int flushinp(void); 64351ffecc1SBen Gras int flushok(WINDOW *, bool); 64451ffecc1SBen Gras char *fullname(const char *, char *); 64551ffecc1SBen Gras chtype getattrs(WINDOW *); 64651ffecc1SBen Gras chtype getbkgd(WINDOW *); 64751ffecc1SBen Gras int getcury(WINDOW *); 64851ffecc1SBen Gras int getcurx(WINDOW *); 64951ffecc1SBen Gras int getbegy(WINDOW *); 65051ffecc1SBen Gras int getbegx(WINDOW *); 65151ffecc1SBen Gras int getmaxy(WINDOW *); 65251ffecc1SBen Gras int getmaxx(WINDOW *); 65351ffecc1SBen Gras int getpary(WINDOW *); 65451ffecc1SBen Gras int getparx(WINDOW *); 65551ffecc1SBen Gras int gettmode(void); 65651ffecc1SBen Gras WINDOW *getwin(FILE *); 65751ffecc1SBen Gras int halfdelay(int); 65851ffecc1SBen Gras bool has_colors(void); 65951ffecc1SBen Gras bool has_ic(void); 66051ffecc1SBen Gras bool has_il(void); 66151ffecc1SBen Gras int hline(chtype, int); 66251ffecc1SBen Gras int idcok(WINDOW *, bool); 66351ffecc1SBen Gras int idlok(WINDOW *, bool); 66451ffecc1SBen Gras int init_color(short, short, short, short); 66551ffecc1SBen Gras int init_pair(short, short, short); 66651ffecc1SBen Gras WINDOW *initscr(void); 66751ffecc1SBen Gras int intrflush(WINDOW *, bool); 66851ffecc1SBen Gras bool isendwin(void); 66951ffecc1SBen Gras bool is_linetouched(WINDOW *, int); 67051ffecc1SBen Gras bool is_wintouched(WINDOW *); 67151ffecc1SBen Gras int keyok(int, bool); 67251ffecc1SBen Gras int keypad(WINDOW *, bool); 67351ffecc1SBen Gras char *keyname(int); 67451ffecc1SBen Gras char killchar(void); 67551ffecc1SBen Gras int leaveok(WINDOW *, bool); 67651ffecc1SBen Gras int meta(WINDOW *, bool); 67751ffecc1SBen Gras int mvcur(int, int, int, int); 67851ffecc1SBen Gras int mvderwin(WINDOW *, int, int); 67951ffecc1SBen Gras int mvhline(int, int, chtype, int); 68051ffecc1SBen Gras int mvprintw(int, int, const char *, ...) __printflike(3, 4); 68151ffecc1SBen Gras int mvscanw(int, int, const char *, ...) __scanflike(3, 4); 68251ffecc1SBen Gras int mvvline(int, int, chtype, int); 68351ffecc1SBen Gras int mvwhline(WINDOW *, int, int, chtype, int); 68451ffecc1SBen Gras int mvwvline(WINDOW *, int, int, chtype, int); 68551ffecc1SBen Gras int mvwin(WINDOW *, int, int); 68651ffecc1SBen Gras int mvwinchnstr(WINDOW *, int, int, chtype *, int); 68751ffecc1SBen Gras int mvwinchstr(WINDOW *, int, int, chtype *); 68851ffecc1SBen Gras int mvwinnstr(WINDOW *, int, int, char *, int); 68951ffecc1SBen Gras int mvwinstr(WINDOW *, int, int, char *); 69051ffecc1SBen Gras int mvwprintw(WINDOW *, int, int, const char *, ...) __printflike(4, 5); 69151ffecc1SBen Gras int mvwscanw(WINDOW *, int, int, const char *, ...) __scanflike(4, 5); 69251ffecc1SBen Gras int napms(int); 69351ffecc1SBen Gras WINDOW *newpad(int, int); 69451ffecc1SBen Gras SCREEN *newterm(char *, FILE *, FILE *); 69551ffecc1SBen Gras WINDOW *newwin(int, int, int, int); 69651ffecc1SBen Gras int nl(void); 69751ffecc1SBen Gras attr_t no_color_attributes(void); 69851ffecc1SBen Gras int nocbreak(void); 69951ffecc1SBen Gras int nodelay(WINDOW *, bool); 70051ffecc1SBen Gras int noecho(void); 70151ffecc1SBen Gras int nonl(void); 70251ffecc1SBen Gras void noqiflush(void); 70351ffecc1SBen Gras int noraw(void); 70451ffecc1SBen Gras int notimeout(WINDOW *, bool); 70551ffecc1SBen Gras int overlay(const WINDOW *, WINDOW *); 70651ffecc1SBen Gras int overwrite(const WINDOW *, WINDOW *); 70751ffecc1SBen Gras int pair_content(short, short *, short *); 70851ffecc1SBen Gras int pechochar(WINDOW *, const chtype); 70951ffecc1SBen Gras int pnoutrefresh(WINDOW *, int, int, int, int, int, int); 71051ffecc1SBen Gras int prefresh(WINDOW *, int, int, int, int, int, int); 71151ffecc1SBen Gras int printw(const char *, ...) __printflike(1, 2); 71251ffecc1SBen Gras int putwin(WINDOW *, FILE *); 71351ffecc1SBen Gras void qiflush(void); 71451ffecc1SBen Gras int raw(void); 71551ffecc1SBen Gras int redrawwin(WINDOW *); 71651ffecc1SBen Gras int reset_prog_mode(void); 71751ffecc1SBen Gras int reset_shell_mode(void); 71851ffecc1SBen Gras int resetty(void); 71951ffecc1SBen Gras int resizeterm(int, int); 72051ffecc1SBen Gras int savetty(void); 72151ffecc1SBen Gras int scanw(const char *, ...) __scanflike(1, 2); 72251ffecc1SBen Gras int scroll(WINDOW *); 72351ffecc1SBen Gras int scrollok(WINDOW *, bool); 72451ffecc1SBen Gras int setterm(char *); 72551ffecc1SBen Gras SCREEN *set_term(SCREEN *); 72651ffecc1SBen Gras int start_color(void); 72751ffecc1SBen Gras WINDOW *subpad(WINDOW *, int, int, int, int); 72851ffecc1SBen Gras WINDOW *subwin(WINDOW *, int, int, int, int); 72951ffecc1SBen Gras chtype termattrs(void); 73051ffecc1SBen Gras attr_t term_attrs(void); 73151ffecc1SBen Gras int touchline(WINDOW *, int, int); 73251ffecc1SBen Gras int touchoverlap(WINDOW *, WINDOW *); 73351ffecc1SBen Gras int touchwin(WINDOW *); 73451ffecc1SBen Gras int ungetch(int); 73551ffecc1SBen Gras int untouchwin(WINDOW *); 73651ffecc1SBen Gras int use_default_colors(void); 73751ffecc1SBen Gras int vline(chtype, int); 7380c3ae37fSLionel Sambuc int vw_printw(WINDOW *, const char *, __va_list) __printflike(2, 0); 7390c3ae37fSLionel Sambuc int vw_scanw(WINDOW *, const char *, __va_list) __scanflike(2, 0); 7400c3ae37fSLionel Sambuc int vwprintw(WINDOW *, const char *, __va_list) __printflike(2, 0); 7410c3ae37fSLionel Sambuc int vwscanw(WINDOW *, const char *, __va_list) __scanflike(2, 0); 74251ffecc1SBen Gras int waddch(WINDOW *, chtype); 74351ffecc1SBen Gras int waddchnstr(WINDOW *, const chtype *, int); 74451ffecc1SBen Gras int waddchstr(WINDOW *, const chtype *); 74551ffecc1SBen Gras int waddnstr(WINDOW *, const char *, int); 74651ffecc1SBen Gras int wattr_get(WINDOW *, attr_t *, short *, void *); 74751ffecc1SBen Gras int wattr_off(WINDOW *, attr_t, void *); 74851ffecc1SBen Gras int wattr_on(WINDOW *, attr_t, void *); 74951ffecc1SBen Gras int wattr_set(WINDOW *, attr_t, short, void *); 75051ffecc1SBen Gras int wattroff(WINDOW *, int); 75151ffecc1SBen Gras int wattron(WINDOW *, int); 75251ffecc1SBen Gras int wattrset(WINDOW *, int); 75351ffecc1SBen Gras int wbkgd(WINDOW *, chtype); 75451ffecc1SBen Gras void wbkgdset(WINDOW *, chtype); 75551ffecc1SBen Gras int wborder(WINDOW *, chtype, chtype, chtype, chtype, chtype, chtype, 75651ffecc1SBen Gras chtype, chtype); 75751ffecc1SBen Gras int wclear(WINDOW *); 75851ffecc1SBen Gras int wclrtobot(WINDOW *); 75951ffecc1SBen Gras int wclrtoeol(WINDOW *); 76051ffecc1SBen Gras int wcolor_set(WINDOW *, short, void *); 76151ffecc1SBen Gras void wcursyncup(WINDOW *); 76251ffecc1SBen Gras int wdelch(WINDOW *); 76351ffecc1SBen Gras int wdeleteln(WINDOW *); 76451ffecc1SBen Gras int wechochar(WINDOW *, const chtype); 76551ffecc1SBen Gras int werase(WINDOW *); 76651ffecc1SBen Gras int wgetch(WINDOW *); 76751ffecc1SBen Gras int wgetnstr(WINDOW *, char *, int); 76851ffecc1SBen Gras int wgetstr(WINDOW *, char *); 76951ffecc1SBen Gras int whline(WINDOW *, chtype, int); 77051ffecc1SBen Gras chtype winch(WINDOW *); 77151ffecc1SBen Gras int winchnstr(WINDOW *, chtype *, int); 77251ffecc1SBen Gras int winchstr(WINDOW *, chtype *); 77351ffecc1SBen Gras int winnstr(WINDOW *, char *, int); 77451ffecc1SBen Gras int winsch(WINDOW *, chtype); 77551ffecc1SBen Gras int winsdelln(WINDOW *, int); 77651ffecc1SBen Gras int winsertln(WINDOW *); 77751ffecc1SBen Gras int winstr(WINDOW *, char *); 77851ffecc1SBen Gras int wmove(WINDOW *, int, int); 77951ffecc1SBen Gras int wnoutrefresh(WINDOW *); 78051ffecc1SBen Gras int wprintw(WINDOW *, const char *, ...) __printflike(2, 3); 78151ffecc1SBen Gras int wredrawln(WINDOW *, int, int); 78251ffecc1SBen Gras int wrefresh(WINDOW *); 78351ffecc1SBen Gras int wresize(WINDOW *, int, int); 78451ffecc1SBen Gras int wscanw(WINDOW *, const char *, ...) __scanflike(2, 3); 78551ffecc1SBen Gras int wscrl(WINDOW *, int); 78651ffecc1SBen Gras int wsetscrreg(WINDOW *, int, int); 78751ffecc1SBen Gras int wstandend(WINDOW *); 78851ffecc1SBen Gras int wstandout(WINDOW *); 78951ffecc1SBen Gras void wsyncdown(WINDOW *); 79051ffecc1SBen Gras void wsyncup(WINDOW *); 79151ffecc1SBen Gras void wtimeout(WINDOW *, int); 79251ffecc1SBen Gras int wtouchln(WINDOW *, int, int, int); 79351ffecc1SBen Gras int wunderend(WINDOW *); 79451ffecc1SBen Gras int wunderscore(WINDOW *); 79551ffecc1SBen Gras int wvline(WINDOW *, chtype, int); 79651ffecc1SBen Gras 79751ffecc1SBen Gras int insnstr(const char *, int); 79851ffecc1SBen Gras int insstr(const char *); 79951ffecc1SBen Gras int mvinsnstr(int, int, const char *, int); 80051ffecc1SBen Gras int mvinsstr(int, int, const char *); 80151ffecc1SBen Gras int mvwinsnstr(WINDOW *, int, int, const char *, int); 80251ffecc1SBen Gras int mvwinsstr(WINDOW *, int, int, const char *); 80351ffecc1SBen Gras int winsnstr(WINDOW *, const char *, int); 80451ffecc1SBen Gras int winsstr(WINDOW *, const char *); 80551ffecc1SBen Gras 80651ffecc1SBen Gras int chgat(int, attr_t, short, const void *); 80751ffecc1SBen Gras int wchgat(WINDOW *, int, attr_t, short, const void *); 80851ffecc1SBen Gras int mvchgat(int, int, int, attr_t, short, const void *); 80951ffecc1SBen Gras int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *); 81051ffecc1SBen Gras 81151ffecc1SBen Gras /* wide-character support routines */ 81251ffecc1SBen Gras /* return ERR when HAVE_WCHAR is not defined */ 81351ffecc1SBen Gras /* add */ 81451ffecc1SBen Gras int add_wch(const cchar_t *); 81551ffecc1SBen Gras int wadd_wch(WINDOW *, const cchar_t *); 81651ffecc1SBen Gras int mvadd_wch(int, int, const cchar_t *); 81751ffecc1SBen Gras int mvwadd_wch(WINDOW *, int, int, const cchar_t *); 81851ffecc1SBen Gras 81951ffecc1SBen Gras int add_wchnstr(const cchar_t *, int); 82051ffecc1SBen Gras int add_wchstr(const cchar_t *); 82151ffecc1SBen Gras int wadd_wchnstr(WINDOW *, const cchar_t *, int); 82251ffecc1SBen Gras int wadd_wchstr(WINDOW *, const cchar_t *); 82351ffecc1SBen Gras int mvadd_wchnstr(int, int, const cchar_t *, int); 82451ffecc1SBen Gras int mvadd_wchstr(int, int, const cchar_t *); 82551ffecc1SBen Gras int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int); 82651ffecc1SBen Gras int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *); 82751ffecc1SBen Gras 82851ffecc1SBen Gras int addnwstr(const wchar_t *, int); 82951ffecc1SBen Gras int addwstr(const wchar_t *); 83051ffecc1SBen Gras int mvaddnwstr(int, int x, const wchar_t *, int); 83151ffecc1SBen Gras int mvaddwstr(int, int x, const wchar_t *); 83251ffecc1SBen Gras int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int); 83351ffecc1SBen Gras int mvwaddwstr(WINDOW *, int, int, const wchar_t *); 83451ffecc1SBen Gras int waddnwstr(WINDOW *, const wchar_t *, int); 83551ffecc1SBen Gras int waddwstr(WINDOW *, const wchar_t *); 83651ffecc1SBen Gras 83751ffecc1SBen Gras int echo_wchar(const cchar_t *); 83851ffecc1SBen Gras int wecho_wchar(WINDOW *, const cchar_t *); 83951ffecc1SBen Gras int pecho_wchar(WINDOW *, const cchar_t *); 84051ffecc1SBen Gras 84151ffecc1SBen Gras /* insert */ 84251ffecc1SBen Gras int ins_wch(const cchar_t *); 84351ffecc1SBen Gras int wins_wch(WINDOW *, const cchar_t *); 84451ffecc1SBen Gras int mvins_wch(int, int, const cchar_t *); 84551ffecc1SBen Gras int mvwins_wch(WINDOW *, int, int, const cchar_t *); 84651ffecc1SBen Gras 84751ffecc1SBen Gras int ins_nwstr(const wchar_t *, int); 84851ffecc1SBen Gras int ins_wstr(const wchar_t *); 84951ffecc1SBen Gras int mvins_nwstr(int, int, const wchar_t *, int); 85051ffecc1SBen Gras int mvins_wstr(int, int, const wchar_t *); 85151ffecc1SBen Gras int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int); 85251ffecc1SBen Gras int mvwins_wstr(WINDOW *, int, int, const wchar_t *); 85351ffecc1SBen Gras int wins_nwstr(WINDOW *, const wchar_t *, int); 85451ffecc1SBen Gras int wins_wstr(WINDOW *, const wchar_t *); 85551ffecc1SBen Gras 85651ffecc1SBen Gras /* input */ 85751ffecc1SBen Gras int get_wch(wint_t *); 85851ffecc1SBen Gras int unget_wch(const wchar_t); 85951ffecc1SBen Gras int mvget_wch(int, int, wint_t *); 86051ffecc1SBen Gras int mvwget_wch(WINDOW *, int, int, wint_t *); 86151ffecc1SBen Gras int wget_wch(WINDOW *, wint_t *); 86251ffecc1SBen Gras 86351ffecc1SBen Gras int getn_wstr(wchar_t *, int); 86451ffecc1SBen Gras int get_wstr(wchar_t *); 86551ffecc1SBen Gras int mvgetn_wstr(int, int, wchar_t *, int); 86651ffecc1SBen Gras int mvget_wstr(int, int, wchar_t *); 86751ffecc1SBen Gras int mvwgetn_wstr(WINDOW *, int, int, wchar_t *, int); 86851ffecc1SBen Gras int mvwget_wstr(WINDOW *, int, int, wchar_t *); 86951ffecc1SBen Gras int wgetn_wstr(WINDOW *, wchar_t *, int); 87051ffecc1SBen Gras int wget_wstr(WINDOW *, wchar_t *); 87151ffecc1SBen Gras 87251ffecc1SBen Gras int in_wch(cchar_t *); 87351ffecc1SBen Gras int mvin_wch(int, int, cchar_t *); 87451ffecc1SBen Gras int mvwin_wch(WINDOW *, int, int, cchar_t *); 87551ffecc1SBen Gras int win_wch(WINDOW *, cchar_t *); 87651ffecc1SBen Gras 87751ffecc1SBen Gras int in_wchnstr(cchar_t *, int); 87851ffecc1SBen Gras int in_wchstr(cchar_t *); 87951ffecc1SBen Gras int mvin_wchnstr(int, int, cchar_t *, int); 88051ffecc1SBen Gras int mvin_wchstr(int, int, cchar_t *); 88151ffecc1SBen Gras int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int); 88251ffecc1SBen Gras int mvwin_wchstr(WINDOW *, int, int, cchar_t *); 88351ffecc1SBen Gras int win_wchnstr(WINDOW *, cchar_t *, int); 88451ffecc1SBen Gras int win_wchstr(WINDOW *, cchar_t *); 88551ffecc1SBen Gras 88651ffecc1SBen Gras int innwstr(wchar_t *, int); 88751ffecc1SBen Gras int inwstr(wchar_t *); 88851ffecc1SBen Gras int mvinnwstr(int, int, wchar_t *, int); 88951ffecc1SBen Gras int mvinwstr(int, int, wchar_t *); 89051ffecc1SBen Gras int mvwinnwstr(WINDOW *, int, int, wchar_t *, int); 89151ffecc1SBen Gras int mvwinwstr(WINDOW *, int, int, wchar_t *); 89251ffecc1SBen Gras int winnwstr(WINDOW *, wchar_t *, int); 89351ffecc1SBen Gras int winwstr(WINDOW *, wchar_t *); 89451ffecc1SBen Gras 89551ffecc1SBen Gras /* cchar handlgin */ 89651ffecc1SBen Gras int setcchar(cchar_t *, const wchar_t *, const attr_t, short, const void *); 89751ffecc1SBen Gras int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *); 89851ffecc1SBen Gras 89951ffecc1SBen Gras /* misc */ 90051ffecc1SBen Gras char *key_name( wchar_t ); 90151ffecc1SBen Gras int border_set(const cchar_t *, const cchar_t *, const cchar_t *, 90251ffecc1SBen Gras const cchar_t *, const cchar_t *, const cchar_t *, 90351ffecc1SBen Gras const cchar_t *, const cchar_t *); 90451ffecc1SBen Gras int wborder_set(WINDOW *, const cchar_t *, const cchar_t *, 90551ffecc1SBen Gras const cchar_t *, const cchar_t *, const cchar_t *, 90651ffecc1SBen Gras const cchar_t *, const cchar_t *, const cchar_t *); 90751ffecc1SBen Gras int box_set(WINDOW *, const cchar_t *, const cchar_t *); 90851ffecc1SBen Gras int erasewchar(wchar_t *); 90951ffecc1SBen Gras int killwchar(wchar_t *); 91051ffecc1SBen Gras int hline_set(const cchar_t *, int); 91151ffecc1SBen Gras int mvhline_set(int, int, const cchar_t *, int); 91251ffecc1SBen Gras int mvvline_set(int, int, const cchar_t *, int); 91351ffecc1SBen Gras int mvwhline_set(WINDOW *, int, int, const cchar_t *, int); 91451ffecc1SBen Gras int mvwvline_set(WINDOW *, int, int, const cchar_t *, int); 91551ffecc1SBen Gras int vline_set(const cchar_t *, int); 91651ffecc1SBen Gras int whline_set(WINDOW *, const cchar_t *, int); 91751ffecc1SBen Gras int wvline_set(WINDOW *, const cchar_t *, int); 91851ffecc1SBen Gras int bkgrnd(const cchar_t *); 91951ffecc1SBen Gras void bkgrndset(const cchar_t *); 92051ffecc1SBen Gras int getbkgrnd(cchar_t *); 92151ffecc1SBen Gras int wbkgrnd(WINDOW *, const cchar_t *); 92251ffecc1SBen Gras void wbkgrndset(WINDOW *, const cchar_t *); 92351ffecc1SBen Gras int wgetbkgrnd(WINDOW *, cchar_t *); 92451ffecc1SBen Gras 92551ffecc1SBen Gras /* Private functions that are needed for user programs prototypes. */ 92651ffecc1SBen Gras int __cputchar(int); 92751ffecc1SBen Gras int __waddbytes(WINDOW *, const char *, int, attr_t); 92851ffecc1SBen Gras #ifdef HAVE_WCHAR 92951ffecc1SBen Gras int __cputwchar( wchar_t ); 93051ffecc1SBen Gras #endif /* HAVE_WCHAR */ 93151ffecc1SBen Gras __END_DECLS 93251ffecc1SBen Gras 93351ffecc1SBen Gras #endif /* !_CURSES_H_ */ 934