Blame docs/src/tty.rst

Packit b5b901
Packit b5b901
.. _tty:
Packit b5b901
Packit b5b901
:c:type:`uv_tty_t` --- TTY handle
Packit b5b901
=================================
Packit b5b901
Packit b5b901
TTY handles represent a stream for the console.
Packit b5b901
Packit b5b901
:c:type:`uv_tty_t` is a 'subclass' of :c:type:`uv_stream_t`.
Packit b5b901
Packit b5b901
Packit b5b901
Data types
Packit b5b901
----------
Packit b5b901
Packit b5b901
.. c:type:: uv_tty_t
Packit b5b901
Packit b5b901
    TTY handle type.
Packit b5b901
Packit b5b901
.. c:type:: uv_tty_mode_t
Packit b5b901
Packit b5b901
    .. versionadded:: 1.2.0
Packit b5b901
Packit b5b901
    TTY mode type:
Packit b5b901
Packit b5b901
    ::
Packit b5b901
Packit b5b901
      typedef enum {
Packit b5b901
          /* Initial/normal terminal mode */
Packit b5b901
          UV_TTY_MODE_NORMAL,
Packit b5b901
          /* Raw input mode (On Windows, ENABLE_WINDOW_INPUT is also enabled) */
Packit b5b901
          UV_TTY_MODE_RAW,
Packit b5b901
          /* Binary-safe I/O mode for IPC (Unix-only) */
Packit b5b901
          UV_TTY_MODE_IO
Packit b5b901
      } uv_tty_mode_t;
Packit b5b901
Packit Service e08953
.. c:type:: uv_tty_vtermstate_t
Packit Service e08953
    Console virtual terminal mode type:
Packit Service e08953
Packit Service e08953
    ::
Packit Service e08953
Packit Service e08953
      typedef enum {
Packit Service e08953
          /*
Packit Service e08953
           * The console supports handling of virtual terminal sequences
Packit Service e08953
           * (Windows10 new console, ConEmu)
Packit Service e08953
           */
Packit Service e08953
          UV_TTY_SUPPORTED,
Packit Service e08953
          /* The console cannot process virtual terminal sequences.  (Legacy
Packit Service e08953
           * console)
Packit Service e08953
           */
Packit Service e08953
          UV_TTY_UNSUPPORTED
Packit Service e08953
      } uv_tty_vtermstate_t
Packit Service e08953
Packit b5b901
Packit b5b901
Packit b5b901
Public members
Packit b5b901
^^^^^^^^^^^^^^
Packit b5b901
Packit b5b901
N/A
Packit b5b901
Packit b5b901
.. seealso:: The :c:type:`uv_stream_t` members also apply.
Packit b5b901
Packit b5b901
Packit b5b901
API
Packit b5b901
---
Packit b5b901
Packit b5b901
.. c:function:: int uv_tty_init(uv_loop_t* loop, uv_tty_t* handle, uv_file fd, int unused)
Packit b5b901
Packit b5b901
    Initialize a new TTY stream with the given file descriptor. Usually the
Packit b5b901
    file descriptor will be:
Packit b5b901
Packit b5b901
    * 0 = stdin
Packit b5b901
    * 1 = stdout
Packit b5b901
    * 2 = stderr
Packit b5b901
Packit b5b901
    On Unix this function will determine the path of the fd of the terminal
Packit b5b901
    using :man:`ttyname_r(3)`, open it, and use it if the passed file descriptor
Packit b5b901
    refers to a TTY. This lets libuv put the tty in non-blocking mode without
Packit b5b901
    affecting other processes that share the tty.
Packit b5b901
Packit b5b901
    This function is not thread safe on systems that don't support
Packit b5b901
    ioctl TIOCGPTN or TIOCPTYGNAME, for instance OpenBSD and Solaris.
Packit b5b901
Packit b5b901
    .. note::
Packit b5b901
        If reopening the TTY fails, libuv falls back to blocking writes.
Packit b5b901
Packit b5b901
    .. versionchanged:: 1.23.1: the `readable` parameter is now unused and ignored.
Packit b5b901
                        The correct value will now be auto-detected from the kernel.
Packit b5b901
Packit b5b901
    .. versionchanged:: 1.9.0: the path of the TTY is determined by
Packit b5b901
                        :man:`ttyname_r(3)`. In earlier versions libuv opened
Packit b5b901
                        `/dev/tty` instead.
Packit b5b901
Packit b5b901
    .. versionchanged:: 1.5.0: trying to initialize a TTY stream with a file
Packit b5b901
                        descriptor that refers to a file returns `UV_EINVAL`
Packit b5b901
                        on UNIX.
Packit b5b901
Packit b5b901
.. c:function:: int uv_tty_set_mode(uv_tty_t* handle, uv_tty_mode_t mode)
Packit b5b901
Packit b5b901
    .. versionchanged:: 1.2.0: the mode is specified as a
Packit b5b901
                        :c:type:`uv_tty_mode_t` value.
Packit b5b901
Packit b5b901
    Set the TTY using the specified terminal mode.
Packit b5b901
Packit b5b901
.. c:function:: int uv_tty_reset_mode(void)
Packit b5b901
Packit b5b901
    To be called when the program exits. Resets TTY settings to default
Packit b5b901
    values for the next process to take over.
Packit b5b901
Packit b5b901
    This function is async signal-safe on Unix platforms but can fail with error
Packit b5b901
    code ``UV_EBUSY`` if you call it when execution is inside
Packit b5b901
    :c:func:`uv_tty_set_mode`.
Packit b5b901
Packit b5b901
.. c:function:: int uv_tty_get_winsize(uv_tty_t* handle, int* width, int* height)
Packit b5b901
Packit b5b901
    Gets the current Window size. On success it returns 0.
Packit b5b901
Packit b5b901
.. seealso:: The :c:type:`uv_stream_t` API functions also apply.
Packit Service e08953
Packit Service e08953
.. c:function:: void uv_tty_set_vterm_state(uv_tty_vtermstate_t state)
Packit Service e08953
Packit Service e08953
    Controls whether console virtual terminal sequences are processed by libuv
Packit Service e08953
    or console.
Packit Service e08953
    Useful in particular for enabling ConEmu support of ANSI X3.64 and Xterm
Packit Service e08953
    256 colors. Otherwise Windows10 consoles are usually detected automatically.
Packit Service e08953
Packit Service e08953
    This function is only meaningful on Windows systems. On Unix it is silently
Packit Service e08953
    ignored.
Packit Service e08953
Packit Service e08953
    .. versionadded:: 1.33.0
Packit Service e08953
Packit Service e08953
.. c:function:: int uv_tty_get_vterm_state(uv_tty_vtermstate_t* state)
Packit Service e08953
Packit Service e08953
    Get the current state of whether console virtual terminal sequences are
Packit Service e08953
    handled by libuv or the console.
Packit Service e08953
Packit Service e08953
    This function is not implemented on Unix, where it returns ``UV_ENOTSUP``.
Packit Service e08953
Packit Service e08953
    .. versionadded:: 1.33.0
Packit Service e08953