1#ifndef NEFORCE_TUI_INPUT_HPP__
2#define NEFORCE_TUI_INPUT_HPP__
14#ifdef NEFORCE_PLATFORM_LINUX
17NEFORCE_BEGIN_NAMESPACE__
67#ifdef NEFORCE_PLATFORM_LINUX
70 static unsigned long WINAPI input_thread_proc(
void* selfp);
73 void process_byte(
byte_t byte);
74 bool parse_escape_sequence();
75 bool parse_utf8_sequence();
76 bool parse_mouse_sequence();
79 void process_accumulated_bytes(
const byte_t*
data,
size_t len);
87 bool esc_active_ =
false;
88 bool mouse_active_ =
false;
89 bool utf8_active_ =
false;
90 bool listening_ =
false;
92 bool term_saved_ =
false;
93#ifdef NEFORCE_PLATFORM_LINUX
94 ::termios old_termios_{};
95#elif defined(NEFORCE_PLATFORM_WINDOWS)
96 void* stdin_handle_ =
nullptr;
97 void* input_thread_ =
nullptr;
98 unsigned long old_in_mode_ = 0;
105NEFORCE_END_NAMESPACE__
unsigned char byte_t
字节类型,定义为无符号字符
unsigned int uint32_t
32位无符号整数类型
constexpr decltype(auto) data(Container &cont) noexcept(noexcept(cont.data()))
获取容器的底层数据指针