From e8c79209190c124567027f527497625ac9145618 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Wed, 21 Dec 2022 10:48:29 +0100 Subject: [PATCH] conhost.exe: Handle ctrl-\ in Wine. Let conhost handle ctrl-\ instead of Unix tty, and pretend it's a ctrl-pause/break key stroke. This allows CUI application in processed input mode not to close upon ctrl-\. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54141 Signed-off-by: Eric Pouech --- programs/conhost/conhost.c | 6 ++++++ server/console.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c index 0bc6abe657c..1bed7b8a03c 100644 --- a/programs/conhost/conhost.c +++ b/programs/conhost/conhost.c @@ -1778,6 +1778,12 @@ static DWORD WINAPI tty_input( void *param ) case 0x1b: i += process_input_escape( console, buf + i + 1, count - i - 1 ); break; + case 0x1c: /* map ctrl-\ unix-ism into ctrl-break/pause windows-ism for unix consoles */ + if (console->is_unix) + key_press( console, 0, VK_CANCEL, LEFT_CTRL_PRESSED ); + else + char_key_press( console, ch, 0 ); + break; case 0x7f: key_press( console, '\b', VK_BACK, 0 ); break; diff --git a/server/console.c b/server/console.c index 34f8d09408f..b64283baf4a 100644 --- a/server/console.c +++ b/server/console.c @@ -1183,7 +1183,7 @@ static void console_server_ioctl( struct fd *fd, ioctl_code_t code, struct async return; } term = server->termios; - term.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN); + term.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG); term.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); term.c_cflag &= ~(CSIZE | PARENB); term.c_cflag |= CS8;