47 lines
2.1 KiB
C
47 lines
2.1 KiB
C
/// @file termios-struct.h
|
||
/// @brief Definition of the `termios` structure.
|
||
/// @copyright (c) 2014-2024 This file is distributed under the MIT License.
|
||
/// See LICENSE.md for details.
|
||
|
||
#pragma once
|
||
|
||
/// Type for control characters.
|
||
typedef unsigned char cc_t;
|
||
/// Type for speed.
|
||
typedef unsigned int speed_t;
|
||
/// Type for flags.
|
||
typedef unsigned int tcflag_t;
|
||
/// The number of control characters.
|
||
#define NCCS 32
|
||
|
||
/// @brief Stores information about a terminal IOs.
|
||
typedef struct termios {
|
||
tcflag_t c_iflag; ///< input mode flags
|
||
tcflag_t c_oflag; ///< output mode flags
|
||
tcflag_t c_cflag; ///< control mode flags
|
||
tcflag_t c_lflag; ///< local mode flags
|
||
cc_t c_line; ///< line discipline
|
||
cc_t c_cc[NCCS]; ///< control characters
|
||
speed_t c_ispeed; ///< input speed
|
||
speed_t c_ospeed; ///< output speed
|
||
} termios_t;
|
||
|
||
//These flags generally control higher-level aspects of input processing than
|
||
// the input modes flags described in Input Modes, such as echoing, signals, and
|
||
// the choice of canonical or noncanonical input.
|
||
|
||
#define ISIG 0x00000080 ///< Controls whether the INTR, QUIT, and SUSP characters are recognized.
|
||
#define ICANON 0x00000100 ///< Enables canonical input processing mode.
|
||
#define ECHO 0x00000008 ///< Echo input characters.
|
||
#define ECHOE 0x00000002 ///< If ICANON is set, the ERASE character erases the preceding character.
|
||
#define ECHOK 0x00000004 ///< If ICANON is set, the KILL character erases the current line.
|
||
#define ECHONL 0x00000010 ///< If ICANON is set, echo the NL character even if ECHO is not set.
|
||
#define NOFLSH 0x80000000 ///< Do not clear in/out queues when receiving INTR, QUIT, and SUSP.
|
||
#define TOSTOP 0x00400000 ///< Allows SIGTTOU signals generated by background processes.
|
||
#define ECHOCTL 0x00000040 ///< If this and ECHO are set, control characters with ‘^’ are echoed.
|
||
#define ECHOKE 0x00000001 ///< If ICANON is set, KILL is echoed by erasing each character on the line.
|
||
#define IEXTEN 0x00000400 ///< Enables implementation-defined input processing.
|
||
|
||
/// @brief Mask for extracting control values.
|
||
#define CTRL(x) ((x) & 037)
|