17db96d56Sopenharmony_ci:mod:`curses` --- Terminal handling for character-cell displays
27db96d56Sopenharmony_ci===============================================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: curses
57db96d56Sopenharmony_ci   :synopsis: An interface to the curses library, providing portable
67db96d56Sopenharmony_ci              terminal handling.
77db96d56Sopenharmony_ci   :platform: Unix
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
107db96d56Sopenharmony_ci.. sectionauthor:: Eric Raymond <esr@thyrsus.com>
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci**Source code:** :source:`Lib/curses`
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci--------------
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ciThe :mod:`curses` module provides an interface to the curses library, the
177db96d56Sopenharmony_cide-facto standard for portable advanced terminal handling.
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ciWhile curses is most widely used in the Unix environment, versions are available
207db96d56Sopenharmony_cifor Windows, DOS, and possibly other systems as well.  This extension module is
217db96d56Sopenharmony_cidesigned to match the API of ncurses, an open-source curses library hosted on
227db96d56Sopenharmony_ciLinux and the BSD variants of Unix.
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci.. note::
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci   Whenever the documentation mentions a *character* it can be specified
277db96d56Sopenharmony_ci   as an integer, a one-character Unicode string or a one-byte byte string.
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci   Whenever the documentation mentions a *character string* it can be specified
307db96d56Sopenharmony_ci   as a Unicode string or a byte string.
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ci.. seealso::
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci   Module :mod:`curses.ascii`
357db96d56Sopenharmony_ci      Utilities for working with ASCII characters, regardless of your locale settings.
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci   Module :mod:`curses.panel`
387db96d56Sopenharmony_ci      A panel stack extension that adds depth to  curses windows.
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci   Module :mod:`curses.textpad`
417db96d56Sopenharmony_ci      Editable text widget for curses supporting  :program:`Emacs`\ -like bindings.
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci   :ref:`curses-howto`
447db96d56Sopenharmony_ci      Tutorial material on using curses with Python, by Andrew Kuchling and Eric
457db96d56Sopenharmony_ci      Raymond.
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci   The :source:`Tools/demo/` directory in the Python source distribution contains
487db96d56Sopenharmony_ci   some example programs using the curses bindings provided by this module.
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ci.. _curses-functions:
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ciFunctions
547db96d56Sopenharmony_ci---------
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ciThe module :mod:`curses` defines the following exception:
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci.. exception:: error
607db96d56Sopenharmony_ci
617db96d56Sopenharmony_ci   Exception raised when a curses library function returns an error.
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci.. note::
647db96d56Sopenharmony_ci
657db96d56Sopenharmony_ci   Whenever *x* or *y* arguments to a function or a method are optional, they
667db96d56Sopenharmony_ci   default to the current cursor location. Whenever *attr* is optional, it defaults
677db96d56Sopenharmony_ci   to :const:`A_NORMAL`.
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ciThe module :mod:`curses` defines the following functions:
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci.. function:: baudrate()
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ci   Return the output speed of the terminal in bits per second.  On software
757db96d56Sopenharmony_ci   terminal emulators it will have a fixed high value. Included for historical
767db96d56Sopenharmony_ci   reasons; in former times, it was used to  write output loops for time delays and
777db96d56Sopenharmony_ci   occasionally to change interfaces depending on the line speed.
787db96d56Sopenharmony_ci
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_ci.. function:: beep()
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci   Emit a short attention sound.
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci.. function:: can_change_color()
867db96d56Sopenharmony_ci
877db96d56Sopenharmony_ci   Return ``True`` or ``False``, depending on whether the programmer can change the colors
887db96d56Sopenharmony_ci   displayed by the terminal.
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci.. function:: cbreak()
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ci   Enter cbreak mode.  In cbreak mode (sometimes called "rare" mode) normal tty
947db96d56Sopenharmony_ci   line buffering is turned off and characters are available to be read one by one.
957db96d56Sopenharmony_ci   However, unlike raw mode, special characters (interrupt, quit, suspend, and flow
967db96d56Sopenharmony_ci   control) retain their effects on the tty driver and calling program.  Calling
977db96d56Sopenharmony_ci   first :func:`raw` then :func:`cbreak` leaves the terminal in cbreak mode.
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ci.. function:: color_content(color_number)
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ci   Return the intensity of the red, green, and blue (RGB) components in the color
1037db96d56Sopenharmony_ci   *color_number*, which must be between ``0`` and ``COLORS - 1``.  Return a 3-tuple,
1047db96d56Sopenharmony_ci   containing the R,G,B values for the given color, which will be between
1057db96d56Sopenharmony_ci   ``0`` (no component) and ``1000`` (maximum amount of component).
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_ci.. function:: color_pair(pair_number)
1097db96d56Sopenharmony_ci
1107db96d56Sopenharmony_ci   Return the attribute value for displaying text in the specified color pair.
1117db96d56Sopenharmony_ci   Only the first 256 color pairs are supported. This
1127db96d56Sopenharmony_ci   attribute value can be combined with :const:`A_STANDOUT`, :const:`A_REVERSE`,
1137db96d56Sopenharmony_ci   and the other :const:`!A_\*` attributes.  :func:`pair_number` is the counterpart
1147db96d56Sopenharmony_ci   to this function.
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci.. function:: curs_set(visibility)
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci   Set the cursor state.  *visibility* can be set to ``0``, ``1``, or ``2``, for invisible,
1207db96d56Sopenharmony_ci   normal, or very visible.  If the terminal supports the visibility requested, return the
1217db96d56Sopenharmony_ci   previous cursor state; otherwise raise an exception.  On many
1227db96d56Sopenharmony_ci   terminals, the "visible" mode is an underline cursor and the "very visible" mode
1237db96d56Sopenharmony_ci   is a block cursor.
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci.. function:: def_prog_mode()
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci   Save the current terminal mode as the "program" mode, the mode when the running
1297db96d56Sopenharmony_ci   program is using curses.  (Its counterpart is the "shell" mode, for when the
1307db96d56Sopenharmony_ci   program is not in curses.)  Subsequent calls to :func:`reset_prog_mode` will
1317db96d56Sopenharmony_ci   restore this mode.
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ci.. function:: def_shell_mode()
1357db96d56Sopenharmony_ci
1367db96d56Sopenharmony_ci   Save the current terminal mode as the "shell" mode, the mode when the running
1377db96d56Sopenharmony_ci   program is not using curses.  (Its counterpart is the "program" mode, when the
1387db96d56Sopenharmony_ci   program is using curses capabilities.) Subsequent calls to
1397db96d56Sopenharmony_ci   :func:`reset_shell_mode` will restore this mode.
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci.. function:: delay_output(ms)
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ci   Insert an *ms* millisecond pause in output.
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_ci.. function:: doupdate()
1487db96d56Sopenharmony_ci
1497db96d56Sopenharmony_ci   Update the physical screen.  The curses library keeps two data structures, one
1507db96d56Sopenharmony_ci   representing the current physical screen contents and a virtual screen
1517db96d56Sopenharmony_ci   representing the desired next state.  The :func:`doupdate` ground updates the
1527db96d56Sopenharmony_ci   physical screen to match the virtual screen.
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci   The virtual screen may be updated by a :meth:`~window.noutrefresh` call after write
1557db96d56Sopenharmony_ci   operations such as :meth:`~window.addstr` have been performed on a window.  The normal
1567db96d56Sopenharmony_ci   :meth:`~window.refresh` call is simply :meth:`!noutrefresh` followed by :func:`!doupdate`;
1577db96d56Sopenharmony_ci   if you have to update multiple windows, you can speed performance and perhaps
1587db96d56Sopenharmony_ci   reduce screen flicker by issuing :meth:`!noutrefresh` calls on all windows,
1597db96d56Sopenharmony_ci   followed by a single :func:`!doupdate`.
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ci.. function:: echo()
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ci   Enter echo mode.  In echo mode, each character input is echoed to the screen as
1657db96d56Sopenharmony_ci   it is entered.
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ci.. function:: endwin()
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_ci   De-initialize the library, and return terminal to normal status.
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ci
1737db96d56Sopenharmony_ci.. function:: erasechar()
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ci   Return the user's current erase character as a one-byte bytes object.  Under Unix operating systems this
1767db96d56Sopenharmony_ci   is a property of the controlling tty of the curses program, and is not set by
1777db96d56Sopenharmony_ci   the curses library itself.
1787db96d56Sopenharmony_ci
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci.. function:: filter()
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci   The :func:`.filter` routine, if used, must be called before :func:`initscr` is
1837db96d56Sopenharmony_ci   called.  The effect is that, during those calls, :envvar:`LINES` is set to ``1``; the
1847db96d56Sopenharmony_ci   capabilities ``clear``, ``cup``, ``cud``, ``cud1``, ``cuu1``, ``cuu``, ``vpa`` are disabled; and the ``home``
1857db96d56Sopenharmony_ci   string is set to the value of ``cr``. The effect is that the cursor is confined to
1867db96d56Sopenharmony_ci   the current line, and so are screen updates.  This may be used for enabling
1877db96d56Sopenharmony_ci   character-at-a-time  line editing without touching the rest of the screen.
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_ci.. function:: flash()
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci   Flash the screen.  That is, change it to reverse-video and then change it back
1937db96d56Sopenharmony_ci   in a short interval.  Some people prefer such as 'visible bell' to the audible
1947db96d56Sopenharmony_ci   attention signal produced by :func:`beep`.
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_ci
1977db96d56Sopenharmony_ci.. function:: flushinp()
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_ci   Flush all input buffers.  This throws away any  typeahead  that  has been typed
2007db96d56Sopenharmony_ci   by the user and has not yet been processed by the program.
2017db96d56Sopenharmony_ci
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci.. function:: getmouse()
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_ci   After :meth:`~window.getch` returns :const:`KEY_MOUSE` to signal a mouse event, this
2067db96d56Sopenharmony_ci   method should be called to retrieve the queued mouse event, represented as a
2077db96d56Sopenharmony_ci   5-tuple ``(id, x, y, z, bstate)``. *id* is an ID value used to distinguish
2087db96d56Sopenharmony_ci   multiple devices, and *x*, *y*, *z* are the event's coordinates.  (*z* is
2097db96d56Sopenharmony_ci   currently unused.)  *bstate* is an integer value whose bits will be set to
2107db96d56Sopenharmony_ci   indicate the type of event, and will be the bitwise OR of one or more of the
2117db96d56Sopenharmony_ci   following constants, where *n* is the button number from 1 to 5:
2127db96d56Sopenharmony_ci   :const:`BUTTONn_PRESSED`, :const:`BUTTONn_RELEASED`, :const:`BUTTONn_CLICKED`,
2137db96d56Sopenharmony_ci   :const:`BUTTONn_DOUBLE_CLICKED`, :const:`BUTTONn_TRIPLE_CLICKED`,
2147db96d56Sopenharmony_ci   :const:`BUTTON_SHIFT`, :const:`BUTTON_CTRL`, :const:`BUTTON_ALT`.
2157db96d56Sopenharmony_ci
2167db96d56Sopenharmony_ci   .. versionchanged:: 3.10
2177db96d56Sopenharmony_ci      The ``BUTTON5_*`` constants are now exposed if they are provided by the
2187db96d56Sopenharmony_ci      underlying curses library.
2197db96d56Sopenharmony_ci
2207db96d56Sopenharmony_ci
2217db96d56Sopenharmony_ci.. function:: getsyx()
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ci   Return the current coordinates of the virtual screen cursor as a tuple
2247db96d56Sopenharmony_ci   ``(y, x)``.  If :meth:`leaveok <window.leaveok>` is currently ``True``, then return ``(-1, -1)``.
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci.. function:: getwin(file)
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci   Read window related data stored in the file by an earlier :func:`window.putwin` call.
2307db96d56Sopenharmony_ci   The routine then creates and initializes a new window using that data, returning
2317db96d56Sopenharmony_ci   the new window object.
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci.. function:: has_colors()
2357db96d56Sopenharmony_ci
2367db96d56Sopenharmony_ci   Return ``True`` if the terminal can display colors; otherwise, return ``False``.
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_ci.. function:: has_extended_color_support()
2397db96d56Sopenharmony_ci
2407db96d56Sopenharmony_ci   Return ``True`` if the module supports extended colors; otherwise, return
2417db96d56Sopenharmony_ci   ``False``. Extended color support allows more than 256 color pairs for
2427db96d56Sopenharmony_ci   terminals that support more than 16 colors (e.g. xterm-256color).
2437db96d56Sopenharmony_ci
2447db96d56Sopenharmony_ci   Extended color support requires ncurses version 6.1 or later.
2457db96d56Sopenharmony_ci
2467db96d56Sopenharmony_ci   .. versionadded:: 3.10
2477db96d56Sopenharmony_ci
2487db96d56Sopenharmony_ci.. function:: has_ic()
2497db96d56Sopenharmony_ci
2507db96d56Sopenharmony_ci   Return ``True`` if the terminal has insert- and delete-character capabilities.
2517db96d56Sopenharmony_ci   This function is included for historical reasons only, as all modern software
2527db96d56Sopenharmony_ci   terminal emulators have such capabilities.
2537db96d56Sopenharmony_ci
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ci.. function:: has_il()
2567db96d56Sopenharmony_ci
2577db96d56Sopenharmony_ci   Return ``True`` if the terminal has insert- and delete-line capabilities, or can
2587db96d56Sopenharmony_ci   simulate  them  using scrolling regions. This function is included for
2597db96d56Sopenharmony_ci   historical reasons only, as all modern software terminal emulators have such
2607db96d56Sopenharmony_ci   capabilities.
2617db96d56Sopenharmony_ci
2627db96d56Sopenharmony_ci
2637db96d56Sopenharmony_ci.. function:: has_key(ch)
2647db96d56Sopenharmony_ci
2657db96d56Sopenharmony_ci   Take a key value *ch*, and return ``True`` if the current terminal type recognizes
2667db96d56Sopenharmony_ci   a key with that value.
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci
2697db96d56Sopenharmony_ci.. function:: halfdelay(tenths)
2707db96d56Sopenharmony_ci
2717db96d56Sopenharmony_ci   Used for half-delay mode, which is similar to cbreak mode in that characters
2727db96d56Sopenharmony_ci   typed by the user are immediately available to the program. However, after
2737db96d56Sopenharmony_ci   blocking for *tenths* tenths of seconds, raise an exception if nothing has
2747db96d56Sopenharmony_ci   been typed.  The value of *tenths* must be a number between ``1`` and ``255``.  Use
2757db96d56Sopenharmony_ci   :func:`nocbreak` to leave half-delay mode.
2767db96d56Sopenharmony_ci
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ci.. function:: init_color(color_number, r, g, b)
2797db96d56Sopenharmony_ci
2807db96d56Sopenharmony_ci   Change the definition of a color, taking the number of the color to be changed
2817db96d56Sopenharmony_ci   followed by three RGB values (for the amounts of red, green, and blue
2827db96d56Sopenharmony_ci   components).  The value of *color_number* must be between ``0`` and
2837db96d56Sopenharmony_ci   ``COLORS - 1``.  Each of *r*, *g*, *b*, must be a value between ``0`` and
2847db96d56Sopenharmony_ci   ``1000``.  When :func:`init_color` is used, all occurrences of that color on the
2857db96d56Sopenharmony_ci   screen immediately change to the new definition.  This function is a no-op on
2867db96d56Sopenharmony_ci   most terminals; it is active only if :func:`can_change_color` returns ``True``.
2877db96d56Sopenharmony_ci
2887db96d56Sopenharmony_ci
2897db96d56Sopenharmony_ci.. function:: init_pair(pair_number, fg, bg)
2907db96d56Sopenharmony_ci
2917db96d56Sopenharmony_ci   Change the definition of a color-pair.  It takes three arguments: the number of
2927db96d56Sopenharmony_ci   the color-pair to be changed, the foreground color number, and the background
2937db96d56Sopenharmony_ci   color number.  The value of *pair_number* must be between ``1`` and
2947db96d56Sopenharmony_ci   ``COLOR_PAIRS - 1`` (the ``0`` color pair is wired to white on black and cannot
2957db96d56Sopenharmony_ci   be changed).  The value of *fg* and *bg* arguments must be between ``0`` and
2967db96d56Sopenharmony_ci   ``COLORS - 1``, or, after calling :func:`use_default_colors`, ``-1``.
2977db96d56Sopenharmony_ci   If the color-pair was previously initialized, the screen is
2987db96d56Sopenharmony_ci   refreshed and all occurrences of that color-pair are changed to the new
2997db96d56Sopenharmony_ci   definition.
3007db96d56Sopenharmony_ci
3017db96d56Sopenharmony_ci
3027db96d56Sopenharmony_ci.. function:: initscr()
3037db96d56Sopenharmony_ci
3047db96d56Sopenharmony_ci   Initialize the library. Return a :ref:`window <curses-window-objects>` object
3057db96d56Sopenharmony_ci   which represents the whole screen.
3067db96d56Sopenharmony_ci
3077db96d56Sopenharmony_ci   .. note::
3087db96d56Sopenharmony_ci
3097db96d56Sopenharmony_ci      If there is an error opening the terminal, the underlying curses library may
3107db96d56Sopenharmony_ci      cause the interpreter to exit.
3117db96d56Sopenharmony_ci
3127db96d56Sopenharmony_ci
3137db96d56Sopenharmony_ci.. function:: is_term_resized(nlines, ncols)
3147db96d56Sopenharmony_ci
3157db96d56Sopenharmony_ci   Return ``True`` if :func:`resize_term` would modify the window structure,
3167db96d56Sopenharmony_ci   ``False`` otherwise.
3177db96d56Sopenharmony_ci
3187db96d56Sopenharmony_ci
3197db96d56Sopenharmony_ci.. function:: isendwin()
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ci   Return ``True`` if :func:`endwin` has been called (that is, the  curses library has
3227db96d56Sopenharmony_ci   been deinitialized).
3237db96d56Sopenharmony_ci
3247db96d56Sopenharmony_ci
3257db96d56Sopenharmony_ci.. function:: keyname(k)
3267db96d56Sopenharmony_ci
3277db96d56Sopenharmony_ci   Return the name of the key numbered *k* as a bytes object.  The name of a key generating printable
3287db96d56Sopenharmony_ci   ASCII character is the key's character.  The name of a control-key combination
3297db96d56Sopenharmony_ci   is a two-byte bytes object consisting of a caret (``b'^'``) followed by the corresponding
3307db96d56Sopenharmony_ci   printable ASCII character.  The name of an alt-key combination (128--255) is a
3317db96d56Sopenharmony_ci   bytes object consisting of the prefix ``b'M-'`` followed by the name of the corresponding
3327db96d56Sopenharmony_ci   ASCII character.
3337db96d56Sopenharmony_ci
3347db96d56Sopenharmony_ci
3357db96d56Sopenharmony_ci.. function:: killchar()
3367db96d56Sopenharmony_ci
3377db96d56Sopenharmony_ci   Return the user's current line kill character as a one-byte bytes object. Under Unix operating systems
3387db96d56Sopenharmony_ci   this is a property of the controlling tty of the curses program, and is not set
3397db96d56Sopenharmony_ci   by the curses library itself.
3407db96d56Sopenharmony_ci
3417db96d56Sopenharmony_ci
3427db96d56Sopenharmony_ci.. function:: longname()
3437db96d56Sopenharmony_ci
3447db96d56Sopenharmony_ci   Return a bytes object containing the terminfo long name field describing the current
3457db96d56Sopenharmony_ci   terminal.  The maximum length of a verbose description is 128 characters.  It is
3467db96d56Sopenharmony_ci   defined only after the call to :func:`initscr`.
3477db96d56Sopenharmony_ci
3487db96d56Sopenharmony_ci
3497db96d56Sopenharmony_ci.. function:: meta(flag)
3507db96d56Sopenharmony_ci
3517db96d56Sopenharmony_ci   If *flag* is ``True``, allow 8-bit characters to be input.  If
3527db96d56Sopenharmony_ci   *flag* is ``False``,  allow only 7-bit chars.
3537db96d56Sopenharmony_ci
3547db96d56Sopenharmony_ci
3557db96d56Sopenharmony_ci.. function:: mouseinterval(interval)
3567db96d56Sopenharmony_ci
3577db96d56Sopenharmony_ci   Set the maximum time in milliseconds that can elapse between press and release
3587db96d56Sopenharmony_ci   events in order for them to be recognized as a click, and return the previous
3597db96d56Sopenharmony_ci   interval value.  The default value is 200 milliseconds, or one fifth of a second.
3607db96d56Sopenharmony_ci
3617db96d56Sopenharmony_ci
3627db96d56Sopenharmony_ci.. function:: mousemask(mousemask)
3637db96d56Sopenharmony_ci
3647db96d56Sopenharmony_ci   Set the mouse events to be reported, and return a tuple ``(availmask,
3657db96d56Sopenharmony_ci   oldmask)``.   *availmask* indicates which of the specified mouse events can be
3667db96d56Sopenharmony_ci   reported; on complete failure it returns ``0``.  *oldmask* is the previous value of
3677db96d56Sopenharmony_ci   the given window's mouse event mask.  If this function is never called, no mouse
3687db96d56Sopenharmony_ci   events are ever reported.
3697db96d56Sopenharmony_ci
3707db96d56Sopenharmony_ci
3717db96d56Sopenharmony_ci.. function:: napms(ms)
3727db96d56Sopenharmony_ci
3737db96d56Sopenharmony_ci   Sleep for *ms* milliseconds.
3747db96d56Sopenharmony_ci
3757db96d56Sopenharmony_ci
3767db96d56Sopenharmony_ci.. function:: newpad(nlines, ncols)
3777db96d56Sopenharmony_ci
3787db96d56Sopenharmony_ci   Create and return a pointer to a new pad data structure with the given number
3797db96d56Sopenharmony_ci   of lines and columns.  Return a pad as a window object.
3807db96d56Sopenharmony_ci
3817db96d56Sopenharmony_ci   A pad is like a window, except that it is not restricted by the screen size, and
3827db96d56Sopenharmony_ci   is not necessarily associated with a particular part of the screen.  Pads can be
3837db96d56Sopenharmony_ci   used when a large window is needed, and only a part of the window will be on the
3847db96d56Sopenharmony_ci   screen at one time.  Automatic refreshes of pads (such as from scrolling or
3857db96d56Sopenharmony_ci   echoing of input) do not occur.  The :meth:`~window.refresh` and :meth:`~window.noutrefresh`
3867db96d56Sopenharmony_ci   methods of a pad require 6 arguments to specify the part of the pad to be
3877db96d56Sopenharmony_ci   displayed and the location on the screen to be used for the display. The
3887db96d56Sopenharmony_ci   arguments are *pminrow*, *pmincol*, *sminrow*, *smincol*, *smaxrow*, *smaxcol*; the *p*
3897db96d56Sopenharmony_ci   arguments refer to the upper left corner of the pad region to be displayed and
3907db96d56Sopenharmony_ci   the *s* arguments define a clipping box on the screen within which the pad region
3917db96d56Sopenharmony_ci   is to be displayed.
3927db96d56Sopenharmony_ci
3937db96d56Sopenharmony_ci
3947db96d56Sopenharmony_ci.. function:: newwin(nlines, ncols)
3957db96d56Sopenharmony_ci              newwin(nlines, ncols, begin_y, begin_x)
3967db96d56Sopenharmony_ci
3977db96d56Sopenharmony_ci   Return a new :ref:`window <curses-window-objects>`, whose left-upper corner
3987db96d56Sopenharmony_ci   is at  ``(begin_y, begin_x)``, and whose height/width is  *nlines*/*ncols*.
3997db96d56Sopenharmony_ci
4007db96d56Sopenharmony_ci   By default, the window will extend from the  specified position to the lower
4017db96d56Sopenharmony_ci   right corner of the screen.
4027db96d56Sopenharmony_ci
4037db96d56Sopenharmony_ci
4047db96d56Sopenharmony_ci.. function:: nl()
4057db96d56Sopenharmony_ci
4067db96d56Sopenharmony_ci   Enter newline mode.  This mode translates the return key into newline on input,
4077db96d56Sopenharmony_ci   and translates newline into return and line-feed on output. Newline mode is
4087db96d56Sopenharmony_ci   initially on.
4097db96d56Sopenharmony_ci
4107db96d56Sopenharmony_ci
4117db96d56Sopenharmony_ci.. function:: nocbreak()
4127db96d56Sopenharmony_ci
4137db96d56Sopenharmony_ci   Leave cbreak mode.  Return to normal "cooked" mode with line buffering.
4147db96d56Sopenharmony_ci
4157db96d56Sopenharmony_ci
4167db96d56Sopenharmony_ci.. function:: noecho()
4177db96d56Sopenharmony_ci
4187db96d56Sopenharmony_ci   Leave echo mode.  Echoing of input characters is turned off.
4197db96d56Sopenharmony_ci
4207db96d56Sopenharmony_ci
4217db96d56Sopenharmony_ci.. function:: nonl()
4227db96d56Sopenharmony_ci
4237db96d56Sopenharmony_ci   Leave newline mode.  Disable translation of return into newline on input, and
4247db96d56Sopenharmony_ci   disable low-level translation of newline into newline/return on output (but this
4257db96d56Sopenharmony_ci   does not change the behavior of ``addch('\n')``, which always does the
4267db96d56Sopenharmony_ci   equivalent of return and line feed on the virtual screen).  With translation
4277db96d56Sopenharmony_ci   off, curses can sometimes speed up vertical motion a little; also, it will be
4287db96d56Sopenharmony_ci   able to detect the return key on input.
4297db96d56Sopenharmony_ci
4307db96d56Sopenharmony_ci
4317db96d56Sopenharmony_ci.. function:: noqiflush()
4327db96d56Sopenharmony_ci
4337db96d56Sopenharmony_ci   When the :func:`!noqiflush` routine is used, normal flush of input and output queues
4347db96d56Sopenharmony_ci   associated with the ``INTR``, ``QUIT`` and ``SUSP`` characters will not be done.  You may
4357db96d56Sopenharmony_ci   want to call :func:`!noqiflush` in a signal handler if you want output to
4367db96d56Sopenharmony_ci   continue as though the interrupt had not occurred, after the handler exits.
4377db96d56Sopenharmony_ci
4387db96d56Sopenharmony_ci
4397db96d56Sopenharmony_ci.. function:: noraw()
4407db96d56Sopenharmony_ci
4417db96d56Sopenharmony_ci   Leave raw mode. Return to normal "cooked" mode with line buffering.
4427db96d56Sopenharmony_ci
4437db96d56Sopenharmony_ci
4447db96d56Sopenharmony_ci.. function:: pair_content(pair_number)
4457db96d56Sopenharmony_ci
4467db96d56Sopenharmony_ci   Return a tuple ``(fg, bg)`` containing the colors for the requested color pair.
4477db96d56Sopenharmony_ci   The value of *pair_number* must be between ``0`` and ``COLOR_PAIRS - 1``.
4487db96d56Sopenharmony_ci
4497db96d56Sopenharmony_ci
4507db96d56Sopenharmony_ci.. function:: pair_number(attr)
4517db96d56Sopenharmony_ci
4527db96d56Sopenharmony_ci   Return the number of the color-pair set by the attribute value *attr*.
4537db96d56Sopenharmony_ci   :func:`color_pair` is the counterpart to this function.
4547db96d56Sopenharmony_ci
4557db96d56Sopenharmony_ci
4567db96d56Sopenharmony_ci.. function:: putp(str)
4577db96d56Sopenharmony_ci
4587db96d56Sopenharmony_ci   Equivalent to ``tputs(str, 1, putchar)``; emit the value of a specified
4597db96d56Sopenharmony_ci   terminfo capability for the current terminal.  Note that the output of :func:`putp`
4607db96d56Sopenharmony_ci   always goes to standard output.
4617db96d56Sopenharmony_ci
4627db96d56Sopenharmony_ci
4637db96d56Sopenharmony_ci.. function:: qiflush([flag])
4647db96d56Sopenharmony_ci
4657db96d56Sopenharmony_ci   If *flag* is ``False``, the effect is the same as calling :func:`noqiflush`. If
4667db96d56Sopenharmony_ci   *flag* is ``True``, or no argument is provided, the queues will be flushed when
4677db96d56Sopenharmony_ci   these control characters are read.
4687db96d56Sopenharmony_ci
4697db96d56Sopenharmony_ci
4707db96d56Sopenharmony_ci.. function:: raw()
4717db96d56Sopenharmony_ci
4727db96d56Sopenharmony_ci   Enter raw mode.  In raw mode, normal line buffering and  processing of
4737db96d56Sopenharmony_ci   interrupt, quit, suspend, and flow control keys are turned off; characters are
4747db96d56Sopenharmony_ci   presented to curses input functions one by one.
4757db96d56Sopenharmony_ci
4767db96d56Sopenharmony_ci
4777db96d56Sopenharmony_ci.. function:: reset_prog_mode()
4787db96d56Sopenharmony_ci
4797db96d56Sopenharmony_ci   Restore the  terminal  to "program" mode, as previously saved  by
4807db96d56Sopenharmony_ci   :func:`def_prog_mode`.
4817db96d56Sopenharmony_ci
4827db96d56Sopenharmony_ci
4837db96d56Sopenharmony_ci.. function:: reset_shell_mode()
4847db96d56Sopenharmony_ci
4857db96d56Sopenharmony_ci   Restore the  terminal  to "shell" mode, as previously saved  by
4867db96d56Sopenharmony_ci   :func:`def_shell_mode`.
4877db96d56Sopenharmony_ci
4887db96d56Sopenharmony_ci
4897db96d56Sopenharmony_ci.. function:: resetty()
4907db96d56Sopenharmony_ci
4917db96d56Sopenharmony_ci   Restore the state of the terminal modes to what it was at the last call to
4927db96d56Sopenharmony_ci   :func:`savetty`.
4937db96d56Sopenharmony_ci
4947db96d56Sopenharmony_ci
4957db96d56Sopenharmony_ci.. function:: resize_term(nlines, ncols)
4967db96d56Sopenharmony_ci
4977db96d56Sopenharmony_ci   Backend function used by :func:`resizeterm`, performing most of the work;
4987db96d56Sopenharmony_ci   when resizing the windows, :func:`resize_term` blank-fills the areas that are
4997db96d56Sopenharmony_ci   extended.  The calling application should fill in these areas with
5007db96d56Sopenharmony_ci   appropriate data.  The :func:`!resize_term` function attempts to resize all
5017db96d56Sopenharmony_ci   windows.  However, due to the calling convention of pads, it is not possible
5027db96d56Sopenharmony_ci   to resize these without additional interaction with the application.
5037db96d56Sopenharmony_ci
5047db96d56Sopenharmony_ci
5057db96d56Sopenharmony_ci.. function:: resizeterm(nlines, ncols)
5067db96d56Sopenharmony_ci
5077db96d56Sopenharmony_ci   Resize the standard and current windows to the specified dimensions, and
5087db96d56Sopenharmony_ci   adjusts other bookkeeping data used by the curses library that record the
5097db96d56Sopenharmony_ci   window dimensions (in particular the SIGWINCH handler).
5107db96d56Sopenharmony_ci
5117db96d56Sopenharmony_ci
5127db96d56Sopenharmony_ci.. function:: savetty()
5137db96d56Sopenharmony_ci
5147db96d56Sopenharmony_ci   Save the current state of the terminal modes in a buffer, usable by
5157db96d56Sopenharmony_ci   :func:`resetty`.
5167db96d56Sopenharmony_ci
5177db96d56Sopenharmony_ci.. function:: get_escdelay()
5187db96d56Sopenharmony_ci
5197db96d56Sopenharmony_ci   Retrieves the value set by :func:`set_escdelay`.
5207db96d56Sopenharmony_ci
5217db96d56Sopenharmony_ci   .. versionadded:: 3.9
5227db96d56Sopenharmony_ci
5237db96d56Sopenharmony_ci.. function:: set_escdelay(ms)
5247db96d56Sopenharmony_ci
5257db96d56Sopenharmony_ci   Sets the number of milliseconds to wait after reading an escape character,
5267db96d56Sopenharmony_ci   to distinguish between an individual escape character entered on the
5277db96d56Sopenharmony_ci   keyboard from escape sequences sent by cursor and function keys.
5287db96d56Sopenharmony_ci
5297db96d56Sopenharmony_ci   .. versionadded:: 3.9
5307db96d56Sopenharmony_ci
5317db96d56Sopenharmony_ci.. function:: get_tabsize()
5327db96d56Sopenharmony_ci
5337db96d56Sopenharmony_ci   Retrieves the value set by :func:`set_tabsize`.
5347db96d56Sopenharmony_ci
5357db96d56Sopenharmony_ci   .. versionadded:: 3.9
5367db96d56Sopenharmony_ci
5377db96d56Sopenharmony_ci.. function:: set_tabsize(size)
5387db96d56Sopenharmony_ci
5397db96d56Sopenharmony_ci   Sets the number of columns used by the curses library when converting a tab
5407db96d56Sopenharmony_ci   character to spaces as it adds the tab to a window.
5417db96d56Sopenharmony_ci
5427db96d56Sopenharmony_ci   .. versionadded:: 3.9
5437db96d56Sopenharmony_ci
5447db96d56Sopenharmony_ci.. function:: setsyx(y, x)
5457db96d56Sopenharmony_ci
5467db96d56Sopenharmony_ci   Set the virtual screen cursor to *y*, *x*. If *y* and *x* are both ``-1``, then
5477db96d56Sopenharmony_ci   :meth:`leaveok <window.leaveok>` is set ``True``.
5487db96d56Sopenharmony_ci
5497db96d56Sopenharmony_ci
5507db96d56Sopenharmony_ci.. function:: setupterm(term=None, fd=-1)
5517db96d56Sopenharmony_ci
5527db96d56Sopenharmony_ci   Initialize the terminal.  *term* is a string giving
5537db96d56Sopenharmony_ci   the terminal name, or ``None``; if omitted or ``None``, the value of the
5547db96d56Sopenharmony_ci   :envvar:`TERM` environment variable will be used.  *fd* is the
5557db96d56Sopenharmony_ci   file descriptor to which any initialization sequences will be sent; if not
5567db96d56Sopenharmony_ci   supplied or ``-1``, the file descriptor for ``sys.stdout`` will be used.
5577db96d56Sopenharmony_ci
5587db96d56Sopenharmony_ci
5597db96d56Sopenharmony_ci.. function:: start_color()
5607db96d56Sopenharmony_ci
5617db96d56Sopenharmony_ci   Must be called if the programmer wants to use colors, and before any other color
5627db96d56Sopenharmony_ci   manipulation routine is called.  It is good practice to call this routine right
5637db96d56Sopenharmony_ci   after :func:`initscr`.
5647db96d56Sopenharmony_ci
5657db96d56Sopenharmony_ci   :func:`start_color` initializes eight basic colors (black, red,  green, yellow,
5667db96d56Sopenharmony_ci   blue, magenta, cyan, and white), and two global variables in the :mod:`curses`
5677db96d56Sopenharmony_ci   module, :const:`COLORS` and :const:`COLOR_PAIRS`, containing the maximum number
5687db96d56Sopenharmony_ci   of colors and color-pairs the terminal can support.  It also restores the colors
5697db96d56Sopenharmony_ci   on the terminal to the values they had when the terminal was just turned on.
5707db96d56Sopenharmony_ci
5717db96d56Sopenharmony_ci
5727db96d56Sopenharmony_ci.. function:: termattrs()
5737db96d56Sopenharmony_ci
5747db96d56Sopenharmony_ci   Return a logical OR of all video attributes supported by the terminal.  This
5757db96d56Sopenharmony_ci   information is useful when a curses program needs complete control over the
5767db96d56Sopenharmony_ci   appearance of the screen.
5777db96d56Sopenharmony_ci
5787db96d56Sopenharmony_ci
5797db96d56Sopenharmony_ci.. function:: termname()
5807db96d56Sopenharmony_ci
5817db96d56Sopenharmony_ci   Return the value of the environment variable :envvar:`TERM`, as a bytes object,
5827db96d56Sopenharmony_ci   truncated to 14 characters.
5837db96d56Sopenharmony_ci
5847db96d56Sopenharmony_ci
5857db96d56Sopenharmony_ci.. function:: tigetflag(capname)
5867db96d56Sopenharmony_ci
5877db96d56Sopenharmony_ci   Return the value of the Boolean capability corresponding to the terminfo
5887db96d56Sopenharmony_ci   capability name *capname* as an integer.  Return the value ``-1`` if *capname* is not a
5897db96d56Sopenharmony_ci   Boolean capability, or ``0`` if it is canceled or absent from the terminal
5907db96d56Sopenharmony_ci   description.
5917db96d56Sopenharmony_ci
5927db96d56Sopenharmony_ci
5937db96d56Sopenharmony_ci.. function:: tigetnum(capname)
5947db96d56Sopenharmony_ci
5957db96d56Sopenharmony_ci   Return the value of the numeric capability corresponding to the terminfo
5967db96d56Sopenharmony_ci   capability name *capname* as an integer.  Return the value ``-2`` if *capname* is not a
5977db96d56Sopenharmony_ci   numeric capability, or ``-1`` if it is canceled or absent from the terminal
5987db96d56Sopenharmony_ci   description.
5997db96d56Sopenharmony_ci
6007db96d56Sopenharmony_ci
6017db96d56Sopenharmony_ci.. function:: tigetstr(capname)
6027db96d56Sopenharmony_ci
6037db96d56Sopenharmony_ci   Return the value of the string capability corresponding to the terminfo
6047db96d56Sopenharmony_ci   capability name *capname* as a bytes object.  Return ``None`` if *capname*
6057db96d56Sopenharmony_ci   is not a terminfo "string capability", or is canceled or absent from the
6067db96d56Sopenharmony_ci   terminal description.
6077db96d56Sopenharmony_ci
6087db96d56Sopenharmony_ci
6097db96d56Sopenharmony_ci.. function:: tparm(str[, ...])
6107db96d56Sopenharmony_ci
6117db96d56Sopenharmony_ci   Instantiate the bytes object *str* with the supplied parameters, where *str* should
6127db96d56Sopenharmony_ci   be a parameterized string obtained from the terminfo database.  E.g.
6137db96d56Sopenharmony_ci   ``tparm(tigetstr("cup"), 5, 3)`` could result in ``b'\033[6;4H'``, the exact
6147db96d56Sopenharmony_ci   result depending on terminal type.
6157db96d56Sopenharmony_ci
6167db96d56Sopenharmony_ci
6177db96d56Sopenharmony_ci.. function:: typeahead(fd)
6187db96d56Sopenharmony_ci
6197db96d56Sopenharmony_ci   Specify that the file descriptor *fd* be used for typeahead checking.  If *fd*
6207db96d56Sopenharmony_ci   is ``-1``, then no typeahead checking is done.
6217db96d56Sopenharmony_ci
6227db96d56Sopenharmony_ci   The curses library does "line-breakout optimization" by looking for typeahead
6237db96d56Sopenharmony_ci   periodically while updating the screen.  If input is found, and it is coming
6247db96d56Sopenharmony_ci   from a tty, the current update is postponed until refresh or doupdate is called
6257db96d56Sopenharmony_ci   again, allowing faster response to commands typed in advance. This function
6267db96d56Sopenharmony_ci   allows specifying a different file descriptor for typeahead checking.
6277db96d56Sopenharmony_ci
6287db96d56Sopenharmony_ci
6297db96d56Sopenharmony_ci.. function:: unctrl(ch)
6307db96d56Sopenharmony_ci
6317db96d56Sopenharmony_ci   Return a bytes object which is a printable representation of the character *ch*.
6327db96d56Sopenharmony_ci   Control characters are represented as a caret followed by the character, for
6337db96d56Sopenharmony_ci   example as ``b'^C'``. Printing characters are left as they are.
6347db96d56Sopenharmony_ci
6357db96d56Sopenharmony_ci
6367db96d56Sopenharmony_ci.. function:: ungetch(ch)
6377db96d56Sopenharmony_ci
6387db96d56Sopenharmony_ci   Push *ch* so the next :meth:`~window.getch` will return it.
6397db96d56Sopenharmony_ci
6407db96d56Sopenharmony_ci   .. note::
6417db96d56Sopenharmony_ci
6427db96d56Sopenharmony_ci      Only one *ch* can be pushed before :meth:`!getch` is called.
6437db96d56Sopenharmony_ci
6447db96d56Sopenharmony_ci
6457db96d56Sopenharmony_ci.. function:: update_lines_cols()
6467db96d56Sopenharmony_ci
6477db96d56Sopenharmony_ci   Update :envvar:`LINES` and :envvar:`COLS`. Useful for detecting manual screen resize.
6487db96d56Sopenharmony_ci
6497db96d56Sopenharmony_ci   .. versionadded:: 3.5
6507db96d56Sopenharmony_ci
6517db96d56Sopenharmony_ci
6527db96d56Sopenharmony_ci.. function:: unget_wch(ch)
6537db96d56Sopenharmony_ci
6547db96d56Sopenharmony_ci   Push *ch* so the next :meth:`~window.get_wch` will return it.
6557db96d56Sopenharmony_ci
6567db96d56Sopenharmony_ci   .. note::
6577db96d56Sopenharmony_ci
6587db96d56Sopenharmony_ci      Only one *ch* can be pushed before :meth:`!get_wch` is called.
6597db96d56Sopenharmony_ci
6607db96d56Sopenharmony_ci   .. versionadded:: 3.3
6617db96d56Sopenharmony_ci
6627db96d56Sopenharmony_ci
6637db96d56Sopenharmony_ci.. function:: ungetmouse(id, x, y, z, bstate)
6647db96d56Sopenharmony_ci
6657db96d56Sopenharmony_ci   Push a :const:`KEY_MOUSE` event onto the input queue, associating the given
6667db96d56Sopenharmony_ci   state data with it.
6677db96d56Sopenharmony_ci
6687db96d56Sopenharmony_ci
6697db96d56Sopenharmony_ci.. function:: use_env(flag)
6707db96d56Sopenharmony_ci
6717db96d56Sopenharmony_ci   If used, this function should be called before :func:`initscr` or newterm are
6727db96d56Sopenharmony_ci   called.  When *flag* is ``False``, the values of lines and columns specified in the
6737db96d56Sopenharmony_ci   terminfo database will be used, even if environment variables :envvar:`LINES`
6747db96d56Sopenharmony_ci   and :envvar:`COLUMNS` (used by default) are set, or if curses is running in a
6757db96d56Sopenharmony_ci   window (in which case default behavior would be to use the window size if
6767db96d56Sopenharmony_ci   :envvar:`LINES` and :envvar:`COLUMNS` are not set).
6777db96d56Sopenharmony_ci
6787db96d56Sopenharmony_ci
6797db96d56Sopenharmony_ci.. function:: use_default_colors()
6807db96d56Sopenharmony_ci
6817db96d56Sopenharmony_ci   Allow use of default values for colors on terminals supporting this feature. Use
6827db96d56Sopenharmony_ci   this to support transparency in your application.  The default color is assigned
6837db96d56Sopenharmony_ci   to the color number ``-1``. After calling this function,  ``init_pair(x,
6847db96d56Sopenharmony_ci   curses.COLOR_RED, -1)`` initializes, for instance, color pair *x* to a red
6857db96d56Sopenharmony_ci   foreground color on the default background.
6867db96d56Sopenharmony_ci
6877db96d56Sopenharmony_ci
6887db96d56Sopenharmony_ci.. function:: wrapper(func, /, *args, **kwargs)
6897db96d56Sopenharmony_ci
6907db96d56Sopenharmony_ci   Initialize curses and call another callable object, *func*, which should be the
6917db96d56Sopenharmony_ci   rest of your curses-using application.  If the application raises an exception,
6927db96d56Sopenharmony_ci   this function will restore the terminal to a sane state before re-raising the
6937db96d56Sopenharmony_ci   exception and generating a traceback.  The callable object *func* is then passed
6947db96d56Sopenharmony_ci   the main window 'stdscr' as its first argument, followed by any other arguments
6957db96d56Sopenharmony_ci   passed to :func:`!wrapper`.  Before calling *func*, :func:`!wrapper` turns on
6967db96d56Sopenharmony_ci   cbreak mode, turns off echo, enables the terminal keypad, and initializes colors
6977db96d56Sopenharmony_ci   if the terminal has color support.  On exit (whether normally or by exception)
6987db96d56Sopenharmony_ci   it restores cooked mode, turns on echo, and disables the terminal keypad.
6997db96d56Sopenharmony_ci
7007db96d56Sopenharmony_ci
7017db96d56Sopenharmony_ci.. _curses-window-objects:
7027db96d56Sopenharmony_ci
7037db96d56Sopenharmony_ciWindow Objects
7047db96d56Sopenharmony_ci--------------
7057db96d56Sopenharmony_ci
7067db96d56Sopenharmony_ciWindow objects, as returned by :func:`initscr` and :func:`newwin` above, have
7077db96d56Sopenharmony_cithe following methods and attributes:
7087db96d56Sopenharmony_ci
7097db96d56Sopenharmony_ci
7107db96d56Sopenharmony_ci.. method:: window.addch(ch[, attr])
7117db96d56Sopenharmony_ci            window.addch(y, x, ch[, attr])
7127db96d56Sopenharmony_ci
7137db96d56Sopenharmony_ci   Paint character *ch* at ``(y, x)`` with attributes *attr*, overwriting any
7147db96d56Sopenharmony_ci   character previously painted at that location.  By default, the character
7157db96d56Sopenharmony_ci   position and attributes are the current settings for the window object.
7167db96d56Sopenharmony_ci
7177db96d56Sopenharmony_ci   .. note::
7187db96d56Sopenharmony_ci
7197db96d56Sopenharmony_ci      Writing outside the window, subwindow, or pad raises a :exc:`curses.error`.
7207db96d56Sopenharmony_ci      Attempting to write to the lower right corner of a window, subwindow,
7217db96d56Sopenharmony_ci      or pad will cause an exception to be raised after the character is printed.
7227db96d56Sopenharmony_ci
7237db96d56Sopenharmony_ci
7247db96d56Sopenharmony_ci.. method:: window.addnstr(str, n[, attr])
7257db96d56Sopenharmony_ci            window.addnstr(y, x, str, n[, attr])
7267db96d56Sopenharmony_ci
7277db96d56Sopenharmony_ci   Paint at most *n* characters of the character string *str* at
7287db96d56Sopenharmony_ci   ``(y, x)`` with attributes
7297db96d56Sopenharmony_ci   *attr*, overwriting anything previously on the display.
7307db96d56Sopenharmony_ci
7317db96d56Sopenharmony_ci
7327db96d56Sopenharmony_ci.. method:: window.addstr(str[, attr])
7337db96d56Sopenharmony_ci            window.addstr(y, x, str[, attr])
7347db96d56Sopenharmony_ci
7357db96d56Sopenharmony_ci   Paint the character string *str* at ``(y, x)`` with attributes
7367db96d56Sopenharmony_ci   *attr*, overwriting anything previously on the display.
7377db96d56Sopenharmony_ci
7387db96d56Sopenharmony_ci   .. note::
7397db96d56Sopenharmony_ci
7407db96d56Sopenharmony_ci      * Writing outside the window, subwindow, or pad raises :exc:`curses.error`.
7417db96d56Sopenharmony_ci        Attempting to write to the lower right corner of a window, subwindow,
7427db96d56Sopenharmony_ci        or pad will cause an exception to be raised after the string is printed.
7437db96d56Sopenharmony_ci
7447db96d56Sopenharmony_ci      * A `bug in ncurses <https://bugs.python.org/issue35924>`_, the backend
7457db96d56Sopenharmony_ci        for this Python module, can cause SegFaults when resizing windows. This
7467db96d56Sopenharmony_ci        is fixed in ncurses-6.1-20190511.  If you are stuck with an earlier
7477db96d56Sopenharmony_ci        ncurses, you can avoid triggering this if you do not call :func:`addstr`
7487db96d56Sopenharmony_ci        with a *str* that has embedded newlines.  Instead, call :func:`addstr`
7497db96d56Sopenharmony_ci        separately for each line.
7507db96d56Sopenharmony_ci
7517db96d56Sopenharmony_ci
7527db96d56Sopenharmony_ci.. method:: window.attroff(attr)
7537db96d56Sopenharmony_ci
7547db96d56Sopenharmony_ci   Remove attribute *attr* from the "background" set applied to all writes to the
7557db96d56Sopenharmony_ci   current window.
7567db96d56Sopenharmony_ci
7577db96d56Sopenharmony_ci
7587db96d56Sopenharmony_ci.. method:: window.attron(attr)
7597db96d56Sopenharmony_ci
7607db96d56Sopenharmony_ci   Add attribute *attr* from the "background" set applied to all writes to the
7617db96d56Sopenharmony_ci   current window.
7627db96d56Sopenharmony_ci
7637db96d56Sopenharmony_ci
7647db96d56Sopenharmony_ci.. method:: window.attrset(attr)
7657db96d56Sopenharmony_ci
7667db96d56Sopenharmony_ci   Set the "background" set of attributes to *attr*.  This set is initially
7677db96d56Sopenharmony_ci   ``0`` (no attributes).
7687db96d56Sopenharmony_ci
7697db96d56Sopenharmony_ci
7707db96d56Sopenharmony_ci.. method:: window.bkgd(ch[, attr])
7717db96d56Sopenharmony_ci
7727db96d56Sopenharmony_ci   Set the background property of the window to the character *ch*, with
7737db96d56Sopenharmony_ci   attributes *attr*.  The change is then applied to every character position in
7747db96d56Sopenharmony_ci   that window:
7757db96d56Sopenharmony_ci
7767db96d56Sopenharmony_ci   * The attribute of every character in the window  is changed to the new
7777db96d56Sopenharmony_ci     background attribute.
7787db96d56Sopenharmony_ci
7797db96d56Sopenharmony_ci   * Wherever  the  former background character appears, it is changed to the new
7807db96d56Sopenharmony_ci     background character.
7817db96d56Sopenharmony_ci
7827db96d56Sopenharmony_ci
7837db96d56Sopenharmony_ci.. method:: window.bkgdset(ch[, attr])
7847db96d56Sopenharmony_ci
7857db96d56Sopenharmony_ci   Set the window's background.  A window's background consists of a character and
7867db96d56Sopenharmony_ci   any combination of attributes.  The attribute part of the background is combined
7877db96d56Sopenharmony_ci   (OR'ed) with all non-blank characters that are written into the window.  Both
7887db96d56Sopenharmony_ci   the character and attribute parts of the background are combined with the blank
7897db96d56Sopenharmony_ci   characters.  The background becomes a property of the character and moves with
7907db96d56Sopenharmony_ci   the character through any scrolling and insert/delete line/character operations.
7917db96d56Sopenharmony_ci
7927db96d56Sopenharmony_ci
7937db96d56Sopenharmony_ci.. method:: window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])
7947db96d56Sopenharmony_ci
7957db96d56Sopenharmony_ci   Draw a border around the edges of the window. Each parameter specifies  the
7967db96d56Sopenharmony_ci   character to use for a specific part of the border; see the table below for more
7977db96d56Sopenharmony_ci   details.
7987db96d56Sopenharmony_ci
7997db96d56Sopenharmony_ci   .. note::
8007db96d56Sopenharmony_ci
8017db96d56Sopenharmony_ci      A ``0`` value for any parameter will cause the default character to be used for
8027db96d56Sopenharmony_ci      that parameter.  Keyword parameters can *not* be used.  The defaults are listed
8037db96d56Sopenharmony_ci      in this table:
8047db96d56Sopenharmony_ci
8057db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8067db96d56Sopenharmony_ci   | Parameter | Description         | Default value         |
8077db96d56Sopenharmony_ci   +===========+=====================+=======================+
8087db96d56Sopenharmony_ci   | *ls*      | Left side           | :const:`ACS_VLINE`    |
8097db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8107db96d56Sopenharmony_ci   | *rs*      | Right side          | :const:`ACS_VLINE`    |
8117db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8127db96d56Sopenharmony_ci   | *ts*      | Top                 | :const:`ACS_HLINE`    |
8137db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8147db96d56Sopenharmony_ci   | *bs*      | Bottom              | :const:`ACS_HLINE`    |
8157db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8167db96d56Sopenharmony_ci   | *tl*      | Upper-left corner   | :const:`ACS_ULCORNER` |
8177db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8187db96d56Sopenharmony_ci   | *tr*      | Upper-right corner  | :const:`ACS_URCORNER` |
8197db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8207db96d56Sopenharmony_ci   | *bl*      | Bottom-left corner  | :const:`ACS_LLCORNER` |
8217db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8227db96d56Sopenharmony_ci   | *br*      | Bottom-right corner | :const:`ACS_LRCORNER` |
8237db96d56Sopenharmony_ci   +-----------+---------------------+-----------------------+
8247db96d56Sopenharmony_ci
8257db96d56Sopenharmony_ci
8267db96d56Sopenharmony_ci.. method:: window.box([vertch, horch])
8277db96d56Sopenharmony_ci
8287db96d56Sopenharmony_ci   Similar to :meth:`border`, but both *ls* and *rs* are *vertch* and both *ts* and
8297db96d56Sopenharmony_ci   *bs* are *horch*.  The default corner characters are always used by this function.
8307db96d56Sopenharmony_ci
8317db96d56Sopenharmony_ci
8327db96d56Sopenharmony_ci.. method:: window.chgat(attr)
8337db96d56Sopenharmony_ci            window.chgat(num, attr)
8347db96d56Sopenharmony_ci            window.chgat(y, x, attr)
8357db96d56Sopenharmony_ci            window.chgat(y, x, num, attr)
8367db96d56Sopenharmony_ci
8377db96d56Sopenharmony_ci   Set the attributes of *num* characters at the current cursor position, or at
8387db96d56Sopenharmony_ci   position ``(y, x)`` if supplied. If *num* is not given or is ``-1``,
8397db96d56Sopenharmony_ci   the attribute will be set on all the characters to the end of the line.  This
8407db96d56Sopenharmony_ci   function moves cursor to position ``(y, x)`` if supplied. The changed line
8417db96d56Sopenharmony_ci   will be touched using the :meth:`touchline` method so that the contents will
8427db96d56Sopenharmony_ci   be redisplayed by the next window refresh.
8437db96d56Sopenharmony_ci
8447db96d56Sopenharmony_ci
8457db96d56Sopenharmony_ci.. method:: window.clear()
8467db96d56Sopenharmony_ci
8477db96d56Sopenharmony_ci   Like :meth:`erase`, but also cause the whole window to be repainted upon next
8487db96d56Sopenharmony_ci   call to :meth:`refresh`.
8497db96d56Sopenharmony_ci
8507db96d56Sopenharmony_ci
8517db96d56Sopenharmony_ci.. method:: window.clearok(flag)
8527db96d56Sopenharmony_ci
8537db96d56Sopenharmony_ci   If *flag* is ``True``, the next call to :meth:`refresh` will clear the window
8547db96d56Sopenharmony_ci   completely.
8557db96d56Sopenharmony_ci
8567db96d56Sopenharmony_ci
8577db96d56Sopenharmony_ci.. method:: window.clrtobot()
8587db96d56Sopenharmony_ci
8597db96d56Sopenharmony_ci   Erase from cursor to the end of the window: all lines below the cursor are
8607db96d56Sopenharmony_ci   deleted, and then the equivalent of :meth:`clrtoeol` is performed.
8617db96d56Sopenharmony_ci
8627db96d56Sopenharmony_ci
8637db96d56Sopenharmony_ci.. method:: window.clrtoeol()
8647db96d56Sopenharmony_ci
8657db96d56Sopenharmony_ci   Erase from cursor to the end of the line.
8667db96d56Sopenharmony_ci
8677db96d56Sopenharmony_ci
8687db96d56Sopenharmony_ci.. method:: window.cursyncup()
8697db96d56Sopenharmony_ci
8707db96d56Sopenharmony_ci   Update the current cursor position of all the ancestors of the window to
8717db96d56Sopenharmony_ci   reflect the current cursor position of the window.
8727db96d56Sopenharmony_ci
8737db96d56Sopenharmony_ci
8747db96d56Sopenharmony_ci.. method:: window.delch([y, x])
8757db96d56Sopenharmony_ci
8767db96d56Sopenharmony_ci   Delete any character at ``(y, x)``.
8777db96d56Sopenharmony_ci
8787db96d56Sopenharmony_ci
8797db96d56Sopenharmony_ci.. method:: window.deleteln()
8807db96d56Sopenharmony_ci
8817db96d56Sopenharmony_ci   Delete the line under the cursor. All following lines are moved up by one line.
8827db96d56Sopenharmony_ci
8837db96d56Sopenharmony_ci
8847db96d56Sopenharmony_ci.. method:: window.derwin(begin_y, begin_x)
8857db96d56Sopenharmony_ci            window.derwin(nlines, ncols, begin_y, begin_x)
8867db96d56Sopenharmony_ci
8877db96d56Sopenharmony_ci   An abbreviation for "derive window", :meth:`derwin` is the same as calling
8887db96d56Sopenharmony_ci   :meth:`subwin`, except that *begin_y* and *begin_x* are relative to the origin
8897db96d56Sopenharmony_ci   of the window, rather than relative to the entire screen.  Return a window
8907db96d56Sopenharmony_ci   object for the derived window.
8917db96d56Sopenharmony_ci
8927db96d56Sopenharmony_ci
8937db96d56Sopenharmony_ci.. method:: window.echochar(ch[, attr])
8947db96d56Sopenharmony_ci
8957db96d56Sopenharmony_ci   Add character *ch* with attribute *attr*, and immediately  call :meth:`refresh`
8967db96d56Sopenharmony_ci   on the window.
8977db96d56Sopenharmony_ci
8987db96d56Sopenharmony_ci
8997db96d56Sopenharmony_ci.. method:: window.enclose(y, x)
9007db96d56Sopenharmony_ci
9017db96d56Sopenharmony_ci   Test whether the given pair of screen-relative character-cell coordinates are
9027db96d56Sopenharmony_ci   enclosed by the given window, returning ``True`` or ``False``.  It is useful for
9037db96d56Sopenharmony_ci   determining what subset of the screen windows enclose the location of a mouse
9047db96d56Sopenharmony_ci   event.
9057db96d56Sopenharmony_ci
9067db96d56Sopenharmony_ci   .. versionchanged:: 3.10
9077db96d56Sopenharmony_ci      Previously it returned ``1`` or ``0`` instead of ``True`` or ``False``.
9087db96d56Sopenharmony_ci
9097db96d56Sopenharmony_ci
9107db96d56Sopenharmony_ci.. attribute:: window.encoding
9117db96d56Sopenharmony_ci
9127db96d56Sopenharmony_ci   Encoding used to encode method arguments (Unicode strings and characters).
9137db96d56Sopenharmony_ci   The encoding attribute is inherited from the parent window when a subwindow
9147db96d56Sopenharmony_ci   is created, for example with :meth:`window.subwin`.
9157db96d56Sopenharmony_ci   By default, current locale encoding is used (see :func:`locale.getencoding`).
9167db96d56Sopenharmony_ci
9177db96d56Sopenharmony_ci   .. versionadded:: 3.3
9187db96d56Sopenharmony_ci
9197db96d56Sopenharmony_ci
9207db96d56Sopenharmony_ci.. method:: window.erase()
9217db96d56Sopenharmony_ci
9227db96d56Sopenharmony_ci   Clear the window.
9237db96d56Sopenharmony_ci
9247db96d56Sopenharmony_ci
9257db96d56Sopenharmony_ci.. method:: window.getbegyx()
9267db96d56Sopenharmony_ci
9277db96d56Sopenharmony_ci   Return a tuple ``(y, x)`` of co-ordinates of upper-left corner.
9287db96d56Sopenharmony_ci
9297db96d56Sopenharmony_ci
9307db96d56Sopenharmony_ci.. method:: window.getbkgd()
9317db96d56Sopenharmony_ci
9327db96d56Sopenharmony_ci   Return the given window's current background character/attribute pair.
9337db96d56Sopenharmony_ci
9347db96d56Sopenharmony_ci
9357db96d56Sopenharmony_ci.. method:: window.getch([y, x])
9367db96d56Sopenharmony_ci
9377db96d56Sopenharmony_ci   Get a character. Note that the integer returned does *not* have to be in ASCII
9387db96d56Sopenharmony_ci   range: function keys, keypad keys and so on are represented by numbers higher
9397db96d56Sopenharmony_ci   than 255.  In no-delay mode, return ``-1`` if there is no input, otherwise
9407db96d56Sopenharmony_ci   wait until a key is pressed.
9417db96d56Sopenharmony_ci
9427db96d56Sopenharmony_ci
9437db96d56Sopenharmony_ci.. method:: window.get_wch([y, x])
9447db96d56Sopenharmony_ci
9457db96d56Sopenharmony_ci   Get a wide character. Return a character for most keys, or an integer for
9467db96d56Sopenharmony_ci   function keys, keypad keys, and other special keys.
9477db96d56Sopenharmony_ci   In no-delay mode, raise an exception if there is no input.
9487db96d56Sopenharmony_ci
9497db96d56Sopenharmony_ci   .. versionadded:: 3.3
9507db96d56Sopenharmony_ci
9517db96d56Sopenharmony_ci
9527db96d56Sopenharmony_ci.. method:: window.getkey([y, x])
9537db96d56Sopenharmony_ci
9547db96d56Sopenharmony_ci   Get a character, returning a string instead of an integer, as :meth:`getch`
9557db96d56Sopenharmony_ci   does. Function keys, keypad keys and other special keys return a multibyte
9567db96d56Sopenharmony_ci   string containing the key name.  In no-delay mode, raise an exception if
9577db96d56Sopenharmony_ci   there is no input.
9587db96d56Sopenharmony_ci
9597db96d56Sopenharmony_ci
9607db96d56Sopenharmony_ci.. method:: window.getmaxyx()
9617db96d56Sopenharmony_ci
9627db96d56Sopenharmony_ci   Return a tuple ``(y, x)`` of the height and width of the window.
9637db96d56Sopenharmony_ci
9647db96d56Sopenharmony_ci
9657db96d56Sopenharmony_ci.. method:: window.getparyx()
9667db96d56Sopenharmony_ci
9677db96d56Sopenharmony_ci   Return the beginning coordinates of this window relative to its parent window
9687db96d56Sopenharmony_ci   as a tuple ``(y, x)``.  Return ``(-1, -1)`` if this window has no
9697db96d56Sopenharmony_ci   parent.
9707db96d56Sopenharmony_ci
9717db96d56Sopenharmony_ci
9727db96d56Sopenharmony_ci.. method:: window.getstr()
9737db96d56Sopenharmony_ci            window.getstr(n)
9747db96d56Sopenharmony_ci            window.getstr(y, x)
9757db96d56Sopenharmony_ci            window.getstr(y, x, n)
9767db96d56Sopenharmony_ci
9777db96d56Sopenharmony_ci   Read a bytes object from the user, with primitive line editing capacity.
9787db96d56Sopenharmony_ci
9797db96d56Sopenharmony_ci
9807db96d56Sopenharmony_ci.. method:: window.getyx()
9817db96d56Sopenharmony_ci
9827db96d56Sopenharmony_ci   Return a tuple ``(y, x)`` of current cursor position  relative to the window's
9837db96d56Sopenharmony_ci   upper-left corner.
9847db96d56Sopenharmony_ci
9857db96d56Sopenharmony_ci
9867db96d56Sopenharmony_ci.. method:: window.hline(ch, n)
9877db96d56Sopenharmony_ci            window.hline(y, x, ch, n)
9887db96d56Sopenharmony_ci
9897db96d56Sopenharmony_ci   Display a horizontal line starting at ``(y, x)`` with length *n* consisting of
9907db96d56Sopenharmony_ci   the character *ch*.
9917db96d56Sopenharmony_ci
9927db96d56Sopenharmony_ci
9937db96d56Sopenharmony_ci.. method:: window.idcok(flag)
9947db96d56Sopenharmony_ci
9957db96d56Sopenharmony_ci   If *flag* is ``False``, curses no longer considers using the hardware insert/delete
9967db96d56Sopenharmony_ci   character feature of the terminal; if *flag* is ``True``, use of character insertion
9977db96d56Sopenharmony_ci   and deletion is enabled.  When curses is first initialized, use of character
9987db96d56Sopenharmony_ci   insert/delete is enabled by default.
9997db96d56Sopenharmony_ci
10007db96d56Sopenharmony_ci
10017db96d56Sopenharmony_ci.. method:: window.idlok(flag)
10027db96d56Sopenharmony_ci
10037db96d56Sopenharmony_ci   If *flag* is ``True``, :mod:`curses` will try and use hardware line
10047db96d56Sopenharmony_ci   editing facilities. Otherwise, line insertion/deletion are disabled.
10057db96d56Sopenharmony_ci
10067db96d56Sopenharmony_ci
10077db96d56Sopenharmony_ci.. method:: window.immedok(flag)
10087db96d56Sopenharmony_ci
10097db96d56Sopenharmony_ci   If *flag* is ``True``, any change in the window image automatically causes the
10107db96d56Sopenharmony_ci   window to be refreshed; you no longer have to call :meth:`refresh` yourself.
10117db96d56Sopenharmony_ci   However, it may degrade performance considerably, due to repeated calls to
10127db96d56Sopenharmony_ci   wrefresh.  This option is disabled by default.
10137db96d56Sopenharmony_ci
10147db96d56Sopenharmony_ci
10157db96d56Sopenharmony_ci.. method:: window.inch([y, x])
10167db96d56Sopenharmony_ci
10177db96d56Sopenharmony_ci   Return the character at the given position in the window. The bottom 8 bits are
10187db96d56Sopenharmony_ci   the character proper, and upper bits are the attributes.
10197db96d56Sopenharmony_ci
10207db96d56Sopenharmony_ci
10217db96d56Sopenharmony_ci.. method:: window.insch(ch[, attr])
10227db96d56Sopenharmony_ci            window.insch(y, x, ch[, attr])
10237db96d56Sopenharmony_ci
10247db96d56Sopenharmony_ci   Paint character *ch* at ``(y, x)`` with attributes *attr*, moving the line from
10257db96d56Sopenharmony_ci   position *x* right by one character.
10267db96d56Sopenharmony_ci
10277db96d56Sopenharmony_ci
10287db96d56Sopenharmony_ci.. method:: window.insdelln(nlines)
10297db96d56Sopenharmony_ci
10307db96d56Sopenharmony_ci   Insert *nlines* lines into the specified window above the current line.  The
10317db96d56Sopenharmony_ci   *nlines* bottom lines are lost.  For negative *nlines*, delete *nlines* lines
10327db96d56Sopenharmony_ci   starting with the one under the cursor, and move the remaining lines up.  The
10337db96d56Sopenharmony_ci   bottom *nlines* lines are cleared.  The current cursor position remains the
10347db96d56Sopenharmony_ci   same.
10357db96d56Sopenharmony_ci
10367db96d56Sopenharmony_ci
10377db96d56Sopenharmony_ci.. method:: window.insertln()
10387db96d56Sopenharmony_ci
10397db96d56Sopenharmony_ci   Insert a blank line under the cursor. All following lines are moved down by one
10407db96d56Sopenharmony_ci   line.
10417db96d56Sopenharmony_ci
10427db96d56Sopenharmony_ci
10437db96d56Sopenharmony_ci.. method:: window.insnstr(str, n[, attr])
10447db96d56Sopenharmony_ci            window.insnstr(y, x, str, n[, attr])
10457db96d56Sopenharmony_ci
10467db96d56Sopenharmony_ci   Insert a character string (as many characters as will fit on the line) before
10477db96d56Sopenharmony_ci   the character under the cursor, up to *n* characters.   If *n* is zero or
10487db96d56Sopenharmony_ci   negative, the entire string is inserted. All characters to the right of the
10497db96d56Sopenharmony_ci   cursor are shifted right, with the rightmost characters on the line being lost.
10507db96d56Sopenharmony_ci   The cursor position does not change (after moving to *y*, *x*, if specified).
10517db96d56Sopenharmony_ci
10527db96d56Sopenharmony_ci
10537db96d56Sopenharmony_ci.. method:: window.insstr(str[, attr])
10547db96d56Sopenharmony_ci            window.insstr(y, x, str[, attr])
10557db96d56Sopenharmony_ci
10567db96d56Sopenharmony_ci   Insert a character string (as many characters as will fit on the line) before
10577db96d56Sopenharmony_ci   the character under the cursor.  All characters to the right of the cursor are
10587db96d56Sopenharmony_ci   shifted right, with the rightmost characters on the line being lost.  The cursor
10597db96d56Sopenharmony_ci   position does not change (after moving to *y*, *x*, if specified).
10607db96d56Sopenharmony_ci
10617db96d56Sopenharmony_ci
10627db96d56Sopenharmony_ci.. method:: window.instr([n])
10637db96d56Sopenharmony_ci            window.instr(y, x[, n])
10647db96d56Sopenharmony_ci
10657db96d56Sopenharmony_ci   Return a bytes object of characters, extracted from the window starting at the
10667db96d56Sopenharmony_ci   current cursor position, or at *y*, *x* if specified. Attributes are stripped
10677db96d56Sopenharmony_ci   from the characters.  If *n* is specified, :meth:`instr` returns a string
10687db96d56Sopenharmony_ci   at most *n* characters long (exclusive of the trailing NUL).
10697db96d56Sopenharmony_ci
10707db96d56Sopenharmony_ci
10717db96d56Sopenharmony_ci.. method:: window.is_linetouched(line)
10727db96d56Sopenharmony_ci
10737db96d56Sopenharmony_ci   Return ``True`` if the specified line was modified since the last call to
10747db96d56Sopenharmony_ci   :meth:`refresh`; otherwise return ``False``.  Raise a :exc:`curses.error`
10757db96d56Sopenharmony_ci   exception if *line* is not valid for the given window.
10767db96d56Sopenharmony_ci
10777db96d56Sopenharmony_ci
10787db96d56Sopenharmony_ci.. method:: window.is_wintouched()
10797db96d56Sopenharmony_ci
10807db96d56Sopenharmony_ci   Return ``True`` if the specified window was modified since the last call to
10817db96d56Sopenharmony_ci   :meth:`refresh`; otherwise return ``False``.
10827db96d56Sopenharmony_ci
10837db96d56Sopenharmony_ci
10847db96d56Sopenharmony_ci.. method:: window.keypad(flag)
10857db96d56Sopenharmony_ci
10867db96d56Sopenharmony_ci   If *flag* is ``True``, escape sequences generated by some keys (keypad,  function keys)
10877db96d56Sopenharmony_ci   will be interpreted by :mod:`curses`. If *flag* is ``False``, escape sequences will be
10887db96d56Sopenharmony_ci   left as is in the input stream.
10897db96d56Sopenharmony_ci
10907db96d56Sopenharmony_ci
10917db96d56Sopenharmony_ci.. method:: window.leaveok(flag)
10927db96d56Sopenharmony_ci
10937db96d56Sopenharmony_ci   If *flag* is ``True``, cursor is left where it is on update, instead of being at "cursor
10947db96d56Sopenharmony_ci   position."  This reduces cursor movement where possible. If possible the cursor
10957db96d56Sopenharmony_ci   will be made invisible.
10967db96d56Sopenharmony_ci
10977db96d56Sopenharmony_ci   If *flag* is ``False``, cursor will always be at "cursor position" after an update.
10987db96d56Sopenharmony_ci
10997db96d56Sopenharmony_ci
11007db96d56Sopenharmony_ci.. method:: window.move(new_y, new_x)
11017db96d56Sopenharmony_ci
11027db96d56Sopenharmony_ci   Move cursor to ``(new_y, new_x)``.
11037db96d56Sopenharmony_ci
11047db96d56Sopenharmony_ci
11057db96d56Sopenharmony_ci.. method:: window.mvderwin(y, x)
11067db96d56Sopenharmony_ci
11077db96d56Sopenharmony_ci   Move the window inside its parent window.  The screen-relative parameters of
11087db96d56Sopenharmony_ci   the window are not changed.  This routine is used to display different parts of
11097db96d56Sopenharmony_ci   the parent window at the same physical position on the screen.
11107db96d56Sopenharmony_ci
11117db96d56Sopenharmony_ci
11127db96d56Sopenharmony_ci.. method:: window.mvwin(new_y, new_x)
11137db96d56Sopenharmony_ci
11147db96d56Sopenharmony_ci   Move the window so its upper-left corner is at ``(new_y, new_x)``.
11157db96d56Sopenharmony_ci
11167db96d56Sopenharmony_ci
11177db96d56Sopenharmony_ci.. method:: window.nodelay(flag)
11187db96d56Sopenharmony_ci
11197db96d56Sopenharmony_ci   If *flag* is ``True``, :meth:`getch` will be non-blocking.
11207db96d56Sopenharmony_ci
11217db96d56Sopenharmony_ci
11227db96d56Sopenharmony_ci.. method:: window.notimeout(flag)
11237db96d56Sopenharmony_ci
11247db96d56Sopenharmony_ci   If *flag* is ``True``, escape sequences will not be timed out.
11257db96d56Sopenharmony_ci
11267db96d56Sopenharmony_ci   If *flag* is ``False``, after a few milliseconds, an escape sequence will not be
11277db96d56Sopenharmony_ci   interpreted, and will be left in the input stream as is.
11287db96d56Sopenharmony_ci
11297db96d56Sopenharmony_ci
11307db96d56Sopenharmony_ci.. method:: window.noutrefresh()
11317db96d56Sopenharmony_ci
11327db96d56Sopenharmony_ci   Mark for refresh but wait.  This function updates the data structure
11337db96d56Sopenharmony_ci   representing the desired state of the window, but does not force an update of
11347db96d56Sopenharmony_ci   the physical screen.  To accomplish that, call  :func:`doupdate`.
11357db96d56Sopenharmony_ci
11367db96d56Sopenharmony_ci
11377db96d56Sopenharmony_ci.. method:: window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])
11387db96d56Sopenharmony_ci
11397db96d56Sopenharmony_ci   Overlay the window on top of *destwin*. The windows need not be the same size,
11407db96d56Sopenharmony_ci   only the overlapping region is copied. This copy is non-destructive, which means
11417db96d56Sopenharmony_ci   that the current background character does not overwrite the old contents of
11427db96d56Sopenharmony_ci   *destwin*.
11437db96d56Sopenharmony_ci
11447db96d56Sopenharmony_ci   To get fine-grained control over the copied region, the second form of
11457db96d56Sopenharmony_ci   :meth:`overlay` can be used. *sminrow* and *smincol* are the upper-left
11467db96d56Sopenharmony_ci   coordinates of the source window, and the other variables mark a rectangle in
11477db96d56Sopenharmony_ci   the destination window.
11487db96d56Sopenharmony_ci
11497db96d56Sopenharmony_ci
11507db96d56Sopenharmony_ci.. method:: window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])
11517db96d56Sopenharmony_ci
11527db96d56Sopenharmony_ci   Overwrite the window on top of *destwin*. The windows need not be the same size,
11537db96d56Sopenharmony_ci   in which case only the overlapping region is copied. This copy is destructive,
11547db96d56Sopenharmony_ci   which means that the current background character overwrites the old contents of
11557db96d56Sopenharmony_ci   *destwin*.
11567db96d56Sopenharmony_ci
11577db96d56Sopenharmony_ci   To get fine-grained control over the copied region, the second form of
11587db96d56Sopenharmony_ci   :meth:`overwrite` can be used. *sminrow* and *smincol* are the upper-left
11597db96d56Sopenharmony_ci   coordinates of the source window, the other variables mark a rectangle in the
11607db96d56Sopenharmony_ci   destination window.
11617db96d56Sopenharmony_ci
11627db96d56Sopenharmony_ci
11637db96d56Sopenharmony_ci.. method:: window.putwin(file)
11647db96d56Sopenharmony_ci
11657db96d56Sopenharmony_ci   Write all data associated with the window into the provided file object.  This
11667db96d56Sopenharmony_ci   information can be later retrieved using the :func:`getwin` function.
11677db96d56Sopenharmony_ci
11687db96d56Sopenharmony_ci
11697db96d56Sopenharmony_ci.. method:: window.redrawln(beg, num)
11707db96d56Sopenharmony_ci
11717db96d56Sopenharmony_ci   Indicate that the *num* screen lines, starting at line *beg*, are corrupted and
11727db96d56Sopenharmony_ci   should be completely redrawn on the next :meth:`refresh` call.
11737db96d56Sopenharmony_ci
11747db96d56Sopenharmony_ci
11757db96d56Sopenharmony_ci.. method:: window.redrawwin()
11767db96d56Sopenharmony_ci
11777db96d56Sopenharmony_ci   Touch the entire window, causing it to be completely redrawn on the next
11787db96d56Sopenharmony_ci   :meth:`refresh` call.
11797db96d56Sopenharmony_ci
11807db96d56Sopenharmony_ci
11817db96d56Sopenharmony_ci.. method:: window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])
11827db96d56Sopenharmony_ci
11837db96d56Sopenharmony_ci   Update the display immediately (sync actual screen with previous
11847db96d56Sopenharmony_ci   drawing/deleting methods).
11857db96d56Sopenharmony_ci
11867db96d56Sopenharmony_ci   The 6 optional arguments can only be specified when the window is a pad created
11877db96d56Sopenharmony_ci   with :func:`newpad`.  The additional parameters are needed to indicate what part
11887db96d56Sopenharmony_ci   of the pad and screen are involved. *pminrow* and *pmincol* specify the upper
11897db96d56Sopenharmony_ci   left-hand corner of the rectangle to be displayed in the pad.  *sminrow*,
11907db96d56Sopenharmony_ci   *smincol*, *smaxrow*, and *smaxcol* specify the edges of the rectangle to be
11917db96d56Sopenharmony_ci   displayed on the screen.  The lower right-hand corner of the rectangle to be
11927db96d56Sopenharmony_ci   displayed in the pad is calculated from the screen coordinates, since the
11937db96d56Sopenharmony_ci   rectangles must be the same size.  Both rectangles must be entirely contained
11947db96d56Sopenharmony_ci   within their respective structures.  Negative values of *pminrow*, *pmincol*,
11957db96d56Sopenharmony_ci   *sminrow*, or *smincol* are treated as if they were zero.
11967db96d56Sopenharmony_ci
11977db96d56Sopenharmony_ci
11987db96d56Sopenharmony_ci.. method:: window.resize(nlines, ncols)
11997db96d56Sopenharmony_ci
12007db96d56Sopenharmony_ci   Reallocate storage for a curses window to adjust its dimensions to the
12017db96d56Sopenharmony_ci   specified values.  If either dimension is larger than the current values, the
12027db96d56Sopenharmony_ci   window's data is filled with blanks that have the current background
12037db96d56Sopenharmony_ci   rendition (as set by :meth:`bkgdset`) merged into them.
12047db96d56Sopenharmony_ci
12057db96d56Sopenharmony_ci
12067db96d56Sopenharmony_ci.. method:: window.scroll([lines=1])
12077db96d56Sopenharmony_ci
12087db96d56Sopenharmony_ci   Scroll the screen or scrolling region upward by *lines* lines.
12097db96d56Sopenharmony_ci
12107db96d56Sopenharmony_ci
12117db96d56Sopenharmony_ci.. method:: window.scrollok(flag)
12127db96d56Sopenharmony_ci
12137db96d56Sopenharmony_ci   Control what happens when the cursor of a window is moved off the edge of the
12147db96d56Sopenharmony_ci   window or scrolling region, either as a result of a newline action on the bottom
12157db96d56Sopenharmony_ci   line, or typing the last character of the last line.  If *flag* is ``False``, the
12167db96d56Sopenharmony_ci   cursor is left on the bottom line.  If *flag* is ``True``, the window is scrolled up
12177db96d56Sopenharmony_ci   one line.  Note that in order to get the physical scrolling effect on the
12187db96d56Sopenharmony_ci   terminal, it is also necessary to call :meth:`idlok`.
12197db96d56Sopenharmony_ci
12207db96d56Sopenharmony_ci
12217db96d56Sopenharmony_ci.. method:: window.setscrreg(top, bottom)
12227db96d56Sopenharmony_ci
12237db96d56Sopenharmony_ci   Set the scrolling region from line *top* to line *bottom*. All scrolling actions
12247db96d56Sopenharmony_ci   will take place in this region.
12257db96d56Sopenharmony_ci
12267db96d56Sopenharmony_ci
12277db96d56Sopenharmony_ci.. method:: window.standend()
12287db96d56Sopenharmony_ci
12297db96d56Sopenharmony_ci   Turn off the standout attribute.  On some terminals this has the side effect of
12307db96d56Sopenharmony_ci   turning off all attributes.
12317db96d56Sopenharmony_ci
12327db96d56Sopenharmony_ci
12337db96d56Sopenharmony_ci.. method:: window.standout()
12347db96d56Sopenharmony_ci
12357db96d56Sopenharmony_ci   Turn on attribute *A_STANDOUT*.
12367db96d56Sopenharmony_ci
12377db96d56Sopenharmony_ci
12387db96d56Sopenharmony_ci.. method:: window.subpad(begin_y, begin_x)
12397db96d56Sopenharmony_ci            window.subpad(nlines, ncols, begin_y, begin_x)
12407db96d56Sopenharmony_ci
12417db96d56Sopenharmony_ci   Return a sub-window, whose upper-left corner is at ``(begin_y, begin_x)``, and
12427db96d56Sopenharmony_ci   whose width/height is *ncols*/*nlines*.
12437db96d56Sopenharmony_ci
12447db96d56Sopenharmony_ci
12457db96d56Sopenharmony_ci.. method:: window.subwin(begin_y, begin_x)
12467db96d56Sopenharmony_ci            window.subwin(nlines, ncols, begin_y, begin_x)
12477db96d56Sopenharmony_ci
12487db96d56Sopenharmony_ci   Return a sub-window, whose upper-left corner is at ``(begin_y, begin_x)``, and
12497db96d56Sopenharmony_ci   whose width/height is *ncols*/*nlines*.
12507db96d56Sopenharmony_ci
12517db96d56Sopenharmony_ci   By default, the sub-window will extend from the specified position to the lower
12527db96d56Sopenharmony_ci   right corner of the window.
12537db96d56Sopenharmony_ci
12547db96d56Sopenharmony_ci
12557db96d56Sopenharmony_ci.. method:: window.syncdown()
12567db96d56Sopenharmony_ci
12577db96d56Sopenharmony_ci   Touch each location in the window that has been touched in any of its ancestor
12587db96d56Sopenharmony_ci   windows.  This routine is called by :meth:`refresh`, so it should almost never
12597db96d56Sopenharmony_ci   be necessary to call it manually.
12607db96d56Sopenharmony_ci
12617db96d56Sopenharmony_ci
12627db96d56Sopenharmony_ci.. method:: window.syncok(flag)
12637db96d56Sopenharmony_ci
12647db96d56Sopenharmony_ci   If *flag* is ``True``, then :meth:`syncup` is called automatically
12657db96d56Sopenharmony_ci   whenever there is a change in the window.
12667db96d56Sopenharmony_ci
12677db96d56Sopenharmony_ci
12687db96d56Sopenharmony_ci.. method:: window.syncup()
12697db96d56Sopenharmony_ci
12707db96d56Sopenharmony_ci   Touch all locations in ancestors of the window that have been changed in  the
12717db96d56Sopenharmony_ci   window.
12727db96d56Sopenharmony_ci
12737db96d56Sopenharmony_ci
12747db96d56Sopenharmony_ci.. method:: window.timeout(delay)
12757db96d56Sopenharmony_ci
12767db96d56Sopenharmony_ci   Set blocking or non-blocking read behavior for the window.  If *delay* is
12777db96d56Sopenharmony_ci   negative, blocking read is used (which will wait indefinitely for input).  If
12787db96d56Sopenharmony_ci   *delay* is zero, then non-blocking read is used, and :meth:`getch` will
12797db96d56Sopenharmony_ci   return ``-1`` if no input is waiting.  If *delay* is positive, then
12807db96d56Sopenharmony_ci   :meth:`getch` will block for *delay* milliseconds, and return ``-1`` if there is
12817db96d56Sopenharmony_ci   still no input at the end of that time.
12827db96d56Sopenharmony_ci
12837db96d56Sopenharmony_ci
12847db96d56Sopenharmony_ci.. method:: window.touchline(start, count[, changed])
12857db96d56Sopenharmony_ci
12867db96d56Sopenharmony_ci   Pretend *count* lines have been changed, starting with line *start*.  If
12877db96d56Sopenharmony_ci   *changed* is supplied, it specifies whether the affected lines are marked as
12887db96d56Sopenharmony_ci   having been changed (*changed*\ ``=True``) or unchanged (*changed*\ ``=False``).
12897db96d56Sopenharmony_ci
12907db96d56Sopenharmony_ci
12917db96d56Sopenharmony_ci.. method:: window.touchwin()
12927db96d56Sopenharmony_ci
12937db96d56Sopenharmony_ci   Pretend the whole window has been changed, for purposes of drawing
12947db96d56Sopenharmony_ci   optimizations.
12957db96d56Sopenharmony_ci
12967db96d56Sopenharmony_ci
12977db96d56Sopenharmony_ci.. method:: window.untouchwin()
12987db96d56Sopenharmony_ci
12997db96d56Sopenharmony_ci   Mark all lines in  the  window  as unchanged since the last call to
13007db96d56Sopenharmony_ci   :meth:`refresh`.
13017db96d56Sopenharmony_ci
13027db96d56Sopenharmony_ci
13037db96d56Sopenharmony_ci.. method:: window.vline(ch, n[, attr])
13047db96d56Sopenharmony_ci            window.vline(y, x, ch, n[, attr])
13057db96d56Sopenharmony_ci
13067db96d56Sopenharmony_ci   Display a vertical line starting at ``(y, x)`` with length *n* consisting of the
13077db96d56Sopenharmony_ci   character *ch* with attributes *attr*.
13087db96d56Sopenharmony_ci
13097db96d56Sopenharmony_ci
13107db96d56Sopenharmony_ciConstants
13117db96d56Sopenharmony_ci---------
13127db96d56Sopenharmony_ci
13137db96d56Sopenharmony_ciThe :mod:`curses` module defines the following data members:
13147db96d56Sopenharmony_ci
13157db96d56Sopenharmony_ci
13167db96d56Sopenharmony_ci.. data:: ERR
13177db96d56Sopenharmony_ci
13187db96d56Sopenharmony_ci   Some curses routines  that  return  an integer, such as :meth:`~window.getch`, return
13197db96d56Sopenharmony_ci   :const:`ERR` upon failure.
13207db96d56Sopenharmony_ci
13217db96d56Sopenharmony_ci
13227db96d56Sopenharmony_ci.. data:: OK
13237db96d56Sopenharmony_ci
13247db96d56Sopenharmony_ci   Some curses routines  that  return  an integer, such as  :func:`napms`, return
13257db96d56Sopenharmony_ci   :const:`OK` upon success.
13267db96d56Sopenharmony_ci
13277db96d56Sopenharmony_ci
13287db96d56Sopenharmony_ci.. data:: version
13297db96d56Sopenharmony_ci.. data:: __version__
13307db96d56Sopenharmony_ci
13317db96d56Sopenharmony_ci   A bytes object representing the current version of the module.
13327db96d56Sopenharmony_ci
13337db96d56Sopenharmony_ci
13347db96d56Sopenharmony_ci.. data:: ncurses_version
13357db96d56Sopenharmony_ci
13367db96d56Sopenharmony_ci   A named tuple containing the three components of the ncurses library
13377db96d56Sopenharmony_ci   version: *major*, *minor*, and *patch*.  All values are integers.  The
13387db96d56Sopenharmony_ci   components can also be accessed by name,  so ``curses.ncurses_version[0]``
13397db96d56Sopenharmony_ci   is equivalent to ``curses.ncurses_version.major`` and so on.
13407db96d56Sopenharmony_ci
13417db96d56Sopenharmony_ci   Availability: if the ncurses library is used.
13427db96d56Sopenharmony_ci
13437db96d56Sopenharmony_ci   .. versionadded:: 3.8
13447db96d56Sopenharmony_ci
13457db96d56Sopenharmony_ci.. data:: COLORS
13467db96d56Sopenharmony_ci
13477db96d56Sopenharmony_ci   The maximum number of colors the terminal can support.
13487db96d56Sopenharmony_ci
13497db96d56Sopenharmony_ci.. data:: COLOR_PAIRS
13507db96d56Sopenharmony_ci
13517db96d56Sopenharmony_ci   The maximum number of color pairs the terminal can support.
13527db96d56Sopenharmony_ci
13537db96d56Sopenharmony_ciSome constants are available to specify character cell attributes.
13547db96d56Sopenharmony_ciThe exact constants available are system dependent.
13557db96d56Sopenharmony_ci
13567db96d56Sopenharmony_ci+------------------------+-------------------------------+
13577db96d56Sopenharmony_ci| Attribute              | Meaning                       |
13587db96d56Sopenharmony_ci+========================+===============================+
13597db96d56Sopenharmony_ci| .. data:: A_ALTCHARSET | Alternate character set mode  |
13607db96d56Sopenharmony_ci+------------------------+-------------------------------+
13617db96d56Sopenharmony_ci| .. data:: A_BLINK      | Blink mode                    |
13627db96d56Sopenharmony_ci+------------------------+-------------------------------+
13637db96d56Sopenharmony_ci| .. data:: A_BOLD       | Bold mode                     |
13647db96d56Sopenharmony_ci+------------------------+-------------------------------+
13657db96d56Sopenharmony_ci| .. data:: A_DIM        | Dim mode                      |
13667db96d56Sopenharmony_ci+------------------------+-------------------------------+
13677db96d56Sopenharmony_ci| .. data:: A_INVIS      | Invisible or blank mode       |
13687db96d56Sopenharmony_ci+------------------------+-------------------------------+
13697db96d56Sopenharmony_ci| .. data:: A_ITALIC     | Italic mode                   |
13707db96d56Sopenharmony_ci+------------------------+-------------------------------+
13717db96d56Sopenharmony_ci| .. data:: A_NORMAL     | Normal attribute              |
13727db96d56Sopenharmony_ci+------------------------+-------------------------------+
13737db96d56Sopenharmony_ci| .. data:: A_PROTECT    | Protected mode                |
13747db96d56Sopenharmony_ci+------------------------+-------------------------------+
13757db96d56Sopenharmony_ci| .. data:: A_REVERSE    | Reverse background and        |
13767db96d56Sopenharmony_ci|                        | foreground colors             |
13777db96d56Sopenharmony_ci+------------------------+-------------------------------+
13787db96d56Sopenharmony_ci| .. data:: A_STANDOUT   | Standout mode                 |
13797db96d56Sopenharmony_ci+------------------------+-------------------------------+
13807db96d56Sopenharmony_ci| .. data:: A_UNDERLINE  | Underline mode                |
13817db96d56Sopenharmony_ci+------------------------+-------------------------------+
13827db96d56Sopenharmony_ci| .. data:: A_HORIZONTAL | Horizontal highlight          |
13837db96d56Sopenharmony_ci+------------------------+-------------------------------+
13847db96d56Sopenharmony_ci| .. data:: A_LEFT       | Left highlight                |
13857db96d56Sopenharmony_ci+------------------------+-------------------------------+
13867db96d56Sopenharmony_ci| .. data:: A_LOW        | Low highlight                 |
13877db96d56Sopenharmony_ci+------------------------+-------------------------------+
13887db96d56Sopenharmony_ci| .. data:: A_RIGHT      | Right highlight               |
13897db96d56Sopenharmony_ci+------------------------+-------------------------------+
13907db96d56Sopenharmony_ci| .. data:: A_TOP        | Top highlight                 |
13917db96d56Sopenharmony_ci+------------------------+-------------------------------+
13927db96d56Sopenharmony_ci| .. data:: A_VERTICAL   | Vertical highlight            |
13937db96d56Sopenharmony_ci+------------------------+-------------------------------+
13947db96d56Sopenharmony_ci
13957db96d56Sopenharmony_ci.. versionadded:: 3.7
13967db96d56Sopenharmony_ci   ``A_ITALIC`` was added.
13977db96d56Sopenharmony_ci
13987db96d56Sopenharmony_ciSeveral constants are available to extract corresponding attributes returned
13997db96d56Sopenharmony_ciby some methods.
14007db96d56Sopenharmony_ci
14017db96d56Sopenharmony_ci+-------------------------+-------------------------------+
14027db96d56Sopenharmony_ci| Bit-mask                | Meaning                       |
14037db96d56Sopenharmony_ci+=========================+===============================+
14047db96d56Sopenharmony_ci|  .. data:: A_ATTRIBUTES | Bit-mask to extract           |
14057db96d56Sopenharmony_ci|                         | attributes                    |
14067db96d56Sopenharmony_ci+-------------------------+-------------------------------+
14077db96d56Sopenharmony_ci|  .. data:: A_CHARTEXT   | Bit-mask to extract a         |
14087db96d56Sopenharmony_ci|                         | character                     |
14097db96d56Sopenharmony_ci+-------------------------+-------------------------------+
14107db96d56Sopenharmony_ci|  .. data:: A_COLOR      | Bit-mask to extract           |
14117db96d56Sopenharmony_ci|                         | color-pair field information  |
14127db96d56Sopenharmony_ci+-------------------------+-------------------------------+
14137db96d56Sopenharmony_ci
14147db96d56Sopenharmony_ciKeys are referred to by integer constants with names starting with  ``KEY_``.
14157db96d56Sopenharmony_ciThe exact keycaps available are system dependent.
14167db96d56Sopenharmony_ci
14177db96d56Sopenharmony_ci.. XXX this table is far too large! should it be alphabetized?
14187db96d56Sopenharmony_ci
14197db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14207db96d56Sopenharmony_ci| Key constant            | Key                                        |
14217db96d56Sopenharmony_ci+=========================+============================================+
14227db96d56Sopenharmony_ci| .. data:: KEY_MIN       | Minimum key value                          |
14237db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14247db96d56Sopenharmony_ci| .. data:: KEY_BREAK     | Break key (unreliable)                     |
14257db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14267db96d56Sopenharmony_ci| .. data:: KEY_DOWN      | Down-arrow                                 |
14277db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14287db96d56Sopenharmony_ci| .. data:: KEY_UP        | Up-arrow                                   |
14297db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14307db96d56Sopenharmony_ci| .. data:: KEY_LEFT      | Left-arrow                                 |
14317db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14327db96d56Sopenharmony_ci| .. data:: KEY_RIGHT     | Right-arrow                                |
14337db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14347db96d56Sopenharmony_ci| .. data:: KEY_HOME      | Home key (upward+left arrow)               |
14357db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14367db96d56Sopenharmony_ci| .. data:: KEY_BACKSPACE | Backspace (unreliable)                     |
14377db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14387db96d56Sopenharmony_ci| .. data:: KEY_F0        | Function keys.  Up to 64 function keys are |
14397db96d56Sopenharmony_ci|                         | supported.                                 |
14407db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14417db96d56Sopenharmony_ci| .. data:: KEY_Fn        | Value of function key *n*                  |
14427db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14437db96d56Sopenharmony_ci| .. data:: KEY_DL        | Delete line                                |
14447db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14457db96d56Sopenharmony_ci| .. data:: KEY_IL        | Insert line                                |
14467db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14477db96d56Sopenharmony_ci| .. data:: KEY_DC        | Delete character                           |
14487db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14497db96d56Sopenharmony_ci| .. data:: KEY_IC        | Insert char or enter insert mode           |
14507db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14517db96d56Sopenharmony_ci| .. data:: KEY_EIC       | Exit insert char mode                      |
14527db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14537db96d56Sopenharmony_ci| .. data:: KEY_CLEAR     | Clear screen                               |
14547db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14557db96d56Sopenharmony_ci| .. data:: KEY_EOS       | Clear to end of screen                     |
14567db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14577db96d56Sopenharmony_ci| .. data:: KEY_EOL       | Clear to end of line                       |
14587db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14597db96d56Sopenharmony_ci| .. data:: KEY_SF        | Scroll 1 line forward                      |
14607db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14617db96d56Sopenharmony_ci| .. data:: KEY_SR        | Scroll 1 line backward (reverse)           |
14627db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14637db96d56Sopenharmony_ci| .. data:: KEY_NPAGE     | Next page                                  |
14647db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14657db96d56Sopenharmony_ci| .. data:: KEY_PPAGE     | Previous page                              |
14667db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14677db96d56Sopenharmony_ci| .. data:: KEY_STAB      | Set tab                                    |
14687db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14697db96d56Sopenharmony_ci| .. data:: KEY_CTAB      | Clear tab                                  |
14707db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14717db96d56Sopenharmony_ci| .. data:: KEY_CATAB     | Clear all tabs                             |
14727db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14737db96d56Sopenharmony_ci| .. data:: KEY_ENTER     | Enter or send (unreliable)                 |
14747db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14757db96d56Sopenharmony_ci| .. data:: KEY_SRESET    | Soft (partial) reset (unreliable)          |
14767db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14777db96d56Sopenharmony_ci| .. data:: KEY_RESET     | Reset or hard reset (unreliable)           |
14787db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14797db96d56Sopenharmony_ci| .. data:: KEY_PRINT     | Print                                      |
14807db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14817db96d56Sopenharmony_ci| .. data:: KEY_LL        | Home down or bottom (lower left)           |
14827db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14837db96d56Sopenharmony_ci| .. data:: KEY_A1        | Upper left of keypad                       |
14847db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14857db96d56Sopenharmony_ci| .. data:: KEY_A3        | Upper right of keypad                      |
14867db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14877db96d56Sopenharmony_ci| .. data:: KEY_B2        | Center of keypad                           |
14887db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14897db96d56Sopenharmony_ci| .. data:: KEY_C1        | Lower left of keypad                       |
14907db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14917db96d56Sopenharmony_ci| .. data:: KEY_C3        | Lower right of keypad                      |
14927db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14937db96d56Sopenharmony_ci| .. data:: KEY_BTAB      | Back tab                                   |
14947db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14957db96d56Sopenharmony_ci| .. data:: KEY_BEG       | Beg (beginning)                            |
14967db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14977db96d56Sopenharmony_ci| .. data:: KEY_CANCEL    | Cancel                                     |
14987db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
14997db96d56Sopenharmony_ci| .. data:: KEY_CLOSE     | Close                                      |
15007db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15017db96d56Sopenharmony_ci| .. data:: KEY_COMMAND   | Cmd (command)                              |
15027db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15037db96d56Sopenharmony_ci| .. data:: KEY_COPY      | Copy                                       |
15047db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15057db96d56Sopenharmony_ci| .. data:: KEY_CREATE    | Create                                     |
15067db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15077db96d56Sopenharmony_ci| .. data:: KEY_END       | End                                        |
15087db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15097db96d56Sopenharmony_ci| .. data:: KEY_EXIT      | Exit                                       |
15107db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15117db96d56Sopenharmony_ci| .. data:: KEY_FIND      | Find                                       |
15127db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15137db96d56Sopenharmony_ci| .. data:: KEY_HELP      | Help                                       |
15147db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15157db96d56Sopenharmony_ci| .. data:: KEY_MARK      | Mark                                       |
15167db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15177db96d56Sopenharmony_ci| .. data:: KEY_MESSAGE   | Message                                    |
15187db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15197db96d56Sopenharmony_ci| .. data:: KEY_MOVE      | Move                                       |
15207db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15217db96d56Sopenharmony_ci| .. data:: KEY_NEXT      | Next                                       |
15227db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15237db96d56Sopenharmony_ci| .. data:: KEY_OPEN      | Open                                       |
15247db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15257db96d56Sopenharmony_ci| .. data:: KEY_OPTIONS   | Options                                    |
15267db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15277db96d56Sopenharmony_ci| .. data:: KEY_PREVIOUS  | Prev (previous)                            |
15287db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15297db96d56Sopenharmony_ci| .. data:: KEY_REDO      | Redo                                       |
15307db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15317db96d56Sopenharmony_ci| .. data:: KEY_REFERENCE | Ref (reference)                            |
15327db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15337db96d56Sopenharmony_ci| .. data:: KEY_REFRESH   | Refresh                                    |
15347db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15357db96d56Sopenharmony_ci| .. data:: KEY_REPLACE   | Replace                                    |
15367db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15377db96d56Sopenharmony_ci| .. data:: KEY_RESTART   | Restart                                    |
15387db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15397db96d56Sopenharmony_ci| .. data:: KEY_RESUME    | Resume                                     |
15407db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15417db96d56Sopenharmony_ci| .. data:: KEY_SAVE      | Save                                       |
15427db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15437db96d56Sopenharmony_ci| .. data:: KEY_SBEG      | Shifted Beg (beginning)                    |
15447db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15457db96d56Sopenharmony_ci| .. data:: KEY_SCANCEL   | Shifted Cancel                             |
15467db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15477db96d56Sopenharmony_ci| .. data:: KEY_SCOMMAND  | Shifted Command                            |
15487db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15497db96d56Sopenharmony_ci| .. data:: KEY_SCOPY     | Shifted Copy                               |
15507db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15517db96d56Sopenharmony_ci| .. data:: KEY_SCREATE   | Shifted Create                             |
15527db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15537db96d56Sopenharmony_ci| .. data:: KEY_SDC       | Shifted Delete char                        |
15547db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15557db96d56Sopenharmony_ci| .. data:: KEY_SDL       | Shifted Delete line                        |
15567db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15577db96d56Sopenharmony_ci| .. data:: KEY_SELECT    | Select                                     |
15587db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15597db96d56Sopenharmony_ci| .. data:: KEY_SEND      | Shifted End                                |
15607db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15617db96d56Sopenharmony_ci| .. data:: KEY_SEOL      | Shifted Clear line                         |
15627db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15637db96d56Sopenharmony_ci| .. data:: KEY_SEXIT     | Shifted Exit                               |
15647db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15657db96d56Sopenharmony_ci| .. data:: KEY_SFIND     | Shifted Find                               |
15667db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15677db96d56Sopenharmony_ci| .. data:: KEY_SHELP     | Shifted Help                               |
15687db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15697db96d56Sopenharmony_ci| .. data:: KEY_SHOME     | Shifted Home                               |
15707db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15717db96d56Sopenharmony_ci| .. data:: KEY_SIC       | Shifted Input                              |
15727db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15737db96d56Sopenharmony_ci| .. data:: KEY_SLEFT     | Shifted Left arrow                         |
15747db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15757db96d56Sopenharmony_ci| .. data:: KEY_SMESSAGE  | Shifted Message                            |
15767db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15777db96d56Sopenharmony_ci| .. data:: KEY_SMOVE     | Shifted Move                               |
15787db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15797db96d56Sopenharmony_ci| .. data:: KEY_SNEXT     | Shifted Next                               |
15807db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15817db96d56Sopenharmony_ci| .. data:: KEY_SOPTIONS  | Shifted Options                            |
15827db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15837db96d56Sopenharmony_ci| .. data:: KEY_SPREVIOUS | Shifted Prev                               |
15847db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15857db96d56Sopenharmony_ci| .. data:: KEY_SPRINT    | Shifted Print                              |
15867db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15877db96d56Sopenharmony_ci| .. data:: KEY_SREDO     | Shifted Redo                               |
15887db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15897db96d56Sopenharmony_ci| .. data:: KEY_SREPLACE  | Shifted Replace                            |
15907db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15917db96d56Sopenharmony_ci| .. data:: KEY_SRIGHT    | Shifted Right arrow                        |
15927db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15937db96d56Sopenharmony_ci| .. data:: KEY_SRSUME    | Shifted Resume                             |
15947db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15957db96d56Sopenharmony_ci| .. data:: KEY_SSAVE     | Shifted Save                               |
15967db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15977db96d56Sopenharmony_ci| .. data:: KEY_SSUSPEND  | Shifted Suspend                            |
15987db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
15997db96d56Sopenharmony_ci| .. data:: KEY_SUNDO     | Shifted Undo                               |
16007db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16017db96d56Sopenharmony_ci| .. data:: KEY_SUSPEND   | Suspend                                    |
16027db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16037db96d56Sopenharmony_ci| .. data:: KEY_UNDO      | Undo                                       |
16047db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16057db96d56Sopenharmony_ci| .. data:: KEY_MOUSE     | Mouse event has occurred                   |
16067db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16077db96d56Sopenharmony_ci| .. data:: KEY_RESIZE    | Terminal resize event                      |
16087db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16097db96d56Sopenharmony_ci| .. data:: KEY_MAX       | Maximum key value                          |
16107db96d56Sopenharmony_ci+-------------------------+--------------------------------------------+
16117db96d56Sopenharmony_ci
16127db96d56Sopenharmony_ciOn VT100s and their software emulations, such as X terminal emulators, there are
16137db96d56Sopenharmony_cinormally at least four function keys (:const:`KEY_F1 <KEY_Fn>`, :const:`KEY_F2 <KEY_Fn>`,
16147db96d56Sopenharmony_ci:const:`KEY_F3 <KEY_Fn>`, :const:`KEY_F4 <KEY_Fn>`) available, and the arrow keys mapped to
16157db96d56Sopenharmony_ci:const:`KEY_UP`, :const:`KEY_DOWN`, :const:`KEY_LEFT` and :const:`KEY_RIGHT` in
16167db96d56Sopenharmony_cithe obvious way.  If your machine has a PC keyboard, it is safe to expect arrow
16177db96d56Sopenharmony_cikeys and twelve function keys (older PC keyboards may have only ten function
16187db96d56Sopenharmony_cikeys); also, the following keypad mappings are standard:
16197db96d56Sopenharmony_ci
16207db96d56Sopenharmony_ci+------------------+-----------+
16217db96d56Sopenharmony_ci| Keycap           | Constant  |
16227db96d56Sopenharmony_ci+==================+===========+
16237db96d56Sopenharmony_ci| :kbd:`Insert`    | KEY_IC    |
16247db96d56Sopenharmony_ci+------------------+-----------+
16257db96d56Sopenharmony_ci| :kbd:`Delete`    | KEY_DC    |
16267db96d56Sopenharmony_ci+------------------+-----------+
16277db96d56Sopenharmony_ci| :kbd:`Home`      | KEY_HOME  |
16287db96d56Sopenharmony_ci+------------------+-----------+
16297db96d56Sopenharmony_ci| :kbd:`End`       | KEY_END   |
16307db96d56Sopenharmony_ci+------------------+-----------+
16317db96d56Sopenharmony_ci| :kbd:`Page Up`   | KEY_PPAGE |
16327db96d56Sopenharmony_ci+------------------+-----------+
16337db96d56Sopenharmony_ci| :kbd:`Page Down` | KEY_NPAGE |
16347db96d56Sopenharmony_ci+------------------+-----------+
16357db96d56Sopenharmony_ci
16367db96d56Sopenharmony_ciThe following table lists characters from the alternate character set. These are
16377db96d56Sopenharmony_ciinherited from the VT100 terminal, and will generally be  available on software
16387db96d56Sopenharmony_ciemulations such as X terminals.  When there is no graphic available, curses
16397db96d56Sopenharmony_cifalls back on a crude printable ASCII approximation.
16407db96d56Sopenharmony_ci
16417db96d56Sopenharmony_ci.. note::
16427db96d56Sopenharmony_ci
16437db96d56Sopenharmony_ci   These are available only after :func:`initscr` has  been called.
16447db96d56Sopenharmony_ci
16457db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16467db96d56Sopenharmony_ci| ACS code               | Meaning                                  |
16477db96d56Sopenharmony_ci+========================+==========================================+
16487db96d56Sopenharmony_ci| .. data:: ACS_BBSS     | alternate name for upper right corner    |
16497db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16507db96d56Sopenharmony_ci| .. data:: ACS_BLOCK    | solid square block                       |
16517db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16527db96d56Sopenharmony_ci| .. data:: ACS_BOARD    | board of squares                         |
16537db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16547db96d56Sopenharmony_ci| .. data:: ACS_BSBS     | alternate name for horizontal line       |
16557db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16567db96d56Sopenharmony_ci| .. data:: ACS_BSSB     | alternate name for upper left corner     |
16577db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16587db96d56Sopenharmony_ci| .. data:: ACS_BSSS     | alternate name for top tee               |
16597db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16607db96d56Sopenharmony_ci| .. data:: ACS_BTEE     | bottom tee                               |
16617db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16627db96d56Sopenharmony_ci| .. data:: ACS_BULLET   | bullet                                   |
16637db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16647db96d56Sopenharmony_ci| .. data:: ACS_CKBOARD  | checker board (stipple)                  |
16657db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16667db96d56Sopenharmony_ci| .. data:: ACS_DARROW   | arrow pointing down                      |
16677db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16687db96d56Sopenharmony_ci| .. data:: ACS_DEGREE   | degree symbol                            |
16697db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16707db96d56Sopenharmony_ci| .. data:: ACS_DIAMOND  | diamond                                  |
16717db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16727db96d56Sopenharmony_ci| .. data:: ACS_GEQUAL   | greater-than-or-equal-to                 |
16737db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16747db96d56Sopenharmony_ci| .. data:: ACS_HLINE    | horizontal line                          |
16757db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16767db96d56Sopenharmony_ci| .. data:: ACS_LANTERN  | lantern symbol                           |
16777db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16787db96d56Sopenharmony_ci| .. data:: ACS_LARROW   | left arrow                               |
16797db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16807db96d56Sopenharmony_ci| .. data:: ACS_LEQUAL   | less-than-or-equal-to                    |
16817db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16827db96d56Sopenharmony_ci| .. data:: ACS_LLCORNER | lower left-hand corner                   |
16837db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16847db96d56Sopenharmony_ci| .. data:: ACS_LRCORNER | lower right-hand corner                  |
16857db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16867db96d56Sopenharmony_ci| .. data:: ACS_LTEE     | left tee                                 |
16877db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16887db96d56Sopenharmony_ci| .. data:: ACS_NEQUAL   | not-equal sign                           |
16897db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16907db96d56Sopenharmony_ci| .. data:: ACS_PI       | letter pi                                |
16917db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16927db96d56Sopenharmony_ci| .. data:: ACS_PLMINUS  | plus-or-minus sign                       |
16937db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16947db96d56Sopenharmony_ci| .. data:: ACS_PLUS     | big plus sign                            |
16957db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16967db96d56Sopenharmony_ci| .. data:: ACS_RARROW   | right arrow                              |
16977db96d56Sopenharmony_ci+------------------------+------------------------------------------+
16987db96d56Sopenharmony_ci| .. data:: ACS_RTEE     | right tee                                |
16997db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17007db96d56Sopenharmony_ci| .. data:: ACS_S1       | scan line 1                              |
17017db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17027db96d56Sopenharmony_ci| .. data:: ACS_S3       | scan line 3                              |
17037db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17047db96d56Sopenharmony_ci| .. data:: ACS_S7       | scan line 7                              |
17057db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17067db96d56Sopenharmony_ci| .. data:: ACS_S9       | scan line 9                              |
17077db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17087db96d56Sopenharmony_ci| .. data:: ACS_SBBS     | alternate name for lower right corner    |
17097db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17107db96d56Sopenharmony_ci| .. data:: ACS_SBSB     | alternate name for vertical line         |
17117db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17127db96d56Sopenharmony_ci| .. data:: ACS_SBSS     | alternate name for right tee             |
17137db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17147db96d56Sopenharmony_ci| .. data:: ACS_SSBB     | alternate name for lower left corner     |
17157db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17167db96d56Sopenharmony_ci| .. data:: ACS_SSBS     | alternate name for bottom tee            |
17177db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17187db96d56Sopenharmony_ci| .. data:: ACS_SSSB     | alternate name for left tee              |
17197db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17207db96d56Sopenharmony_ci| .. data:: ACS_SSSS     | alternate name for crossover or big plus |
17217db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17227db96d56Sopenharmony_ci| .. data:: ACS_STERLING | pound sterling                           |
17237db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17247db96d56Sopenharmony_ci| .. data:: ACS_TTEE     | top tee                                  |
17257db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17267db96d56Sopenharmony_ci| .. data:: ACS_UARROW   | up arrow                                 |
17277db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17287db96d56Sopenharmony_ci| .. data:: ACS_ULCORNER | upper left corner                        |
17297db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17307db96d56Sopenharmony_ci| .. data:: ACS_URCORNER | upper right corner                       |
17317db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17327db96d56Sopenharmony_ci| .. data:: ACS_VLINE    | vertical line                            |
17337db96d56Sopenharmony_ci+------------------------+------------------------------------------+
17347db96d56Sopenharmony_ci
17357db96d56Sopenharmony_ciThe following table lists mouse button constants used by :meth:`getmouse`:
17367db96d56Sopenharmony_ci
17377db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17387db96d56Sopenharmony_ci| Mouse button constant            | Meaning                                     |
17397db96d56Sopenharmony_ci+==================================+=============================================+
17407db96d56Sopenharmony_ci| .. data:: BUTTONn_PRESSED        | Mouse button *n* pressed                    |
17417db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17427db96d56Sopenharmony_ci| .. data:: BUTTONn_RELEASED       | Mouse button *n* released                   |
17437db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17447db96d56Sopenharmony_ci| .. data:: BUTTONn_CLICKED        | Mouse button *n* clicked                    |
17457db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17467db96d56Sopenharmony_ci| .. data:: BUTTONn_DOUBLE_CLICKED | Mouse button *n* double clicked             |
17477db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17487db96d56Sopenharmony_ci| .. data:: BUTTONn_TRIPLE_CLICKED | Mouse button *n* triple clicked             |
17497db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17507db96d56Sopenharmony_ci| .. data:: BUTTON_SHIFT           | Shift was down during button state change   |
17517db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17527db96d56Sopenharmony_ci| .. data:: BUTTON_CTRL            | Control was down during button state change |
17537db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17547db96d56Sopenharmony_ci| .. data:: BUTTON_ALT             | Control was down during button state change |
17557db96d56Sopenharmony_ci+----------------------------------+---------------------------------------------+
17567db96d56Sopenharmony_ci
17577db96d56Sopenharmony_ci   .. versionchanged:: 3.10
17587db96d56Sopenharmony_ci      The ``BUTTON5_*`` constants are now exposed if they are provided by the
17597db96d56Sopenharmony_ci      underlying curses library.
17607db96d56Sopenharmony_ci
17617db96d56Sopenharmony_ciThe following table lists the predefined colors:
17627db96d56Sopenharmony_ci
17637db96d56Sopenharmony_ci+-------------------------+----------------------------+
17647db96d56Sopenharmony_ci| Constant                | Color                      |
17657db96d56Sopenharmony_ci+=========================+============================+
17667db96d56Sopenharmony_ci| .. data:: COLOR_BLACK   | Black                      |
17677db96d56Sopenharmony_ci+-------------------------+----------------------------+
17687db96d56Sopenharmony_ci| .. data:: COLOR_BLUE    | Blue                       |
17697db96d56Sopenharmony_ci+-------------------------+----------------------------+
17707db96d56Sopenharmony_ci| .. data:: COLOR_CYAN    | Cyan (light greenish blue) |
17717db96d56Sopenharmony_ci+-------------------------+----------------------------+
17727db96d56Sopenharmony_ci| .. data:: COLOR_GREEN   | Green                      |
17737db96d56Sopenharmony_ci+-------------------------+----------------------------+
17747db96d56Sopenharmony_ci| .. data:: COLOR_MAGENTA | Magenta (purplish red)     |
17757db96d56Sopenharmony_ci+-------------------------+----------------------------+
17767db96d56Sopenharmony_ci| .. data:: COLOR_RED     | Red                        |
17777db96d56Sopenharmony_ci+-------------------------+----------------------------+
17787db96d56Sopenharmony_ci| .. data:: COLOR_WHITE   | White                      |
17797db96d56Sopenharmony_ci+-------------------------+----------------------------+
17807db96d56Sopenharmony_ci| .. data:: COLOR_YELLOW  | Yellow                     |
17817db96d56Sopenharmony_ci+-------------------------+----------------------------+
17827db96d56Sopenharmony_ci
17837db96d56Sopenharmony_ci
17847db96d56Sopenharmony_ci:mod:`curses.textpad` --- Text input widget for curses programs
17857db96d56Sopenharmony_ci===============================================================
17867db96d56Sopenharmony_ci
17877db96d56Sopenharmony_ci.. module:: curses.textpad
17887db96d56Sopenharmony_ci   :synopsis: Emacs-like input editing in a curses window.
17897db96d56Sopenharmony_ci.. moduleauthor:: Eric Raymond <esr@thyrsus.com>
17907db96d56Sopenharmony_ci.. sectionauthor:: Eric Raymond <esr@thyrsus.com>
17917db96d56Sopenharmony_ci
17927db96d56Sopenharmony_ci
17937db96d56Sopenharmony_ciThe :mod:`curses.textpad` module provides a :class:`Textbox` class that handles
17947db96d56Sopenharmony_cielementary text editing in a curses window, supporting a set of keybindings
17957db96d56Sopenharmony_ciresembling those of Emacs (thus, also of Netscape Navigator, BBedit 6.x,
17967db96d56Sopenharmony_ciFrameMaker, and many other programs).  The module also provides a
17977db96d56Sopenharmony_cirectangle-drawing function useful for framing text boxes or for other purposes.
17987db96d56Sopenharmony_ci
17997db96d56Sopenharmony_ciThe module :mod:`curses.textpad` defines the following function:
18007db96d56Sopenharmony_ci
18017db96d56Sopenharmony_ci
18027db96d56Sopenharmony_ci.. function:: rectangle(win, uly, ulx, lry, lrx)
18037db96d56Sopenharmony_ci
18047db96d56Sopenharmony_ci   Draw a rectangle.  The first argument must be a window object; the remaining
18057db96d56Sopenharmony_ci   arguments are coordinates relative to that window.  The second and third
18067db96d56Sopenharmony_ci   arguments are the y and x coordinates of the upper left hand corner of the
18077db96d56Sopenharmony_ci   rectangle to be drawn; the fourth and fifth arguments are the y and x
18087db96d56Sopenharmony_ci   coordinates of the lower right hand corner. The rectangle will be drawn using
18097db96d56Sopenharmony_ci   VT100/IBM PC forms characters on terminals that make this possible (including
18107db96d56Sopenharmony_ci   xterm and most other software terminal emulators).  Otherwise it will be drawn
18117db96d56Sopenharmony_ci   with ASCII  dashes, vertical bars, and plus signs.
18127db96d56Sopenharmony_ci
18137db96d56Sopenharmony_ci
18147db96d56Sopenharmony_ci.. _curses-textpad-objects:
18157db96d56Sopenharmony_ci
18167db96d56Sopenharmony_ciTextbox objects
18177db96d56Sopenharmony_ci---------------
18187db96d56Sopenharmony_ci
18197db96d56Sopenharmony_ciYou can instantiate a :class:`Textbox` object as follows:
18207db96d56Sopenharmony_ci
18217db96d56Sopenharmony_ci
18227db96d56Sopenharmony_ci.. class:: Textbox(win)
18237db96d56Sopenharmony_ci
18247db96d56Sopenharmony_ci   Return a textbox widget object.  The *win* argument should be a curses
18257db96d56Sopenharmony_ci   :ref:`window <curses-window-objects>` object in which the textbox is to
18267db96d56Sopenharmony_ci   be contained. The edit cursor of the textbox is initially located at the
18277db96d56Sopenharmony_ci   upper left hand corner of the containing window, with coordinates ``(0, 0)``.
18287db96d56Sopenharmony_ci   The instance's :attr:`stripspaces` flag is initially on.
18297db96d56Sopenharmony_ci
18307db96d56Sopenharmony_ci   :class:`Textbox` objects have the following methods:
18317db96d56Sopenharmony_ci
18327db96d56Sopenharmony_ci
18337db96d56Sopenharmony_ci   .. method:: edit([validator])
18347db96d56Sopenharmony_ci
18357db96d56Sopenharmony_ci      This is the entry point you will normally use.  It accepts editing
18367db96d56Sopenharmony_ci      keystrokes until one of the termination keystrokes is entered.  If
18377db96d56Sopenharmony_ci      *validator* is supplied, it must be a function.  It will be called for
18387db96d56Sopenharmony_ci      each keystroke entered with the keystroke as a parameter; command dispatch
18397db96d56Sopenharmony_ci      is done on the result. This method returns the window contents as a
18407db96d56Sopenharmony_ci      string; whether blanks in the window are included is affected by the
18417db96d56Sopenharmony_ci      :attr:`stripspaces` attribute.
18427db96d56Sopenharmony_ci
18437db96d56Sopenharmony_ci
18447db96d56Sopenharmony_ci   .. method:: do_command(ch)
18457db96d56Sopenharmony_ci
18467db96d56Sopenharmony_ci      Process a single command keystroke.  Here are the supported special
18477db96d56Sopenharmony_ci      keystrokes:
18487db96d56Sopenharmony_ci
18497db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18507db96d56Sopenharmony_ci      | Keystroke        | Action                                    |
18517db96d56Sopenharmony_ci      +==================+===========================================+
18527db96d56Sopenharmony_ci      | :kbd:`Control-A` | Go to left edge of window.                |
18537db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18547db96d56Sopenharmony_ci      | :kbd:`Control-B` | Cursor left, wrapping to previous line if |
18557db96d56Sopenharmony_ci      |                  | appropriate.                              |
18567db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18577db96d56Sopenharmony_ci      | :kbd:`Control-D` | Delete character under cursor.            |
18587db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18597db96d56Sopenharmony_ci      | :kbd:`Control-E` | Go to right edge (stripspaces off) or end |
18607db96d56Sopenharmony_ci      |                  | of line (stripspaces on).                 |
18617db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18627db96d56Sopenharmony_ci      | :kbd:`Control-F` | Cursor right, wrapping to next line when  |
18637db96d56Sopenharmony_ci      |                  | appropriate.                              |
18647db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18657db96d56Sopenharmony_ci      | :kbd:`Control-G` | Terminate, returning the window contents. |
18667db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18677db96d56Sopenharmony_ci      | :kbd:`Control-H` | Delete character backward.                |
18687db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18697db96d56Sopenharmony_ci      | :kbd:`Control-J` | Terminate if the window is 1 line,        |
18707db96d56Sopenharmony_ci      |                  | otherwise insert newline.                 |
18717db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18727db96d56Sopenharmony_ci      | :kbd:`Control-K` | If line is blank, delete it, otherwise    |
18737db96d56Sopenharmony_ci      |                  | clear to end of line.                     |
18747db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18757db96d56Sopenharmony_ci      | :kbd:`Control-L` | Refresh screen.                           |
18767db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18777db96d56Sopenharmony_ci      | :kbd:`Control-N` | Cursor down; move down one line.          |
18787db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18797db96d56Sopenharmony_ci      | :kbd:`Control-O` | Insert a blank line at cursor location.   |
18807db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18817db96d56Sopenharmony_ci      | :kbd:`Control-P` | Cursor up; move up one line.              |
18827db96d56Sopenharmony_ci      +------------------+-------------------------------------------+
18837db96d56Sopenharmony_ci
18847db96d56Sopenharmony_ci      Move operations do nothing if the cursor is at an edge where the movement
18857db96d56Sopenharmony_ci      is not possible.  The following synonyms are supported where possible:
18867db96d56Sopenharmony_ci
18877db96d56Sopenharmony_ci      +--------------------------------+------------------+
18887db96d56Sopenharmony_ci      | Constant                       | Keystroke        |
18897db96d56Sopenharmony_ci      +================================+==================+
18907db96d56Sopenharmony_ci      | :const:`~curses.KEY_LEFT`      | :kbd:`Control-B` |
18917db96d56Sopenharmony_ci      +--------------------------------+------------------+
18927db96d56Sopenharmony_ci      | :const:`~curses.KEY_RIGHT`     | :kbd:`Control-F` |
18937db96d56Sopenharmony_ci      +--------------------------------+------------------+
18947db96d56Sopenharmony_ci      | :const:`~curses.KEY_UP`        | :kbd:`Control-P` |
18957db96d56Sopenharmony_ci      +--------------------------------+------------------+
18967db96d56Sopenharmony_ci      | :const:`~curses.KEY_DOWN`      | :kbd:`Control-N` |
18977db96d56Sopenharmony_ci      +--------------------------------+------------------+
18987db96d56Sopenharmony_ci      | :const:`~curses.KEY_BACKSPACE` | :kbd:`Control-h` |
18997db96d56Sopenharmony_ci      +--------------------------------+------------------+
19007db96d56Sopenharmony_ci
19017db96d56Sopenharmony_ci      All other keystrokes are treated as a command to insert the given
19027db96d56Sopenharmony_ci      character and move right (with line wrapping).
19037db96d56Sopenharmony_ci
19047db96d56Sopenharmony_ci
19057db96d56Sopenharmony_ci   .. method:: gather()
19067db96d56Sopenharmony_ci
19077db96d56Sopenharmony_ci      Return the window contents as a string; whether blanks in the
19087db96d56Sopenharmony_ci      window are included is affected by the :attr:`stripspaces` member.
19097db96d56Sopenharmony_ci
19107db96d56Sopenharmony_ci
19117db96d56Sopenharmony_ci   .. attribute:: stripspaces
19127db96d56Sopenharmony_ci
19137db96d56Sopenharmony_ci      This attribute is a flag which controls the interpretation of blanks in
19147db96d56Sopenharmony_ci      the window.  When it is on, trailing blanks on each line are ignored; any
19157db96d56Sopenharmony_ci      cursor motion that would land the cursor on a trailing blank goes to the
19167db96d56Sopenharmony_ci      end of that line instead, and trailing blanks are stripped when the window
19177db96d56Sopenharmony_ci      contents are gathered.
1918