head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.90 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.88 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.86 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.84 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.82 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.80 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.78 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.76 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.74 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.72 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.70 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.68 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.66 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.64 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.62 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.60 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.58 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.56 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.54 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.52 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.50 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.48 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.46 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.42 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.22 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.44 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.40 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.38 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.36 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.34 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.32 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.30 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.28 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.26 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.24 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.20 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.18 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.16 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.14 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.12 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.10 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.8 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.6 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.4 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.2 pkgsrc-2015Q1-base:1.1; locks; strict; comment @// @; 1.1 date 2015.01.19.20.42.09; author jmcneill; state Exp; branches; next ; commitid lZyjR9vFZqNXYF6y; desc @@ 1.1 log @make tty input handling work @ text @$NetBSD$ --- Keyboard.cpp.orig 2015-01-12 15:10:50.000000000 +0000 +++ Keyboard.cpp @@@@ -23,7 +23,6 @@@@ Keyboard::Keyboard() new_termios = orig_termios; new_termios.c_lflag &= ~(ICANON | ECHO | ECHOCTL | ECHONL); new_termios.c_cflag |= HUPCL; - new_termios.c_cc[VMIN] = 0; tcsetattr(STDIN_FILENO, TCSANOW, &new_termios); } @@@@ -74,13 +73,20 @@@@ void Keyboard::restore_term() } } -void Keyboard::Sleep(unsigned int dwMilliSeconds) +int Keyboard::Hit() { - struct timespec req; - req.tv_sec = dwMilliSeconds / 1000; - req.tv_nsec = (dwMilliSeconds % 1000) * 1000000; + struct timeval timeo; + fd_set fds; - while ( nanosleep(&req, &req) == -1 && errno == EINTR && (req.tv_nsec > 0 || req.tv_sec > 0)); + timeo.tv_sec = 0; + timeo.tv_usec = 200000; + + FD_ZERO(&fds); + FD_SET(STDIN_FILENO, &fds); + + select(FD_SETSIZE, &fds, NULL, NULL, &timeo); + + return FD_ISSET(STDIN_FILENO, &fds); } void Keyboard::Process() @@@@ -90,9 +96,16 @@@@ void Keyboard::Process() if (conn) dbus_connection_read_write_dispatch(conn, 0); int ch[8]; - int chnum = 0; + int chnum, nb; - while ((ch[chnum] = getchar()) != EOF) chnum++; + if (Hit() == 0) + continue; + + ioctl(STDIN_FILENO, FIONREAD, &nb); + + for (chnum = 0; chnum < nb && chnum < 8; chnum++) { + ch[chnum] = getchar(); + } if (chnum > 1) ch[0] = ch[chnum - 1] | (ch[chnum - 2] << 8); @@@@ -101,8 +114,6 @@@@ void Keyboard::Process() if (m_keymap[ch[0]] != 0) send_action(m_keymap[ch[0]]); - else - Sleep(20); } } @