2 .\"***************************************************************************
3 .\" Copyright 2018-2023,2024 Thomas E. Dickey *
4 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. *
6 .\" Permission is hereby granted, free of charge, to any person obtaining a *
7 .\" copy of this software and associated documentation files (the *
8 .\" "Software"), to deal in the Software without restriction, including *
9 .\" without limitation the rights to use, copy, modify, merge, publish, *
10 .\" distribute, distribute with modifications, sublicense, and/or sell *
11 .\" copies of the Software, and to permit persons to whom the Software is *
12 .\" furnished to do so, subject to the following conditions: *
14 .\" The above copyright notice and this permission notice shall be included *
15 .\" in all copies or substantial portions of the Software. *
17 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
18 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
19 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
20 .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
21 .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
22 .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
23 .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
25 .\" Except as contained in this notice, the name(s) of the above copyright *
26 .\" holders shall not be used in advertising or otherwise to promote the *
27 .\" sale, use or other dealings in this Software without prior written *
29 .\"***************************************************************************
31 .\" $Id: ncurses.3x,v 1.219 2024/05/25 20:57:45 tom Exp $
32 .TH ncurses 3X 2024-05-25 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
49 .\" Add supplementary paragraph tag on its own line after TP.
50 .\" Adapted from TQ (which would produce mandoc warnings).
59 character-cell terminal interface with optimized output
62 \fB#include <curses.h>
65 The \*(``new curses\*('' library offers the programmer a
66 terminal-independent means of reading keyboard and mouse input and
67 updating character-cell terminals with output optimized to minimize
73 System V Release 4 Unix (\*(``SVr4\*('')
76 the development of which ceased in the 1990s.
77 This document describes
79 version @NCURSES_MAJOR@.@NCURSES_MINOR@
80 (patch @NCURSES_PATCH@).
83 permits control of the terminal screen's contents;
84 abstraction and subdivision thereof with
88 acquisition of keyboard and mouse events;
89 control of terminal input and output options;
90 selection of color and rendering attributes
91 (such as bold or underline);
92 the definition and use of
97 terminal capability database;
100 compatibility interface;
101 and an abstraction of the system's API for manipulating the terminal
102 (such as \fI\%termios\fP(3)).
105 implements the interface described by X/Open Curses Issue\ 7.
106 In many behavioral details not standardized by X/Open,
110 library of SVr4 and provides numerous useful extensions.
113 man pages employ several sections to clarify matters of usage and
114 interoperability with other
118 \*(``NOTES\*('' describes issues and caveats of which any user of the
121 such as limitations on the size of an underlying integral type or the
122 availability of a preprocessor macro exclusive of a function definition
123 (which prevents its address from being taken).
124 This section also describes implementation details that will be
125 significant to the programmer but which are not standardized.
127 \*(``EXTENSIONS\*('' presents
129 innovations beyond the X/Open Curses standard and/or the SVr4
134 to indicate that they cannot be implemented solely by using the library
136 but require access to the library's internal state.
138 \*(``PORTABILITY\*('' discusses matters
139 (beyond the exercise of extensions)
140 that should be considered when writing to a
143 or for multiple implementations.
145 \*(``HISTORY\*('' examines points of detail in
149 implementations over the decades of their development,
150 particularly where precedent or inertia have frustrated better design
153 where such inertia has been overcome).
157 application must be linked with the library;
160 option to your compiler or linker.
161 A debugging version of the library may be available;
165 (Your system integrator may have installed these libraries such that you
173 library generates trace logs
176 in the current directory)
180 See section \*(``ALTERNATE CONFIGURATIONS\*('' below.
181 .SS "Application Structure"
184 application uses information from the system locale;
185 \fI\%setlocale\fP(3) prepares it for
191 setlocale(LC_ALL, "");
195 If the locale is not thus initialized,
196 the library assumes that characters are printable as in ISO\ 8859-1,
197 to work with certain legacy programs.
198 You should initialize the locale;
199 do not expect consistent behavior from the library when the locale has
202 \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X)
203 must be called to initialize
205 before use of any functions that deal with windows and screens.
207 To get character-at-a-time input without echoing\(emmost interactive,
208 screen-oriented programs want this\(emuse the following sequence.
212 initscr(); cbreak(); noecho();
216 Most applications would perform further setup as follows.
221 keypad(stdscr, TRUE);
227 program then often enters an event loop of some sort.
228 Call \fB\%endwin\fP(3X) before exiting.
232 library abstracts the terminal screen by representing all or part of it
238 is a rectangular grid of character cells,
239 addressed by row and column coordinates
242 with the upper left corner as (0, 0).
245 the same size as the terminal screen,
247 Create others with \fB\%newwin\fP(3X).
251 library does not manage overlapping windows
255 to manage one screen-filling window,
256 or tile the screen into non-overlapping windows and not use
259 Mixing the two approaches will result in unpredictable and undesired
262 Functions permit manipulation of a window and the
264 identifying the cell within it at which the next output operation will
267 the most basic are \fB\%move\fP(3X) and \fB\%addch\fP(3X):
268 these place the cursor and write a character to
272 Frequent changes to the terminal screen can cause unpleasant flicker or
273 inefficient use of the communication channel to the device,
274 so as a rule the library does not update it automatically.
278 functions to accumulate a set of desired updates that make sense to
280 call \fB\%refresh\fP(3X) to tell the library to make the user's screen
281 look like \fBstdscr\fP.
283 .\" X/Open Curses Issue 7 assumes some optimization will be done, but
284 .\" does not mandate it in any way.
286 its output by computing a minimal volume of operations to mutate the
287 screen from its state at the previous refresh to the new one.
288 Effective optimization demands accurate information about the terminal
290 the management of such information is the province of the
291 \fB\%terminfo\fP(3X) API,
292 a feature of every standard
296 Special windows called
298 may also be manipulated.
299 These are not constrained to the size of the terminal screen and their
300 contents need not be completely displayed.
301 See \fB\%curs_pad\fP(3X).
303 Many terminals support configuration of character cell foreground and
304 background colors as well as
306 which cause characters to render in such modes as
310 See \fB\%curs_attr\fP(3X).
313 predefines constants for a small set of forms-drawing graphics
314 corresponding to the DEC Alternate Character Set (ACS),
315 a feature of VT100 and other terminals.
316 See \fB\%addch\fP(3X).
319 is implemented using the operating system's terminal driver;
320 key events are received not as scan codes but as byte sequences.
322 (alphanumeric and punctuation keys,
331 appears as a control character or a multibyte
332 .I "escape sequence."
334 can translate the latter into unique
336 See \fB\%keypad\fP(3X) and \fB\%getch\fP(3X).
339 provides reimplementations of the SVr4 \fBpanel\fP(3X), \fBform\fP(3X),
340 and \fBmenu\fP(3X) libraries;
341 they permit overlapping windows and ease construction of user interfaces
345 The selection of an appropriate value of
347 in the process environment is essential to correct
352 A well-configured system selects a correct
355 \fB\%tset\fP(1) may assist with troubleshooting exotic situations.
357 If you change the terminal type,
361 then run \fB\%tset\fP(1) or the
362 .RB \*(`` "@TPUT@ init" \*(''
364 See subsection \*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5).
366 If the environment variables
373 program is executing in a graphical windowing environment,
374 the information obtained thence overrides that obtained by
378 extension supports resizable terminals;
379 see \fB\%wresize\fP(3X).
381 If the environment variable
386 program checks first for a terminal type description in the location it
389 is useful for developing type descriptions or when write permission to
393 See section \*(``ENVIRONMENT\*('' below.
394 .SS "Naming Conventions"
396 offers many functions in variant forms using a regular set of
397 alternatives to the name of an elemental one.
398 Those prefixed with \*(``w\*('' require a
401 those with a \*(``mv\*('' prefix first perform cursor movement using
403 a \*(``mvw\*('' prefix indicates both.
404 The \*(``w\*('' function is typically the elemental one;
405 the removal of this prefix usually indicates operation on
408 Four functions prefixed with \*(``p\*('' require a pad argument.
410 In function synopses,
412 man pages apply the following names to parameters.
417 bf a \fIbool\fP (\fBTRUE\fP or \fBFALSE\fP)
418 c a \fIchar\fP or \fIint\fP
420 wc a \fIwchar_t\fP or \fIwint_t\fP
422 win pointer to a \fIWINDOW\fP
423 pad pointer to a \fIWINDOW\fP that is a pad
425 .SS "Wide and Non-wide Character Configurations"
426 This man page primarily surveys functions that appear in any
427 configuration of the library.
428 There are two common configurations;
429 see section \*(``ALTERNATE CONFIGURATIONS\*('' below.
430 .TP 10 \" "ncursesw" + 2n
432 is the library in its \*(``non-wide\*('' configuration,
433 handling only eight-bit characters.
434 It stores a character combined with attributes and a color pair in a
437 which is often an alias of
441 characters is similar to a C
446 string ends with an integral
452 Attributes and a color pair selection
453 (with no corresponding character)
454 can be stored in variables of
460 they are accessed via an integral bit mask.
468 is the library in its \*(``wide\*('' configuration,
469 which handles character encodings requiring a larger data type than
473 It adds about one third more calls using additional data types that
477 .RS 10 \" same as foregoing tag width
478 .TP 9 \" "cchar_t" + 2n
480 corresponds to the non-wide configuration's
482 It always a structure type,
483 because it stores more data than fit into a standard scalar type.
484 A character code may not be representable as a
486 and moreover more than one character may occupy a cell
487 (as with accent marks and other diacritics).
488 Each character is of type
490 a complex character contains one spacing character and zero or more
491 non-spacing characters
493 A string of complex characters ends with a
497 member is the null wide character.
498 Attributes and a color pair selection are stored in separate fields of
500 not combined into an integer as in
508 \fB\%setcchar\fP(3X) and \fB\%getcchar\fP(3X)
512 The wide library API of
514 depends on two data types standardized by ISO C95.
517 stores a wide character.
520 it may be an alias of
522 Depending on the character encoding,
523 a wide character may be
525 meaning that it occupies a character cell by itself and typically
526 accompanies cursor advancement,
529 meaning that it occupies the same cell as a spacing character,
530 is often regarded as a \*(``modifier\*('' of the base glyph with which
532 and typically does not advance the cursor.
541 character manipulation functions of ISO C and its constant
545 The wide library provides additional functions that complement those in
546 the non-wide library where the size of the underlying character type is
548 A somewhat regular naming convention relates many of the wide variants
549 to their non-wide counterparts;
550 where a non-wide function name contains \*(``ch\*('' or \*(``str\*('',
551 prefix it with \*(``_w\*('' to obtain the wide counterpart.
553 \fB\%waddch\fP becomes \fB\%wadd_wch\fP.
554 (Exceptions that add only \*(``w\*('' comprise
559 This convention is inapplicable to some non-wide function names,
560 so other transformations are used for the wide configuration:
561 the window background management function \*(``bkgd\*('' becomes
563 the window border-drawing and -clearing functions are suffixed with
565 and character attribute manipulation functions like
566 \*(``attron\*('' become \*(``attr_on\*(''.
568 .SS "Function Name Index"
569 The following table lists the
571 functions provided in the non-wide and wide APIs and the corresponding
572 man pages that describe them.
573 Those flagged with \*(``*\*(''
575 .IR \%ncurses "-specific,"
576 neither described by X/Open Curses nor present in SVr4.
581 \f(BIcurses\fP Function Name/Man Page
583 COLOR_PAIR/\fBcurs_color\fP(3X)
584 PAIR_NUMBER/\fBcurs_color\fP(3X)
585 add_wch/\fBcurs_add_wch\fP(3X)
586 add_wchnstr/\fBcurs_add_wchstr\fP(3X)
587 add_wchstr/\fBcurs_add_wchstr\fP(3X)
588 addch/\fBcurs_addch\fP(3X)
589 addchnstr/\fBcurs_addchstr\fP(3X)
590 addchstr/\fBcurs_addchstr\fP(3X)
591 addnstr/\fBcurs_addstr\fP(3X)
592 addnwstr/\fBcurs_addwstr\fP(3X)
593 addstr/\fBcurs_addstr\fP(3X)
594 addwstr/\fBcurs_addwstr\fP(3X)
595 alloc_pair/\fBnew_pair\fP(3X)*
596 assume_default_colors/\fBdefault_colors\fP(3X)*
597 attr_get/\fBcurs_attr\fP(3X)
598 attr_off/\fBcurs_attr\fP(3X)
599 attr_on/\fBcurs_attr\fP(3X)
600 attr_set/\fBcurs_attr\fP(3X)
601 attroff/\fBcurs_attr\fP(3X)
602 attron/\fBcurs_attr\fP(3X)
603 attrset/\fBcurs_attr\fP(3X)
604 baudrate/\fBcurs_termattrs\fP(3X)
605 beep/\fBcurs_beep\fP(3X)
606 bkgd/\fBcurs_bkgd\fP(3X)
607 bkgdset/\fBcurs_bkgd\fP(3X)
608 bkgrnd/\fBcurs_bkgrnd\fP(3X)
609 bkgrndset/\fBcurs_bkgrnd\fP(3X)
610 border/\fBcurs_border\fP(3X)
611 border_set/\fBcurs_border_set\fP(3X)
612 box/\fBcurs_border\fP(3X)
613 box_set/\fBcurs_border_set\fP(3X)
614 can_change_color/\fBcurs_color\fP(3X)
615 cbreak/\fBcurs_inopts\fP(3X)
616 chgat/\fBcurs_attr\fP(3X)
617 clear/\fBcurs_clear\fP(3X)
618 clearok/\fBcurs_outopts\fP(3X)
619 clrtobot/\fBcurs_clear\fP(3X)
620 clrtoeol/\fBcurs_clear\fP(3X)
621 color_content/\fBcurs_color\fP(3X)
622 color_set/\fBcurs_attr\fP(3X)
623 copywin/\fBcurs_overlay\fP(3X)
624 curs_set/\fBcurs_kernel\fP(3X)
625 curses_trace/\fBcurs_trace\fP(3X)*
626 curses_version/\fBcurs_extend\fP(3X)*
627 def_prog_mode/\fBcurs_kernel\fP(3X)
628 def_shell_mode/\fBcurs_kernel\fP(3X)
629 define_key/\fBdefine_key\fP(3X)*
630 del_curterm/\fBcurs_terminfo\fP(3X)
631 delay_output/\fBcurs_util\fP(3X)
632 delch/\fBcurs_delch\fP(3X)
633 deleteln/\fBcurs_deleteln\fP(3X)
634 delscreen/\fBcurs_initscr\fP(3X)
635 delwin/\fBcurs_window\fP(3X)
636 derwin/\fBcurs_window\fP(3X)
637 doupdate/\fBcurs_refresh\fP(3X)
638 dupwin/\fBcurs_window\fP(3X)
639 echo/\fBcurs_inopts\fP(3X)
640 echo_wchar/\fBcurs_add_wch\fP(3X)
641 echochar/\fBcurs_addch\fP(3X)
642 endwin/\fBcurs_initscr\fP(3X)
643 erase/\fBcurs_clear\fP(3X)
644 erasechar/\fBcurs_termattrs\fP(3X)
645 erasewchar/\fBcurs_termattrs\fP(3X)
646 exit_curses/\fBcurs_memleaks\fP(3X)*
647 exit_terminfo/\fBcurs_memleaks\fP(3X)*
648 extended_color_content/\fBcurs_color\fP(3X)*
649 extended_pair_content/\fBcurs_color\fP(3X)*
650 extended_slk_color/\fBcurs_slk\fP(3X)*
651 filter/\fBcurs_util\fP(3X)
652 find_pair/\fBnew_pair\fP(3X)*
653 flash/\fBcurs_beep\fP(3X)
654 flushinp/\fBcurs_util\fP(3X)
655 free_pair/\fBnew_pair\fP(3X)*
656 get_escdelay/\fBcurs_threads\fP(3X)*
657 get_wch/\fBcurs_get_wch\fP(3X)
658 get_wstr/\fBcurs_get_wstr\fP(3X)
659 getattrs/\fBcurs_attr\fP(3X)
660 getbegx/\fBcurs_legacy\fP(3X)*
661 getbegy/\fBcurs_legacy\fP(3X)*
662 getbegyx/\fBcurs_getyx\fP(3X)
663 getbkgd/\fBcurs_bkgd\fP(3X)
664 getbkgrnd/\fBcurs_bkgrnd\fP(3X)
665 getcchar/\fBcurs_getcchar\fP(3X)
666 getch/\fBcurs_getch\fP(3X)
667 getcurx/\fBcurs_legacy\fP(3X)*
668 getcury/\fBcurs_legacy\fP(3X)*
669 getmaxx/\fBcurs_legacy\fP(3X)*
670 getmaxy/\fBcurs_legacy\fP(3X)*
671 getmaxyx/\fBcurs_getyx\fP(3X)
672 getmouse/\fBcurs_mouse\fP(3X)*
673 getn_wstr/\fBcurs_get_wstr\fP(3X)
674 getnstr/\fBcurs_getstr\fP(3X)
675 getparx/\fBcurs_legacy\fP(3X)*
676 getpary/\fBcurs_legacy\fP(3X)*
677 getparyx/\fBcurs_getyx\fP(3X)
678 getstr/\fBcurs_getstr\fP(3X)
679 getsyx/\fBcurs_kernel\fP(3X)
680 getwin/\fBcurs_util\fP(3X)
681 getyx/\fBcurs_getyx\fP(3X)
682 halfdelay/\fBcurs_inopts\fP(3X)
683 has_colors/\fBcurs_color\fP(3X)
684 has_ic/\fBcurs_termattrs\fP(3X)
685 has_il/\fBcurs_termattrs\fP(3X)
686 has_key/\fBcurs_getch\fP(3X)*
687 has_mouse/\fBcurs_mouse\fP(3X)*
688 hline/\fBcurs_border\fP(3X)
689 hline_set/\fBcurs_border_set\fP(3X)
690 idcok/\fBcurs_outopts\fP(3X)
691 idlok/\fBcurs_outopts\fP(3X)
692 immedok/\fBcurs_outopts\fP(3X)
693 in_wch/\fBcurs_in_wch\fP(3X)
694 in_wchnstr/\fBcurs_in_wchstr\fP(3X)
695 in_wchstr/\fBcurs_in_wchstr\fP(3X)
696 inch/\fBcurs_inch\fP(3X)
697 inchnstr/\fBcurs_inchstr\fP(3X)
698 inchstr/\fBcurs_inchstr\fP(3X)
699 init_color/\fBcurs_color\fP(3X)
700 init_extended_color/\fBcurs_color\fP(3X)*
701 init_extended_pair/\fBcurs_color\fP(3X)*
702 init_pair/\fBcurs_color\fP(3X)
703 initscr/\fBcurs_initscr\fP(3X)
704 innstr/\fBcurs_instr\fP(3X)
705 innwstr/\fBcurs_inwstr\fP(3X)
706 ins_nwstr/\fBcurs_ins_wstr\fP(3X)
707 ins_wch/\fBcurs_ins_wch\fP(3X)
708 ins_wstr/\fBcurs_ins_wstr\fP(3X)
709 insch/\fBcurs_insch\fP(3X)
710 insdelln/\fBcurs_deleteln\fP(3X)
711 insertln/\fBcurs_deleteln\fP(3X)
712 insnstr/\fBcurs_insstr\fP(3X)
713 insstr/\fBcurs_insstr\fP(3X)
714 instr/\fBcurs_instr\fP(3X)
715 intrflush/\fBcurs_inopts\fP(3X)
716 inwstr/\fBcurs_inwstr\fP(3X)
717 is_cbreak/\fBcurs_inopts\fP(3X)*
718 is_cleared/\fBcurs_opaque\fP(3X)*
719 is_echo/\fBcurs_inopts\fP(3X)*
720 is_idcok/\fBcurs_opaque\fP(3X)*
721 is_idlok/\fBcurs_opaque\fP(3X)*
722 is_immedok/\fBcurs_opaque\fP(3X)*
723 is_keypad/\fBcurs_opaque\fP(3X)*
724 is_leaveok/\fBcurs_opaque\fP(3X)*
725 is_linetouched/\fBcurs_touch\fP(3X)
726 is_nl/\fBcurs_inopts\fP(3X)*
727 is_nodelay/\fBcurs_opaque\fP(3X)*
728 is_notimeout/\fBcurs_opaque\fP(3X)*
729 is_pad/\fBcurs_opaque\fP(3X)*
730 is_raw/\fBcurs_inopts\fP(3X)*
731 is_scrollok/\fBcurs_opaque\fP(3X)*
732 is_subwin/\fBcurs_opaque\fP(3X)*
733 is_syncok/\fBcurs_opaque\fP(3X)*
734 is_term_resized/\fBresizeterm\fP(3X)*
735 is_wintouched/\fBcurs_touch\fP(3X)
736 isendwin/\fBcurs_initscr\fP(3X)
737 key_defined/\fBkey_defined\fP(3X)*
738 key_name/\fBcurs_util\fP(3X)
739 keybound/\fBkeybound\fP(3X)*
740 keyname/\fBcurs_util\fP(3X)
741 keyok/\fBkeyok\fP(3X)*
742 keypad/\fBcurs_inopts\fP(3X)
743 killchar/\fBcurs_termattrs\fP(3X)
744 killwchar/\fBcurs_termattrs\fP(3X)
745 leaveok/\fBcurs_outopts\fP(3X)
746 longname/\fBcurs_termattrs\fP(3X)
747 mcprint/\fBcurs_print\fP(3X)*
748 meta/\fBcurs_inopts\fP(3X)
749 mouse_trafo/\fBcurs_mouse\fP(3X)*
750 mouseinterval/\fBcurs_mouse\fP(3X)*
751 mousemask/\fBcurs_mouse\fP(3X)*
752 move/\fBcurs_move\fP(3X)
753 mvadd_wch/\fBcurs_add_wch\fP(3X)
754 mvadd_wchnstr/\fBcurs_add_wchstr\fP(3X)
755 mvadd_wchstr/\fBcurs_add_wchstr\fP(3X)
756 mvaddch/\fBcurs_addch\fP(3X)
757 mvaddchnstr/\fBcurs_addchstr\fP(3X)
758 mvaddchstr/\fBcurs_addchstr\fP(3X)
759 mvaddnstr/\fBcurs_addstr\fP(3X)
760 mvaddnwstr/\fBcurs_addwstr\fP(3X)
761 mvaddstr/\fBcurs_addstr\fP(3X)
762 mvaddwstr/\fBcurs_addwstr\fP(3X)
763 mvchgat/\fBcurs_attr\fP(3X)
764 mvcur/\fBcurs_terminfo\fP(3X)
765 mvdelch/\fBcurs_delch\fP(3X)
766 mvderwin/\fBcurs_window\fP(3X)
767 mvget_wch/\fBcurs_get_wch\fP(3X)
768 mvget_wstr/\fBcurs_get_wstr\fP(3X)
769 mvgetch/\fBcurs_getch\fP(3X)
770 mvgetn_wstr/\fBcurs_get_wstr\fP(3X)
771 mvgetnstr/\fBcurs_getstr\fP(3X)
772 mvgetstr/\fBcurs_getstr\fP(3X)
773 mvhline/\fBcurs_border\fP(3X)
774 mvhline_set/\fBcurs_border_set\fP(3X)
775 mvin_wch/\fBcurs_in_wch\fP(3X)
776 mvin_wchnstr/\fBcurs_in_wchstr\fP(3X)
777 mvin_wchstr/\fBcurs_in_wchstr\fP(3X)
778 mvinch/\fBcurs_inch\fP(3X)
779 mvinchnstr/\fBcurs_inchstr\fP(3X)
780 mvinchstr/\fBcurs_inchstr\fP(3X)
781 mvinnstr/\fBcurs_instr\fP(3X)
782 mvinnwstr/\fBcurs_inwstr\fP(3X)
783 mvins_nwstr/\fBcurs_ins_wstr\fP(3X)
784 mvins_wch/\fBcurs_ins_wch\fP(3X)
785 mvins_wstr/\fBcurs_ins_wstr\fP(3X)
786 mvinsch/\fBcurs_insch\fP(3X)
787 mvinsnstr/\fBcurs_insstr\fP(3X)
788 mvinsstr/\fBcurs_insstr\fP(3X)
789 mvinstr/\fBcurs_instr\fP(3X)
790 mvinwstr/\fBcurs_inwstr\fP(3X)
791 mvprintw/\fBcurs_printw\fP(3X)
792 mvscanw/\fBcurs_scanw\fP(3X)
793 mvvline/\fBcurs_border\fP(3X)
794 mvvline_set/\fBcurs_border_set\fP(3X)
795 mvwadd_wch/\fBcurs_add_wch\fP(3X)
796 mvwadd_wchnstr/\fBcurs_add_wchstr\fP(3X)
797 mvwadd_wchstr/\fBcurs_add_wchstr\fP(3X)
798 mvwaddch/\fBcurs_addch\fP(3X)
799 mvwaddchnstr/\fBcurs_addchstr\fP(3X)
800 mvwaddchstr/\fBcurs_addchstr\fP(3X)
801 mvwaddnstr/\fBcurs_addstr\fP(3X)
802 mvwaddnwstr/\fBcurs_addwstr\fP(3X)
803 mvwaddstr/\fBcurs_addstr\fP(3X)
804 mvwaddwstr/\fBcurs_addwstr\fP(3X)
805 mvwchgat/\fBcurs_attr\fP(3X)
806 mvwdelch/\fBcurs_delch\fP(3X)
807 mvwget_wch/\fBcurs_get_wch\fP(3X)
808 mvwget_wstr/\fBcurs_get_wstr\fP(3X)
809 mvwgetch/\fBcurs_getch\fP(3X)
810 mvwgetn_wstr/\fBcurs_get_wstr\fP(3X)
811 mvwgetnstr/\fBcurs_getstr\fP(3X)
812 mvwgetstr/\fBcurs_getstr\fP(3X)
813 mvwhline/\fBcurs_border\fP(3X)
814 mvwhline_set/\fBcurs_border_set\fP(3X)
815 mvwin/\fBcurs_window\fP(3X)
816 mvwin_wch/\fBcurs_in_wch\fP(3X)
817 mvwin_wchnstr/\fBcurs_in_wchstr\fP(3X)
818 mvwin_wchstr/\fBcurs_in_wchstr\fP(3X)
819 mvwinch/\fBcurs_inch\fP(3X)
820 mvwinchnstr/\fBcurs_inchstr\fP(3X)
821 mvwinchstr/\fBcurs_inchstr\fP(3X)
822 mvwinnstr/\fBcurs_instr\fP(3X)
823 mvwinnwstr/\fBcurs_inwstr\fP(3X)
824 mvwins_nwstr/\fBcurs_ins_wstr\fP(3X)
825 mvwins_wch/\fBcurs_ins_wch\fP(3X)
826 mvwins_wstr/\fBcurs_ins_wstr\fP(3X)
827 mvwinsch/\fBcurs_insch\fP(3X)
828 mvwinsnstr/\fBcurs_insstr\fP(3X)
829 mvwinsstr/\fBcurs_insstr\fP(3X)
830 mvwinstr/\fBcurs_instr\fP(3X)
831 mvwinwstr/\fBcurs_inwstr\fP(3X)
832 mvwprintw/\fBcurs_printw\fP(3X)
833 mvwscanw/\fBcurs_scanw\fP(3X)
834 mvwvline/\fBcurs_border\fP(3X)
835 mvwvline_set/\fBcurs_border_set\fP(3X)
836 napms/\fBcurs_kernel\fP(3X)
837 newpad/\fBcurs_pad\fP(3X)
838 newterm/\fBcurs_initscr\fP(3X)
839 newwin/\fBcurs_window\fP(3X)
840 nl/\fBcurs_inopts\fP(3X)
841 nocbreak/\fBcurs_inopts\fP(3X)
842 nodelay/\fBcurs_inopts\fP(3X)
843 noecho/\fBcurs_inopts\fP(3X)
844 nofilter/\fBcurs_util\fP(3X)*
845 nonl/\fBcurs_inopts\fP(3X)
846 noqiflush/\fBcurs_inopts\fP(3X)
847 noraw/\fBcurs_inopts\fP(3X)
848 notimeout/\fBcurs_inopts\fP(3X)
849 overlay/\fBcurs_overlay\fP(3X)
850 overwrite/\fBcurs_overlay\fP(3X)
851 pair_content/\fBcurs_color\fP(3X)
852 pecho_wchar/\fBcurs_pad\fP(3X)
853 pechochar/\fBcurs_pad\fP(3X)
854 pnoutrefresh/\fBcurs_pad\fP(3X)
855 prefresh/\fBcurs_pad\fP(3X)
856 printw/\fBcurs_printw\fP(3X)
857 putp/\fBcurs_terminfo\fP(3X)
858 putwin/\fBcurs_util\fP(3X)
859 qiflush/\fBcurs_inopts\fP(3X)
860 raw/\fBcurs_inopts\fP(3X)
861 redrawwin/\fBcurs_refresh\fP(3X)
862 refresh/\fBcurs_refresh\fP(3X)
863 reset_color_pairs/\fBcurs_color\fP(3X)*
864 reset_prog_mode/\fBcurs_kernel\fP(3X)
865 reset_shell_mode/\fBcurs_kernel\fP(3X)
866 resetty/\fBcurs_kernel\fP(3X)
867 resize_term/\fBresizeterm\fP(3X)*
868 resizeterm/\fBresizeterm\fP(3X)*
869 restartterm/\fBcurs_terminfo\fP(3X)
870 ripoffline/\fBcurs_kernel\fP(3X)
871 savetty/\fBcurs_kernel\fP(3X)
872 scanw/\fBcurs_scanw\fP(3X)
873 scr_dump/\fBcurs_scr_dump\fP(3X)
874 scr_init/\fBcurs_scr_dump\fP(3X)
875 scr_restore/\fBcurs_scr_dump\fP(3X)
876 scr_set/\fBcurs_scr_dump\fP(3X)
877 scrl/\fBcurs_scroll\fP(3X)
878 scroll/\fBcurs_scroll\fP(3X)
879 scrollok/\fBcurs_outopts\fP(3X)
880 set_curterm/\fBcurs_terminfo\fP(3X)
881 set_escdelay/\fBcurs_threads\fP(3X)*
882 set_tabsize/\fBcurs_threads\fP(3X)*
883 set_term/\fBcurs_initscr\fP(3X)
884 setcchar/\fBcurs_getcchar\fP(3X)
885 setscrreg/\fBcurs_outopts\fP(3X)
886 setsyx/\fBcurs_kernel\fP(3X)
887 setupterm/\fBcurs_terminfo\fP(3X)
888 slk_attr/\fBcurs_slk\fP(3X)*
889 slk_attr_off/\fBcurs_slk\fP(3X)
890 slk_attr_on/\fBcurs_slk\fP(3X)
891 slk_attr_set/\fBcurs_slk\fP(3X)
892 slk_attroff/\fBcurs_slk\fP(3X)
893 slk_attron/\fBcurs_slk\fP(3X)
894 slk_attrset/\fBcurs_slk\fP(3X)
895 slk_clear/\fBcurs_slk\fP(3X)
896 slk_color/\fBcurs_slk\fP(3X)
897 slk_init/\fBcurs_slk\fP(3X)
898 slk_label/\fBcurs_slk\fP(3X)
899 slk_noutrefresh/\fBcurs_slk\fP(3X)
900 slk_refresh/\fBcurs_slk\fP(3X)
901 slk_restore/\fBcurs_slk\fP(3X)
902 slk_set/\fBcurs_slk\fP(3X)
903 slk_touch/\fBcurs_slk\fP(3X)
904 slk_wset/\fBcurs_slk\fP(3X)
905 standend/\fBcurs_attr\fP(3X)
906 standout/\fBcurs_attr\fP(3X)
907 start_color/\fBcurs_color\fP(3X)
908 subpad/\fBcurs_pad\fP(3X)
909 subwin/\fBcurs_window\fP(3X)
910 syncok/\fBcurs_window\fP(3X)
911 term_attrs/\fBcurs_termattrs\fP(3X)
912 termattrs/\fBcurs_termattrs\fP(3X)
913 termname/\fBcurs_termattrs\fP(3X)
914 tgetent/\fBcurs_termcap\fP(3X)
915 tgetflag/\fBcurs_termcap\fP(3X)
916 tgetnum/\fBcurs_termcap\fP(3X)
917 tgetstr/\fBcurs_termcap\fP(3X)
918 tgoto/\fBcurs_termcap\fP(3X)
919 tigetflag/\fBcurs_terminfo\fP(3X)
920 tigetnum/\fBcurs_terminfo\fP(3X)
921 tigetstr/\fBcurs_terminfo\fP(3X)
922 timeout/\fBcurs_inopts\fP(3X)
923 tiparm/\fBcurs_terminfo\fP(3X)
924 tiparm_s/\fBcurs_terminfo\fP(3X)*
925 tiscan_s/\fBcurs_terminfo\fP(3X)*
926 touchline/\fBcurs_touch\fP(3X)
927 touchwin/\fBcurs_touch\fP(3X)
928 tparm/\fBcurs_terminfo\fP(3X)
929 tputs/\fBcurs_termcap\fP(3X)
930 tputs/\fBcurs_terminfo\fP(3X)
931 trace/\fBcurs_trace\fP(3X)*
932 typeahead/\fBcurs_inopts\fP(3X)
933 unctrl/\fBcurs_util\fP(3X)
934 unget_wch/\fBcurs_get_wch\fP(3X)
935 ungetch/\fBcurs_getch\fP(3X)
936 ungetmouse/\fBcurs_mouse\fP(3X)*
937 untouchwin/\fBcurs_touch\fP(3X)
938 use_default_colors/\fBdefault_colors\fP(3X)*
939 use_env/\fBcurs_util\fP(3X)
940 use_extended_names/\fBcurs_extend\fP(3X)*
941 use_legacy_coding/\fBlegacy_coding\fP(3X)*
942 use_screen/\fBcurs_threads\fP(3X)*
943 use_tioctl/\fBcurs_util\fP(3X)*
944 use_window/\fBcurs_threads\fP(3X)*
945 vid_attr/\fBcurs_terminfo\fP(3X)
946 vid_puts/\fBcurs_terminfo\fP(3X)
947 vidattr/\fBcurs_terminfo\fP(3X)
948 vidputs/\fBcurs_terminfo\fP(3X)
949 vline/\fBcurs_border\fP(3X)
950 vline_set/\fBcurs_border_set\fP(3X)
951 vw_printw/\fBcurs_printw\fP(3X)
952 vw_scanw/\fBcurs_scanw\fP(3X)
953 vwprintw/\fBcurs_printw\fP(3X)
954 vwscanw/\fBcurs_scanw\fP(3X)
955 wadd_wch/\fBcurs_add_wch\fP(3X)
956 wadd_wchnstr/\fBcurs_add_wchstr\fP(3X)
957 wadd_wchstr/\fBcurs_add_wchstr\fP(3X)
958 waddch/\fBcurs_addch\fP(3X)
959 waddchnstr/\fBcurs_addchstr\fP(3X)
960 waddchstr/\fBcurs_addchstr\fP(3X)
961 waddnstr/\fBcurs_addstr\fP(3X)
962 waddnwstr/\fBcurs_addwstr\fP(3X)
963 waddstr/\fBcurs_addstr\fP(3X)
964 waddwstr/\fBcurs_addwstr\fP(3X)
965 wattr_get/\fBcurs_attr\fP(3X)
966 wattr_off/\fBcurs_attr\fP(3X)
967 wattr_on/\fBcurs_attr\fP(3X)
968 wattr_set/\fBcurs_attr\fP(3X)
969 wattroff/\fBcurs_attr\fP(3X)
970 wattron/\fBcurs_attr\fP(3X)
971 wattrset/\fBcurs_attr\fP(3X)
972 wbkgd/\fBcurs_bkgd\fP(3X)
973 wbkgdset/\fBcurs_bkgd\fP(3X)
974 wbkgrnd/\fBcurs_bkgrnd\fP(3X)
975 wbkgrndset/\fBcurs_bkgrnd\fP(3X)
976 wborder/\fBcurs_border\fP(3X)
977 wborder_set/\fBcurs_border_set\fP(3X)
978 wchgat/\fBcurs_attr\fP(3X)
979 wclear/\fBcurs_clear\fP(3X)
980 wclrtobot/\fBcurs_clear\fP(3X)
981 wclrtoeol/\fBcurs_clear\fP(3X)
982 wcolor_set/\fBcurs_attr\fP(3X)
983 wcursyncup/\fBcurs_window\fP(3X)
984 wdelch/\fBcurs_delch\fP(3X)
985 wdeleteln/\fBcurs_deleteln\fP(3X)
986 wecho_wchar/\fBcurs_add_wch\fP(3X)
987 wechochar/\fBcurs_addch\fP(3X)
988 wenclose/\fBcurs_mouse\fP(3X)*
989 werase/\fBcurs_clear\fP(3X)
990 wget_wch/\fBcurs_get_wch\fP(3X)
991 wget_wstr/\fBcurs_get_wstr\fP(3X)
992 wgetbkgrnd/\fBcurs_bkgrnd\fP(3X)
993 wgetch/\fBcurs_getch\fP(3X)
994 wgetdelay/\fBcurs_opaque\fP(3X)*
995 wgetn_wstr/\fBcurs_get_wstr\fP(3X)
996 wgetnstr/\fBcurs_getstr\fP(3X)
997 wgetparent/\fBcurs_opaque\fP(3X)*
998 wgetscrreg/\fBcurs_opaque\fP(3X)*
999 wgetstr/\fBcurs_getstr\fP(3X)
1000 whline/\fBcurs_border\fP(3X)
1001 whline_set/\fBcurs_border_set\fP(3X)
1002 win_wch/\fBcurs_in_wch\fP(3X)
1003 win_wchnstr/\fBcurs_in_wchstr\fP(3X)
1004 win_wchstr/\fBcurs_in_wchstr\fP(3X)
1005 winch/\fBcurs_inch\fP(3X)
1006 winchnstr/\fBcurs_inchstr\fP(3X)
1007 winchstr/\fBcurs_inchstr\fP(3X)
1008 winnstr/\fBcurs_instr\fP(3X)
1009 winnwstr/\fBcurs_inwstr\fP(3X)
1010 wins_nwstr/\fBcurs_ins_wstr\fP(3X)
1011 wins_wch/\fBcurs_ins_wch\fP(3X)
1012 wins_wstr/\fBcurs_ins_wstr\fP(3X)
1013 winsch/\fBcurs_insch\fP(3X)
1014 winsdelln/\fBcurs_deleteln\fP(3X)
1015 winsertln/\fBcurs_deleteln\fP(3X)
1016 winsnstr/\fBcurs_insstr\fP(3X)
1017 winsstr/\fBcurs_insstr\fP(3X)
1018 winstr/\fBcurs_instr\fP(3X)
1019 winwstr/\fBcurs_inwstr\fP(3X)
1020 wmouse_trafo/\fBcurs_mouse\fP(3X)*
1021 wmove/\fBcurs_move\fP(3X)
1022 wnoutrefresh/\fBcurs_refresh\fP(3X)
1023 wprintw/\fBcurs_printw\fP(3X)
1024 wredrawln/\fBcurs_refresh\fP(3X)
1025 wrefresh/\fBcurs_refresh\fP(3X)
1026 wresize/\fBwresize\fP(3X)*
1027 wscanw/\fBcurs_scanw\fP(3X)
1028 wscrl/\fBcurs_scroll\fP(3X)
1029 wsetscrreg/\fBcurs_outopts\fP(3X)
1030 wstandend/\fBcurs_attr\fP(3X)
1031 wstandout/\fBcurs_attr\fP(3X)
1032 wsyncdown/\fBcurs_window\fP(3X)
1033 wsyncup/\fBcurs_window\fP(3X)
1034 wtimeout/\fBcurs_inopts\fP(3X)
1035 wtouchln/\fBcurs_touch\fP(3X)
1036 wunctrl/\fBcurs_util\fP(3X)
1037 wvline/\fBcurs_border\fP(3X)
1038 wvline_set/\fBcurs_border_set\fP(3X)
1042 .I "screen-pointer extension"
1043 adds additional functions corresponding to many of the above,
1044 each with an \*(``_sp\*('' suffix;
1045 see \fBcurs_sp_funcs\fP(3X).
1047 The availability of some extensions is configurable when
1050 see sections \*(``ALTERNATE CONFIGURATIONS\*('' and \*(``EXTENSIONS\*(''
1053 Unless otherwise noted,
1054 functions that return integers return the constants
1059 see \fB\%curs_variables\fP(3X).
1060 Functions that return pointers return
1065 treats a null pointer passed as a function parameter as a failure.
1066 Functions prefixed with \*(``mv\*('' first perform cursor movement and
1067 fail if the position
1070 is outside the window boundaries.
1072 The following symbols from the process environment customize the
1076 The library may be configured to disregard the variables
1078 .IR \%TERMINFO_DIRS ,
1082 if the user is the superuser (root),
1083 or the application uses \fI\%setuid\fP(2) or \fI\%setgid\fP(2).
1084 .SS "\fIBAUDRATE\fP"
1085 The debugging library checks this variable when the application has
1086 redirected output to a file.
1087 Its integral value is used for the baud rate.
1088 If that value is absent or invalid,
1091 This feature allows developers to construct repeatable test cases
1092 that take into account optimization decisions that depend on baud rate.
1093 .SS "\fICC\fP (command character)"
1096 .B \%command_character
1098 capability value of loaded
1100 entries changes to the value of this variable.
1103 entries provide this feature.
1105 Because this name is also used in development environments to represent
1106 the C compiler's name,
1108 ignores its value if it is not one character in length.
1110 This variable specifies the width of the screen in characters.
1111 Applications running in a windowing environment usually are able to
1112 obtain the width of the window in which they are executing.
1115 is not defined and the terminal's screen size is not available from the
1118 uses the size specified by the
1121 capability of the terminal type's entry in the
1126 It is important that your application use the correct screen size.
1127 Automatic detection thereof is not always possible because an
1128 application may be running on a host that does not honor NAWS
1129 (Negotiations About Window Size)
1130 or as a different user ID than the owner of the terminal device file.
1135 overrides the library's use of the screen size obtained from the
1142 variables may be specified independently.
1144 enforces an upper limit of 512 on each when reading the value.
1145 This property is useful to circumvent misfeatures of legacy terminal
1147 \fI\%xterm\fP(1) descriptions specifying 65 lines were once notorious.
1155 descriptions of terminal emulators.
1157 \fBuse_env\fP(3X) can disable use of the process environment
1158 in determining the screen size.
1159 \fBuse_tioctl\fP(3X) can update
1163 to match the screen size obtained from system calls or the terminal
1165 .SS "\fIESCDELAY\fP"
1168 to distinguish the ESC character resulting from a user's press of the
1169 \*(``Escape\*('' key on the input device from one beginning an
1170 .I "escape sequence"
1171 (as commonly produced by function keys),
1172 it waits after receiving the escape character to see if further
1173 characters are available on the input stream within a short interval.
1176 stores this interval in milliseconds.
1177 The default value of 1000
1179 is adequate for most uses.
1180 This environment variable overrides it;
1182 enforces an upper limit of 30,000
1184 when reading the value.
1186 The most common instance where you may wish to change this value
1187 is to work with a remote host over a slow communication channel.
1188 If the host running a
1190 application does not receive the characters of an escape sequence in a
1192 the library can interpret them as multiple key stroke events.
1194 \fI\%xterm\fP(1) mouse events are a form of escape sequence;
1196 if your application makes heavy use of multiple-clicking,
1197 you may wish to lengthen the default value because the delay applies
1198 to the composite multi-click event as well as the individual clicks.
1200 Portable applications should not rely upon the presence of
1203 but setting the environment variable rather than the global variable
1204 does not create problems when compiling an application.
1206 If \fB\%keypad\fP(3X) is disabled for the
1208 window receiving input,
1209 a program must disambiguate escape sequences itself.
1212 may read and write auxiliary terminal descriptions in
1216 files in the user's home directory.
1220 specifies the height of the screen in characters.
1223 capability and code is
1225 See the description of the
1228 .SS "\fIMOUSE_BUTTONS_123\fP"
1229 (OS/2 EMX port only)
1230 OS/2 numbers a three-button mouse inconsistently with other platforms,
1231 such that 1 is the left button,
1234 This variable customizes the mouse button numbering.
1235 Its value must be three digits 1\-3 in any order.
1238 assumes a numbering of \*(``132\*(''.
1239 .SS "\fINCURSES_ASSUMED_COLORS\fP"
1241 this variable overrides the
1243 library's compiled-in assumption that the terminal's default colors are
1245 see \fB\%default_colors\fP(3X).
1246 Set the foreground and background color values with this environment
1247 variable by assigning it two integer values separated by a comma,
1248 indicating foregound and background color numbers,
1254 not to assume anything about the colors,
1255 use a value of \*(``\-1,\-1\*(''.
1256 To make the default color scheme green on black,
1259 accepts integral values from \-1 up to the value of the
1264 .SS "\fINCURSES_CONSOLE2\fP"
1268 .\" https://www.hanselman.com/blog/console2-a-better-windows-command-prompt
1269 program defectively handles the Microsoft Console API call
1270 .IR \%Create\%Console\%Screen\%Buffer .
1271 Applications that use it will hang.
1273 it is possible to simulate the action of this call by mapping
1275 explicitly saving and restoring the original screen contents.
1276 Setting the environment variable
1278 has the same effect.
1279 .SS "\fINCURSES_GPM_TERMS\fP"
1283 is configured to use the GPM interface,
1284 this variable may list one or more terminal type names,
1285 delimited by vertical bars
1294 An empty value disables the GPM interface,
1297 built-in support for \fI\%xterm\fP(1) mouse protocols instead.
1298 If the variable is absent,
1300 attempts to open GPM if
1302 contains \*(``linux\*(''.
1303 .SS "\fINCURSES_NO_HARD_TABS\fP"
1305 may use tab characters in cursor movement optimization.
1307 your terminal driver may not handle them properly.
1308 Set this environment variable to any value to disable the feature.
1309 You can also adjust your \fI\%stty\fP(1) settings to avoid the problem.
1310 .SS "\fINCURSES_NO_MAGIC_COOKIE\fP"
1311 Many terminals store video attributes as a property of a character cell,
1316 some recorded changes in video attributes as data that logically
1318 character cells on the display,
1319 switching attributes on or off,
1320 similarly to tags in a markup language;
1321 these are termed \*(``magic cookies\*('',
1322 and must be subsequently overprinted.
1325 entry for your terminal type does not adequately describe its handling
1327 set this variable to any value to instruct
1329 to disable attributes entirely.
1330 .SS "\fINCURSES_NO_PADDING\fP"
1331 Most terminal type descriptions in the
1333 database detail hardware devices.
1336 applications in terminal emulator programs that run in a windowing
1338 These programs can duplicate all of the important features of a hardware
1340 but often lack their limitations.
1341 Chief among these absent drawbacks is the problem of data flow
1344 limiting the speed of communication to what the hardware could handle.
1345 Unless a hardware terminal is interfaced into a terminal concentrator
1346 (which does flow control),
1347 an application must manage flow itself to prevent overruns and data
1350 A solution that comes at no hardware cost is for an application to pause
1351 after directing a terminal to execute an operation that it performs
1353 such as clearing the display.
1354 Many terminal type descriptions,
1355 including that for the VT100,
1356 embed delay specifications in capabilities.
1357 You may wish to use these terminal descriptions without paying the
1358 performance penalty.
1360 .I \%NCURSES_NO_PADDING
1361 to any value to disable all but mandatory padding.
1362 Mandatory padding is used by such terminal capabilities as
1365 .SS "\fINCURSES_NO_SETBUF\fP"
1367 Prior to internal changes developed in
1370 (patches 20120825 through 20130126),
1371 the library used \fI\%setbuf\fP(3) to enable fully buffered output when
1372 initializing the terminal.
1376 to increase performance.
1377 For testing purposes,
1380 and of certain applications,
1381 this feature was made optional.
1382 Setting this variable disabled output buffering,
1383 leaving the output stream in the original
1384 (usually line-buffered)
1389 performs its own buffering and does not require this workaround;
1390 it does not modify the buffering of the standard output stream.
1391 This approach makes signal handling,
1394 A drawback is that certain unconventional programs mixed
1395 \fI\%stdio\fP(3) calls with
1398 got the behavior they expected.
1399 This is no longer the case;
1401 does not write to the standard output file descriptor through a
1406 low-level API calls such as \fB\%putp\fP(3X) still use the
1407 standard output stream.
1410 calls such as \fB\%printw\fP(3X) do not.
1411 .SS "\fINCURSES_NO_UTF8_ACS\fP"
1416 environment variable for special cases where VT100 forms-drawing
1418 (and the corresponding alternate character set
1421 are known to be unsupported by terminal types that otherwise claim VT100
1424 when running in a UTF-8 locale,
1425 the Linux virtual console device and the GNU \fI\%screen\fP(1)
1426 program ignore them.
1427 Set this variable to a nonzero value to instruct
1429 that the terminal's ACS support is broken;
1430 the library then outputs Unicode code points that correspond to the
1435 to disable the special check for terminal type names matching
1436 \*(``linux\*('' or \*(``screen\*('',
1439 to assume that the ACS feature works if the terminal type description
1442 As an alternative to use of this variable,
1444 checks for an extended
1446 numeric capability \fBU8\fP
1447 that can be compiled using
1448 .RB \*(`` "@TIC@ \-x" \*(''.
1453 # linux console, if patched to provide working
1454 # VT100 shift\-in/shift\-out, with corresponding font.
1455 linux\-vt100|linux console with VT100 line\-graphics,
1458 # uxterm with vt100Graphics resource set to false
1459 xterm\-utf8|xterm relying on UTF\-8 line\-graphics,
1464 The two-character name \*(``U8\*('' was chosen to permit its use via
1468 .SS "\fINCURSES_TRACE\fP"
1471 (in its debugging configuration)
1472 checks for this variable's presence.
1473 If defined with an integral value,
1474 the library calls \fB\%curses_trace\fP(3X) with that value as the
1479 variable denotes the terminal type.
1481 though many are similar.
1482 It is commonly set by terminal emulators to help applications find a
1483 workable terminal description.
1484 Some choose a popular approximation such as \*(``ansi\*('',
1485 \*(``vt100\*('', or \*(``xterm\*('' rather than an exact fit to their
1488 an application will have problems with that approach;
1490 a key stroke may not operate correctly,
1491 or produce no effect but seeming garbage characters on the screen.
1495 has no effect on hardware operation;
1496 it affects the way applications communicate with the terminal.
1499 (\fIxterm\fP(1) being a rare exception),
1500 terminal emulators that allow you to specify
1502 as a parameter or configuration value do not change their behavior to
1510 it checks for a terminal type description in
1514 format is not available.
1515 Setting this variable directs
1520 .IR \%/etc/termcap ;
1525 should contain either a terminal description
1526 (with newlines stripped out),
1527 or a file name indicating where the information required by the
1529 environment variable is stored.
1530 .SS "\fITERMINFO\fP"
1532 can be configured to read terminal type description databases in various
1533 locations using different formats.
1534 This variable overrides the default location.
1538 format are normally stored in a directory tree using subdirectories
1539 named by the common first letters of the terminal types named therein.
1540 This is the scheme used in System\ V.
1544 is configured to use hashed databases,
1547 may name its location,
1549 .IR \%/usr/share/terminfo.db ,
1551 .IR \%/usr/share/terminfo/ .
1553 The hashed database uses less disk space and is a little faster than the
1556 some applications assume the existence of the directory tree,
1557 and read it directly
1558 rather than using the
1567 this variable may contain the location of a
1573 begins with \*(``hex:\*('' or \*(``b64:\*('',
1575 uses the remainder of the value as a compiled
1578 You might produce the base64 format using \fB\%infocmp\fP(1M).
1582 TERMINFO=$(infocmp \-0 \-Q2 \-q)
1587 The compiled description is used only if it corresponds to the terminal
1597 to a terminal database.
1598 The search path is as follows.
1600 the last terminal database to which the running
1605 the location specified by the
1607 environment variable
1611 locations listed in the
1613 environment variable
1615 .if !'@TERMINFO_DIRS@'no default value' .as td @TERMINFO_DIRS@
1616 .if !'@TERMINFO@\*(td'' \{\
1618 location(s) configured and compiled into
1623 .I \%@TERMINFO_DIRS@
1625 .if !'@TERMINFO'' .if !'\*(td'@TERMINFO@' \{\
1631 .SS "\fITERMINFO_DIRS\fP"
1632 This variable specifies a list of locations,
1637 searches for the terminal type descriptions described by
1640 The list items are separated by colons on Unix
1641 and semicolons on OS/2 EMX.
1644 lacks a corresponding feature;
1649 .SS "\fITERMPATH\fP"
1652 does not hold a terminal type description or file name,
1655 checks the contents of
1657 a list of locations,
1660 in which it searches for
1662 terminal type descriptions.
1663 The list items are separated by colons on Unix
1664 and semicolons on OS/2 EMX.
1670 are unset or invalid,
1672 searches for the files
1673 .IR \%/etc/termcap ,
1674 .IR \%/usr/share/misc/termcap ,
1676 .IR \%$HOME/.termcap ,
1678 .SH "ALTERNATE CONFIGURATIONS"
1681 configurations are possible,
1682 determined by the options given to the
1684 script when building the library.
1685 Run the script with the
1687 option to peruse them all.
1688 A few are of particular significance to the application developer
1692 .B \-\-disable\-overwrite
1693 The standard C preprocessor inclusion for the
1695 library is as follows.
1700 .\" The dummy character prevents undesired rewriting of the next line on
1701 .\" installation of the man page.
1702 \fB#\&include <curses.h>\fP
1706 This option is used to avoid file name conflicts between
1710 installation on the system.
1713 is installed disabling overwrite,
1714 it puts its header files in a subdirectory.
1719 .\" The dummy character prevents undesired rewriting of the next line on
1720 .\" installation of the man page.
1721 \fB#\&include <ncurses/curses.h>\fP
1725 Installation also omits a symbolic link that would cause the compiler's
1727 option to link object files with
1729 instead of the system
1733 The directory used by this configuration of
1735 is shown in section \*(``SYNOPSIS\*('' above.
1738 .B \-\-enable\-widec
1739 The configure script renames the library and
1740 (if the \fB\-\-disable\-overwrite\fP option is used)
1741 puts the header files in a different subdirectory.
1742 All of the library names have a \*(``w\*('' appended to them,
1760 You must also enable the wide-character features in the header file
1761 when compiling for the wide-character library
1762 to use the extended (wide-character) functions.
1763 The symbol which enables these features has changed
1764 since X/Open Curses, Issue 4:
1766 Originally, the wide-character feature required the symbol
1767 \fB_XOPEN_SOURCE_EXTENDED\fP
1768 but that was only valid for XPG4 (1996).
1770 Later, that was deemed conflicting with \fB_XOPEN_SOURCE\fP defined to 500.
1773 none of the features in this implementation require a \fB_XOPEN_SOURCE\fP
1774 feature greater than 600.
1775 However, X/Open Curses, Issue 7 (2009) recommends defining it to 700.
1777 Alternatively, you can enable the feature by defining \fBNCURSES_WIDECHAR\fP
1778 with the caveat that some other header file than \fBcurses.h\fP
1779 may require a specific value for \fB_XOPEN_SOURCE\fP
1780 (or a system-specific symbol).
1782 The \fI\%curses.h\fP header file installed for the wide-character
1783 library is designed to be compatible with the non-wide library's header.
1784 Only the size of the \fI\%WINDOW\fP structure differs;
1785 few applications require more than pointers to \fI\%WINDOW\fPs.
1787 If the headers are installed allowing overwrite,
1788 the wide-character library's headers should be installed last,
1789 to allow applications to be built using either library
1790 from the same set of headers.
1793 .B \-\-with\-pthread
1794 The configure script renames the library.
1795 All of the library names have a \*(``t\*('' appended to them
1796 (before any \*(``w\*('' added by \fB\-\-enable\-widec\fP).
1798 The global variables such as \fBLINES\fP are replaced by macros to
1799 allow read-only access.
1800 At the same time, setter-functions are provided to set these values.
1801 Some applications (very few) may require changes to work with this convention.
1809 .B \-\-with\-profile
1810 The shared and normal (static) library names differ by their suffixes,
1811 e.g., \fBlibncurses.so\fP and \fBlibncurses.a\fP.
1812 The debug and profiling libraries add a \*(``_g\*(''
1813 and a \*(``_p\*('' to the root names respectively,
1814 e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP.
1816 .B \-\-with\-termlib
1817 Low-level functions which do not depend upon whether the library
1818 supports wide-characters, are provided in the tinfo library.
1820 By doing this, it is possible to share the tinfo library between
1821 wide/normal configurations as well as reduce the size of the library
1822 when only low-level functions are needed.
1824 Those functions are described in these pages:
1827 \fB\%curs_extend\fP(3X) \- miscellaneous \fIcurses\fP extensions
1829 \fB\%curs_inopts\fP(3X) \- \fIcurses\fP input options
1831 \fB\%curs_kernel\fP(3X) \- low-level \fIcurses\fP routines
1833 \fB\%curs_termattrs\fP(3X) \- \fIcurses\fP environment query routines
1835 \fB\%curs_termcap\fP(3X) \- \fIcurses\fP emulation of \fItermcap\fP
1837 \fB\%curs_terminfo\fP(3X) \- \fIcurses\fP interface to \fIterminfo\fP
1840 \fB\%curs_util\fP(3X) \- miscellaneous \fIcurses\fP utility routines
1844 The \fBtrace\fP function normally resides in the debug library,
1845 but it is sometimes useful to configure this in the shared library.
1846 Configure scripts should check for the function's existence rather
1847 than assuming it is always in the debug library.
1851 tab stop initialization database
1854 compiled terminal capability database
1856 X/Open Curses permits most functions it specifies to be made available
1858 .\" See X/Open Curses Issue 4, Version 2, pp. 227-234.
1859 .\" See X/Open Curses Issue 7, pp. 311-318.
1860 \fI\%ncurses\fP does so
1862 for functions that return values via their parameters,
1864 to support obsolete features,
1868 those that move the cursor before another operation),
1871 in a few special cases.
1873 If the standard output file descriptor of an
1875 program is redirected to something that is not a terminal device,
1876 the library writes screen updates to the standard error file descriptor.
1877 This was an undocumented feature of SVr3
1880 See subsection \*(``Header Files\*('' below regarding symbols exposed by
1881 inclusion of \fI\%curses.h\fP.
1884 enables an application to capture mouse events on certain terminals,
1885 including \fI\%xterm\fP(1);
1886 see \fB\%curs_mouse\fP(3X).
1889 provides a means of responding to window resizing events,
1890 as when running in a GUI terminal emulator application such as
1892 see \fB\%resizeterm\fP(3X) and \fB\%wresize\fP(3X).
1895 allows an application to query the terminal for the presence of a wide
1896 variety of special keys;
1897 see \fB\%has_key\fP(3X).
1900 extends the fixed set of function key capabilities specified by X/Open
1901 Curses by allowing the application programmer to define additional key
1904 \fB\%define_key\fP(3X),
1905 \fB\%key_defined\fP(3X),
1906 \fB\%keybound\fP(3X),
1911 can exploit the capabilities of terminals implementing ISO\ 6429/ECMA-48
1912 SGR\ 39 and SGR\ 49 sequences,
1913 which allow an application to reset the terminal to its original
1914 foreground and background colors.
1915 From a user's perspective,
1916 the application is able to draw colored text on a background whose color
1917 is set independently,
1918 providing better control over color contrasts.
1919 See \fB\%default_colors\fP(3X).
1923 application can eschew knowledge of
1925 structure internals,
1926 instead using accessor functions such as
1927 \fB\%is_scrollok\fP(3X).
1930 enables an application to direct its output to a printer attached to the
1932 see \fB\%curs_print\fP(3X).
1935 offers \fB\%slk_attr\fP(3X) as a counterpart of \fB\%attr_get\fP(3X) for
1936 soft-label key lines,
1937 and \fB\%extended_slk_color\fP(3X) as a form of \fB\%slk_color\fP(3X)
1938 that can gather color information from them when many colors are
1942 permits modification of \fB\%unctrl\fP(3X)'s behavior;
1943 see \fB\%use_legacy_coding\fP(3X).
1945 Rudimentary support for multi-threaded applications may be available;
1946 see \fBcurs_threads\fP(3X).
1948 Functions that ease the management of multiple screens can be exposed;
1949 see \fBcurs_sp_funcs\fP(3X).
1951 To aid applications to debug their memory usage,
1953 optionally offers functions to more aggressively free memory it
1954 dynamically allocates itself;
1955 see \fBcurs_memleaks\fP(3X).
1957 The library facilitates auditing and troubleshooting of its behavior;
1958 see \fBcurs_trace\fP(3X).
1964 causes it to fall back to reading
1966 if the terminal setup code cannot find a
1968 entry corresponding to
1970 Use of this feature is not recommended,
1971 as it essentially includes an entire
1976 at a cost in memory usage and application launch latency.
1984 Individual man pages indicate where this is the case.
1986 X/Open Curses defines two levels of conformance,
1987 \*(``base\*('' and \*(``enhanced\*(''.
1988 The latter includes several additional features,
1989 such as wide-character and color support.
1991 intends base-level conformance with X/Open Curses,
1992 and supports all features of its enhanced level
1993 except the \fB\%untic\fP utility.
1995 Differences between X/Open Curses and
1997 are documented in the \*(``PORTABILITY\*('' sections of applicable man
1999 .SS "Error Checking"
2000 In many cases, X/Open Curses is vague about error conditions,
2001 omitting some of the SVr4 documentation.
2003 Unlike other implementations,
2005 checks pointer parameters,
2009 to ensure that they are not null.
2010 This is done primarily to guard against programmer error.
2011 The standard interface does not provide a way for the library
2012 to tell an application which of several possible errors occurred.
2013 An application that relies on
2015 to check its function parameters for validity limits its portability and
2017 .SS "Padding Differences"
2021 delays embedded in the
2024 .B \%carriage_return
2035 activated corresponding delay bits in the Unix terminal driver.
2037 performs all padding by sending NUL bytes to the device.
2038 This method is slightly more expensive,
2039 but narrows the interface to the Unix kernel significantly and
2040 correspondingly increases the package's portability.
2044 itself includes the header files
2049 X/Open Curses has more to say,
2054 may make visible all symbols from the headers
2062 but does not finish the story.
2063 A more complete account follows.
2078 from an internal header file
2081 \*(``ext\*('' abbreviated \*(``externs\*(''.
2083 The implementations of
2087 used undocumented internal functions of the standard I/O library
2102 because its function prototype employs the
2115 X/Open Curses specifies all three of these functions.
2119 and X/Open Curses do not require the developer to include
2123 Both document use of
2134 X/Open Curses and SVr4
2136 are inconsistent with respect to
2139 As noted in \fBcurs_util\fP(3X),
2147 X/Open Curses's comments about
2151 may refer to HP-UX and AIX.
2181 X/Open Curses says that
2186 but does not require it to do so.
2188 Some programs use functions declared in both
2192 and must include both header files in the same module.
2193 Very old versions of AIX
2195 required inclusion of
2200 The header files supplied by
2202 include the standard library headers required for its declarations,
2205 own header files can be included in any order.
2206 But for portability,
2212 X/Open Curses says \*(``may make visible\*('' because including a header
2213 file does not necessarily make visible all of the symbols in it
2221 .B may \" bold to contrast with preceding italic
2224 if the proper symbol is defined,
2227 is configured for wide-character support.
2232 .B may \" bold for consistency in this paragraph
2233 be made visible depending on the value of the
2237 X/Open Curses mandates an application's inclusion of one standard C
2238 library header in a special case:
2242 to prototype the functions
2246 (as well as the obsolete
2250 Each of these takes a variadic argument list,
2254 like that of \fI\%printf\fP(3).
2259 the two obsolete functions,
2260 and X/Open Curses the others.
2264 provided for the possibility that an application might include either
2268 These represented contrasting approaches to handling variadic
2270 The older interface,
2273 .I char \" V7, 32V, System III, 3BSD
2274 for variadic functions'
2278 the list acquired its own standard data type,
2282 empowering the compiler to check the types of a function call's actual
2283 parameters against the formal ones declared in its prototype.
2285 No conforming implementations of X/Open Curses require an application
2290 because they either have allowed for a special type,
2296 themselves to provide a portable interface.
2305 \fB\%curs_variables\fP(3X),
2306 \fB\%terminfo\fP(5),
2307 \fB\%user_caps\fP(5)