56 (void)tcgetattr(STDIN_FILENO, &m_original);
57 s_original = m_original;
59 struct termios raw = m_original;
61 ~(
static_cast<tcflag_t
>(ICANON) |
static_cast<tcflag_t
>(ECHO));
62 (void)tcsetattr(STDIN_FILENO, TCSANOW, &raw);
64 (void)std::fputs(
"\033[?25l", stdout);
65 (void)std::fflush(stdout);
68 (void)std::signal(SIGINT, signalHandler);
69 (void)std::signal(SIGTERM, signalHandler);
90 static void restore() {
92 (void)tcsetattr(STDIN_FILENO, TCSANOW, &s_original);
94 (void)std::fputs(
"\033[?25h", stdout);
95 (void)std::fflush(stdout);
107 static void signalHandler(
int ) {
113 struct termios m_original{};
115 static inline struct termios
RAII raw-mode terminal handler.
Definition Terminal.hpp:44
Terminal & operator=(Terminal &&)=delete
Non-movable.
Terminal & operator=(const Terminal &)=delete
Non-copyable.
Terminal()
Enter raw mode and hide the cursor.
Definition Terminal.hpp:54
Terminal(Terminal &&)=delete
Non-movable.
~Terminal()
Restore the original terminal state and show the cursor.
Definition Terminal.hpp:75
Terminal(const Terminal &)=delete
Non-copyable.