ncurses is a library to write programs with a TUI, I used ncurses to implement MixerTUI and currently BSDDialog. The library is released under a permissive open source license so the FreeBSD Operating System provides it in BASE (and in PORTS devel/ncurses).
The following table lists the manuals linking to https://man.freebsd.org, the ncurses project provides also some tool but the table takes into account only the API.
Finally a curiosity, other libraries derive from the 4.4 BSD curses library, for example the NetBSD Operating System provides its implementation; to know more: en.wikipedia.org/wiki/Curses_(programming_library) and en.wikipedia.org/wiki/Ncurses.
| Manual | Short Description | Functions, macros, etc. | 
|---|---|---|
| curs_add_wch(3x) | Add a complex character and rendition to a curses window, then advance the cursor. | add_wch, wadd_wch, mvadd_wch, mvwadd_wch, echo_wchar, wecho_wchar | 
| curs_add_wchstr(3x) | Add an array of complex characters (and attributes) to a curses window. | add_wchstr, add_wchnstr, wadd_wchstr, wadd_wchnstr, mvadd_wchstr, mvadd_wchnstr, mvwadd_wchstr, mvwadd_wchnstr | 
| curs_addch(3x) | Add a character (with attributes) to a curses window, then advance the cursor. | addch, waddch, mvaddch, mvwaddch, echochar, wechochar | 
| curs_addchstr(3x) | Add a string of characters (and attributes) to a curses window. | addchstr, addchnstr, waddchstr, waddchnstr, mvaddchstr, mvaddchnstr, mvwaddchstr, mvwaddchnstr | 
| curs_addstr(3x) | Add a string of characters to a curses window and advance cursor. | addstr, addnstr, waddstr, waddnstr, mvaddstr, mvaddnstr, mvwaddstr, mvwaddnstr | 
| curs_addwstr(3x) | Add a string of wide characters to a curses window and advance cursor. | addwstr, addnwstr, waddwstr, waddnwstr, mvaddwstr, mvaddnwstr, mvwaddwstr, mvwaddnwstr | 
| curs_attr(3x) | Curses character and window attribute control routines. | attr_get, wattr_get, attr_set, wattr_set, attr_off, wattr_off, attr_on, wattr_on, attroff, wattroff, attron, wattron, attrset, wattrset, chgat, wchgat, mvchgat, mvwchgat, color_set, wcolor_set, standend, wstandend, standout, wstandout | 
| curs_beep(3x) | Curses bell and screen flash routines. | beep flash | 
| curs_bkgd(3x) | Curses window background manipulation routines. | bkgdset wbkgdset, bkgd wbkgd, getbkgd | 
| curs_bkgrnd(3x) | Curses window complex background manipulation routines. | bkgrnd, wbkgrnd, bkgrndset, wbkgrndset, getbkgrnd, wgetbkgrnd | 
| curs_border(3x) | Create curses borders, horizontal and vertical lines. | border, wborder, box, hline, whline, vline, wvline, mvhline, mvwhline, mvvline, mvwvline | 
| curs_border_set(3x) | Create curses borders or lines using complex characters and renditions. | border_set, wborder_set, box_set, hline_set, whline_set, mvhline_set, mvwhline_set, vline_set, wvline_set, mvvline_set, mvwvline_set | 
| curs_clear(3x) | Clear all or part of a curses window. | erase, werase, clear, wclear, clrtobot, wclrtobot, clrtoeol, wclrtoeol | 
| curs_color(3x) | Curses color manipulation routines. | start_color, has_colors, can_change_color, init_pair, init_color, init_extended_pair, init_extended_color, color_content, pair_content, extended_color_content, extended_pair_content, reset_color_pairs, COLOR_PAIR, PAIR_NUMBER | 
| curs_delch(3x) | Delete character under the cursor in a curses window. | delch, wdelch, mvdelch, mvwdelch | 
| curs_deleteln(3x) | Delete and insert lines in a curses window. | deleteln, wdeleteln, insdelln, winsdelln, insertln, winsertln | 
| curs_extend(3x) | Miscellaneous curses extensions. | curses_version, use_extended_names | 
| curs_get_wch(3x) | Get (or push back) a wide character from curses terminal keyboard. | get_wch, wget_wch, mvget_wch, mvwget_wch, unget_wch | 
| curs_get_wstr(3x) | Get an array of wide characters from a curses terminal keyboard. | get_wstr, getn_wstr, wget_wstr, wgetn_wstr, mvget_wstr, mvgetn_wstr, mvwget_wstr, mvwgetn_wstr | 
| curs_getcchar(3x) | Get a wide character string and rendition from a cchar_t or set a cchar_t from a wide-character string. | getcchar, setcchar | 
| curs_getch(3x) | Get (or push back) characters from curses terminal keyboard. | getch, wgetch, mvgetch, mvwgetch, ungetch, has_key | 
| curs_getstr(3x) | Accept character strings from curses terminal keyboard. | getstr, getnstr, wgetstr, wgetnstr, mvgetstr, mvgetnstr, mvwgetstr, mvwgetnstr | 
| curs_getyx(3x) | Get curses cursor and window coordinates. | getyx, getparyx, getbegyx, getmaxyx | 
| curs_in_wch(3x) | Extract a complex character and rendition from a window. | in_wch, mvin_wch, mvwin_wch, win_wch | 
| curs_in_wchstr(3x) | Get an array of complex characters and renditions from a curses window. | in_wchstr, in_wchnstr, win_wchstr, win_wchnstr, mvin_wchstr, mvin_wchnstr, mvwin_wchstr, mvwin_wchnstr | 
| curs_inch(3x) | Get a character and attributes from a curses window. | inch, winch, mvinch, mvwinch | 
| curs_inchstr(3x) | Get a string of characters (and attributes) from a curses window. | inchstr, inchnstr, winchstr, winchnstr, mvinchstr, mvinchnstr, mvwinchstr, mvwinchnstr | 
| curs_initscr(3x) | Curses screen initialization and manipulation routines. | initscr, newterm, endwin, isendwin, set_term, delscreen | 
| curs_inopts(3x) | Curses input options. | cbreak, nocbreak, echo, noecho, halfdelay, intrflush, keypad, meta, nl, nonl, nodelay, notimeout, raw, noraw, qiflush, noqiflush, timeout, wtimeout, typeahead | 
| curs_ins_wch(3x) | Insert a complex character and rendition into a window. | ins_wch, mvins_wch, mvwins_wch, wins_wch | 
| curs_ins_wstr(3x) | Insert a wide-character string into a curses window. | ins_wstr, ins_nwstr, wins_wstr, wins_nwstr, mvins_wstr, mvins_nwstr, mvwins_wstr, mvwins_nwstr | 
| curs_insch(3x) | Insert a character before cursor in a curses window. | insch, winsch, mvinsch, mvwinsch | 
| curs_insstr(3x) | Insert string before cursor in a curses window. | insstr, insnstr, winsstr, winsnstr, mvinsstr, mvinsnstr, mvwinsstr, mvwinsnstr | 
| curs_instr(3x) | Get a string of characters from a curses window. | instr, innstr, winstr, winnstr, mvinstr, mvinnstr, mvwinstr, mvwinnstr | 
| curs_inwstr(3x) | Get a string of wchar_t characters from a curses window. | inwstr, innwstr, winwstr, winnwstr, mvinwstr, mvinnwstr, mvwinwstr, mvwinnwstr | 
| curs_kernel(3x) | Low-level curses routines. | def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode, resetty, savetty, getsyx, setsyx, ripoffline, curs_set, napms | 
| curs_legacy(3x) | Get curses cursor and window coordinates, attributes. | curs_legacy | 
| curs_memleaks(3x) | Curses memory-leak checking. | exit_curses, exit_terminfo | 
| curs_mouse(3x) | Mouse interface through curses. | has_mouse, getmouse ungetmouse, mousemask wenclose, mouse_trafo wmouse_trafo, mouseinterval | 
| curs_move(3x) | Move curses window cursor. | move, wmove | 
| curs_opaque(3x) | Curses window properties. | is_cleared, is_idlok, is_idcok, is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout, is_pad, is_scrollok, is_subwin, is_syncok, wgetdelay, wgetparent, wgetscrreg | 
| curs_outopts(3x) | Curses output options. | clearok, idlok, idcok, immedok, leaveok, setscrreg, wsetscrreg, scrollok | 
| curs_overlay(3x) | Overlay and manipulate overlapped curses windows. | overlay, overwrite, copywin | 
| curs_pad(3x) | Create and display curses pads. | newpad, subpad, prefresh, pnoutrefresh, pechochar, pecho_wchar | 
| curs_print(3x) | Ship binary data to printer. | mcprint | 
| curs_printw(3x) | Print formatted output in curses windows. | printw, wprintw, mvprintw, mvwprintw, vwprintw vw_printw | 
| curs_refresh(3x) | Refresh curses windows and lines. | doupdate, redrawwin, refresh, wnoutrefresh, wredrawln, wrefresh | 
| curs_scanw(3x) | Convert formatted input from a curses window. | scanw, wscanw, mvscanw, mvwscanw, vwscanw vw_scanw | 
| curs_scr_dump(3x) | Read (write) a curses screen from (to) a file. | scr_dump, scr_restore, scr_init, scr_set | 
| curs_scroll(3x) | Scroll a curses window. | scroll, scrl, wscrl | 
| curs_slk(3x) | Curses soft label routines. | slk_init, slk_set, slk_wset, slk_refresh, slk_noutrefresh, slk_label, slk_clear, slk_restore, slk_touch, slk_attron, slk_attrset, slk_attroff, slk_attr_on, slk_attr_set, slk_attr_off, slk_attr, slk_color, extended_slk_color | 
| curs_sp_funcs(3x) | Curses screen-pointer extension. | curs_sp_funcs | 
| curs_termattrs(3x) | Curses environment query routines. | baudrate, erasechar, erasewchar, has_ic, has_il, killchar, killwchar, longname, term_attrs, termattrs, termname | 
| curs_termcap(3x) | Curses emulation of termcap. | PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs | 
| curs_terminfo(3x) | Curses interfaces to terminfo database. | del_curterm, mvcur, putp, restartterm, set_curterm, setupterm, tigetflag, tigetnum, tigetstr, tiparm, tparm, tputs, vid_attr, vid_puts, vidattr, vidputs | 
| curs_threads(3x) | Curses thread support. | curs_threads | 
| curs_touch(3x) | Curses refresh control routines. | touchwin, touchline, untouchwin, wtouchln, is_linetouched, is_wintouched | 
| curs_trace(3x) | Curses debugging routines. | curses_trace, trace, _tracef, _traceattr, _traceattr2, _tracecchar_t, _tracecchar_t2, _tracechar, _tracechtype, _tracechtype2, _nc_tracebits, _tracedump, _tracemouse | 
| curs_util(3x) | Miscellaneous curses utility routines. | delay_output, filter, flushinp, getwin, key_name, keyname, nofilter, putwin, unctrl, use_env, use_tioctl, wunctrl | 
| curs_variables(3x) | Curses global variables. | COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES, TABSIZE, curscr, newscr, stdscr | 
| curs_window(3x) | Create curses windows. | newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin, wsyncup, syncok, wcursyncup, wsyncdown | 
| default_colors(3x) | Use terminal’s default colors. | use_default_colors, assume_default_colors | 
| define_key(3x) | Define a keycode. | define_key | 
| form(3x) | Curses extension for programming forms. | form | 
| form_cursor(3x) | Position a form window cursor. | pos_form_cursor | 
| form_data(3x) | Test for off-screen data in given forms. | data_ahead, data_behind | 
| form_driver(3x) | Command-processing loop of the form system. | form_driver, form_driver_w | 
| form_field(3x) | Make and break connections between fields and forms. | form_field | 
| form_field_attributes(3x) | Color and attribute control for form fields. | form_field_attributes | 
| form_field_buffer(3x) | Field buffer control. | form_field_buffer | 
| form_field_info(3x) | Retrieve field characteristics. | dynamic_field_info, field_info | 
| form_field_just(3x) | Retrieve field characteristics. | set_field_just, field_just | 
| form_field_new(3x) | Create and destroy form fields. | new_field, dup_field, link_field, free_field | 
| form_field_opts(3x) | Set and get field options. | set_field_opts, field_opts_on, field_opts_off, field_opts | 
| form_field_userptr(3x) | Associate application data with a form field. | set_field_userptr, field_userptr | 
| form_field_validation(3x) | Data type validation for fields. | form_field_validation | 
| form_fieldtype(3x) | Define validation-field types. | form_fieldtype | 
| form_hook(3x) | Set hooks for automatic invocation by applications. | form_hook | 
| form_new(3x) | Create and destroy forms. | new_form, free_form | 
| form_new_page(3x) | Form pagination functions. | set_new_page, new_page | 
| form_opts(3x) | Set and get form options. | set_form_opts, form_opts_on, form_opts_off, form_opts | 
| form_page(3x) | Set and get form page number. | form_page | 
| form_post(3x) | Write or erase forms from associated subwindows. | post_form, unpost_form | 
| form_requestname(3x) | Handle printable form request names. | form_request_by_name, form_request_name | 
| form_userptr(3x) | Associate application data with a form item. | set_form_userptr, form_userptr | 
| form_variables(3x) | Form system global variables. | TYPE_ALNUM, TYPE_ALPHA, TYPE_ENUM, TYPE_INTEGER, TYPE_IPV4, TYPE_NUMERIC, TYPE_REGEXP | 
| form_win(3x) | Make and break form window and subwindow associations. | form_win | 
| key_defined(3x) | Check if a keycode is defined. | key_defined | 
| keybound(3x) | Return definition of keycode. | keybound | 
| keyok(3x) | Enable or disable a keycode. | keyok | 
| legacy_coding(3x) | Override locale-encoding checks. | use_legacy_coding | 
| menu(3x) | Curses extension for programming menus. | menu | 
| menu_attributes(3x) | Color and attribute control for menus. | menu_back, menu_fore, menu_grey, menu_pad, set_menu_back, set_menu_fore, set_menu_grey, set_menu_pad | 
| menu_cursor(3x) | Position a menu’s cursor. | pos_menu_cursor | 
| menu_driver(3x) | Command-processing loop of the menu system. | menu_driver | 
| menu_format(3x) | Set and get menu sizes. | set_menu_format, menu_format | 
| menu_hook(3x) | Set hooks for automatic invocation by applications. | menu_hook | 
| menu_items(3x) | Make and break connections between items and menus. | set_menu_items, menu_items, item_count | 
| menu_mark(3x) | Get and set the menu mark string. | set_menu_mark, menu_mark | 
| menu_new(3x) | Create and destroy menus. | new_menu, free_menu | 
| menu_opts(3x) | Set and get menu options. | set_menu_opts, menu_opts_on, menu_opts_off, menu_opts | 
| menu_pattern(3x) | Set and get a menu’s pattern buffer. | set_menu_pattern, menu_pattern | 
| menu_post(3x) | Write or erase menus from associated subwindows. | post_menu, unpost_menu | 
| menu_requestname(3x) | Handle printable menu request names. | menu_request_by_name, menu_request_name | 
| menu_spacing(3x) | Set and get spacing between menu items.. | set_menu_spacing, menu_spacing | 
| menu_userptr(3x) | Associate application data with a menu item. | set_menu_userptr, menu_userptr | 
| menu_win(3x) | Make and break menu window and subwindow associations. | menu_win | 
| mitem_current(3x) | Set and get current_menu_item. | mitem_current | 
| mitem_name(3x) | Get menu item name and description fields. | item_name, item_description | 
| mitem_new(3x) | Create and destroy menu items. | new_item, free_item | 
| mitem_opts(3x) | Set and get menu item options. | set_item_opts, item_opts_on, item_opts_off, item_opts | 
| mitem_userptr(3x) | Associate application data with a menu item. | set_item_userptr, item_userptr | 
| mitem_value(3x) | Set and get menu item values. | set_item_value, item_value | 
| mitem_visible(3x) | Check visibility of a menu item. | mitem_visible | 
| ncurses(3x) | Crt screen handling and optimization package. | ncurses | 
| new_pair(3x) | New curses color-pair functions. | alloc_pair, find_pair, free_pair | 
| panel(3x) | Panel stack extension for curses. | panel | 
| resizeterm(3x) | Change the curses terminal size. | is_term_resized, resize_term, resizeterm | 
| term_variables(3x) | Curses terminfo global variables. | SP, acs_map, boolcodes, boolfnames, boolnames, cur_term, numcodes, numfnames, numnames, strcodes, strfnames, strnames, ttytype | 
| wresize(3x) | Resize a curses window. | wresize |