Blame docs/src/tty.rst

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