49#if defined(TCSANOW) && defined(POLLIN)
50 struct termios tc, saved;
51 struct pollfd fd = { STDIN_FILENO, POLLIN, 0 };
53 if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO)) {
60 tcgetattr(STDOUT_FILENO, &tc);
62 tc.c_cflag |= (CLOCAL | CREAD);
63 tc.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
64 tcsetattr(STDOUT_FILENO, TCSANOW, &tc);
72 fprintf(stdout,
"\e7" "\e[r" "\e[999;999H" "\e[6n");
78 if (poll(&fd, 1, 300) <= 0 || scanf(
"\e[%d;%dR", row, col) != 2) {
86 fprintf(stdout,
"\e8");
90 tcsetattr(STDOUT_FILENO, TCSANOW, &saved);