Workaround for missing cfmakeraw(). See also https://www.illumos.org/issues/1060 --- vte-0.78.2/src/app/app.cc.orig +++ vte-0.78.2/src/app/app.cc @@ -3971,7 +3971,15 @@ struct termios tcattr; if (tcgetattr(STDIN_FILENO, &tcattr) == 0) { saved_tcattr = tcattr; +#ifdef __illumos__ + tcattr.c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + tcattr.c_oflag &= ~OPOST; + tcattr.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); + tcattr.c_cflag &= ~(CSIZE|PARENB); + tcattr.c_cflag |= CS8; +#else cfmakeraw(&tcattr); +#endif if (tcsetattr(STDIN_FILENO, TCSANOW, &tcattr) == 0) reset_termios = true; } --- vte-0.78.2/src/dumpkeys.c.orig +++ vte-0.78.2/src/dumpkeys.c @@ -162,7 +162,15 @@ } original = tcattr; signal(SIGINT, sigint_handler); +#ifdef __illumos__ + tcattr.c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + tcattr.c_oflag &= ~OPOST; + tcattr.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); + tcattr.c_cflag &= ~(CSIZE|PARENB); + tcattr.c_cflag |= CS8; +#else cfmakeraw(&tcattr); +#endif if (tcsetattr(STDIN_FILENO, TCSANOW, &tcattr) != 0) { perror("tcsetattr"); return 1; --- vte-0.78.2/src/mev.c.orig +++ vte-0.78.2/src/mev.c @@ -358,7 +358,15 @@ original = tcattr; signal(SIGINT, sigint_handler); +#ifdef __illumos__ + tcattr.c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); + tcattr.c_oflag &= ~OPOST; + tcattr.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); + tcattr.c_cflag &= ~(CSIZE|PARENB); + tcattr.c_cflag |= CS8; +#else cfmakeraw(&tcattr); +#endif if (tcsetattr(STDIN_FILENO, TCSANOW, &tcattr) != 0) { perror("tcsetattr"); return 1;