131 hStdin = GetStdHandle(STD_INPUT_HANDLE);
132 GetConsoleMode(hStdin, &oldMode);
133 SetConsoleMode(hStdin, oldMode & ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT));
135 tcgetattr(STDIN_FILENO, &oldTio);
136 struct termios newTio = oldTio;
137 newTio.c_lflag &= ~(ICANON | ECHO);
138 newTio.c_cc[VMIN] = 0;
139 newTio.c_cc[VTIME] = 0;
140 tcsetattr(STDIN_FILENO, TCSANOW, &newTio);
151 SetConsoleMode(hStdin, oldMode);
153 tcsetattr(STDIN_FILENO, TCSANOW, &oldTio);
189 int raw = readRawBlock();
200 struct termios oldTio;
216 struct pollfd pfd = {STDIN_FILENO, POLLIN, 0};
217 if (poll(&pfd, 1, 0) <= 0)
220 if (read(STDIN_FILENO, &c, 1) != 1)
238 struct pollfd pfd = {STDIN_FILENO, POLLIN, 0};
241 if (poll(&pfd, 1, -1) > 0)
243 if (read(STDIN_FILENO, &c, 1) == 1)
263 if ((raw >=
'A' && raw <=
'Z') || (raw >=
'0' && raw <=
'9'))
265 return static_cast<Key>(raw);
267 if (raw >=
'a' && raw <=
'z')
269 return static_cast<Key>(raw - 32);
278 return handleEscape();
286 if (raw == 0xE0 || raw == 0x00)
339 struct pollfd pfd = {STDIN_FILENO, POLLIN, 0};
340 if (poll(&pfd, 1, 5) <= 0)
343 int n = read(STDIN_FILENO, seq, 3);
344 if (n >= 2 && seq[0] ==
'[')