diff --git a/src/message.c b/src/message.c
index 006e648..a26a637 100644
--- a/src/message.c
+++ b/src/message.c
@@ -3652,6 +3652,7 @@
     char_u	*hotkeys;
     int		c;
     int		i;
+    tmode_T	save_tmode;
 
 #ifndef NO_CONSOLE
     // Don't output anything in silent mode ("ex -s")
@@ -3683,6 +3684,10 @@
     State = CONFIRM;
     setmouse();
 
+    // Ensure raw mode here.
+    save_tmode = cur_tmode;
+    settmode(TMODE_RAW);
+
     /*
      * Since we wait for a keypress, don't make the
      * user press RETURN as well afterwards.
@@ -3743,6 +3748,7 @@
 	vim_free(hotkeys);
     }
 
+    settmode(save_tmode);
     State = oldState;
     setmouse();
     --no_wait_return;
diff --git a/src/testdir/test_excmd.vim b/src/testdir/test_excmd.vim
index 2428e9d..2c693e2 100644
--- a/src/testdir/test_excmd.vim
+++ b/src/testdir/test_excmd.vim
@@ -189,49 +189,58 @@
   CheckNotGui
   CheckRunVimInTerminal
 
-  call writefile(['foo1'], 'foo')
-  call writefile(['bar1'], 'bar')
+  call writefile(['foo1'], 'Xfoo')
+  call writefile(['bar1'], 'Xbar')
 
   " Test for saving all the modified buffers
-  let buf = RunVimInTerminal('', {'rows': 20})
-  call term_sendkeys(buf, ":set nomore\n")
-  call term_sendkeys(buf, ":new foo\n")
-  call term_sendkeys(buf, ":call setline(1, 'foo2')\n")
-  call term_sendkeys(buf, ":new bar\n")
-  call term_sendkeys(buf, ":call setline(1, 'bar2')\n")
-  call term_sendkeys(buf, ":wincmd b\n")
+  let lines =<< trim END
+    set nomore
+    new Xfoo
+    call setline(1, 'foo2')
+    new Xbar
+    call setline(1, 'bar2')
+    wincmd b
+  END
+  call writefile(lines, 'Xscript')
+  let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
   call term_sendkeys(buf, ":confirm qall\n")
   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
   call term_sendkeys(buf, "A")
   call StopVimInTerminal(buf)
 
-  call assert_equal(['foo2'], readfile('foo'))
-  call assert_equal(['bar2'], readfile('bar'))
+  call assert_equal(['foo2'], readfile('Xfoo'))
+  call assert_equal(['bar2'], readfile('Xbar'))
 
   " Test for discarding all the changes to modified buffers
-  let buf = RunVimInTerminal('', {'rows': 20})
-  call term_sendkeys(buf, ":set nomore\n")
-  call term_sendkeys(buf, ":new foo\n")
-  call term_sendkeys(buf, ":call setline(1, 'foo3')\n")
-  call term_sendkeys(buf, ":new bar\n")
-  call term_sendkeys(buf, ":call setline(1, 'bar3')\n")
-  call term_sendkeys(buf, ":wincmd b\n")
+  let lines =<< trim END
+    set nomore
+    new Xfoo
+    call setline(1, 'foo3')
+    new Xbar
+    call setline(1, 'bar3')
+    wincmd b
+  END
+  call writefile(lines, 'Xscript')
+  let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
   call term_sendkeys(buf, ":confirm qall\n")
   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
   call term_sendkeys(buf, "D")
   call StopVimInTerminal(buf)
 
-  call assert_equal(['foo2'], readfile('foo'))
-  call assert_equal(['bar2'], readfile('bar'))
+  call assert_equal(['foo2'], readfile('Xfoo'))
+  call assert_equal(['bar2'], readfile('Xbar'))
 
   " Test for saving and discarding changes to some buffers
-  let buf = RunVimInTerminal('', {'rows': 20})
-  call term_sendkeys(buf, ":set nomore\n")
-  call term_sendkeys(buf, ":new foo\n")
-  call term_sendkeys(buf, ":call setline(1, 'foo4')\n")
-  call term_sendkeys(buf, ":new bar\n")
-  call term_sendkeys(buf, ":call setline(1, 'bar4')\n")
-  call term_sendkeys(buf, ":wincmd b\n")
+  let lines =<< trim END
+    set nomore
+    new Xfoo
+    call setline(1, 'foo4')
+    new Xbar
+    call setline(1, 'bar4')
+    wincmd b
+  END
+  call writefile(lines, 'Xscript')
+  let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
   call term_sendkeys(buf, ":confirm qall\n")
   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000)
   call term_sendkeys(buf, "N")
@@ -239,11 +248,12 @@
   call term_sendkeys(buf, "Y")
   call StopVimInTerminal(buf)
 
-  call assert_equal(['foo4'], readfile('foo'))
-  call assert_equal(['bar2'], readfile('bar'))
+  call assert_equal(['foo4'], readfile('Xfoo'))
+  call assert_equal(['bar2'], readfile('Xbar'))
 
-  call delete('foo')
-  call delete('bar')
+  call delete('Xscript')
+  call delete('Xfoo')
+  call delete('Xbar')
 endfunc
 
 func Test_confirm_cmd_cancel()
@@ -251,10 +261,13 @@
   CheckRunVimInTerminal
 
   " Test for closing a window with a modified buffer
-  let buf = RunVimInTerminal('', {'rows': 20})
-  call term_sendkeys(buf, ":set nomore\n")
-  call term_sendkeys(buf, ":new\n")
-  call term_sendkeys(buf, ":call setline(1, 'abc')\n")
+  let lines =<< trim END
+    set nomore
+    new
+    call setline(1, 'abc')
+  END
+  call writefile(lines, 'Xscript')
+  let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
   call term_sendkeys(buf, ":confirm close\n")
   call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$',
         \ term_getline(buf, 20))}, 1000)
@@ -267,6 +280,43 @@
   call WaitForAssert({-> assert_match('^ *0,0-1         All$',
         \ term_getline(buf, 20))}, 1000)
   call StopVimInTerminal(buf)
+  call delete('Xscript')
+endfunc
+
+" The ":confirm" prompt was sometimes used with the terminal in cooked mode.
+" This test verifies that a "\<CR>" character is NOT required to respond to a
+" prompt from the ":conf q" and ":conf wq" commands.
+func Test_confirm_q_wq()
+  CheckNotGui
+  CheckRunVimInTerminal
+
+  call writefile(['foo'], 'Xfoo')
+
+  let lines =<< trim END
+    set hidden nomore
+    call setline(1, 'abc')
+    edit Xfoo
+  END
+  call writefile(lines, 'Xscript')
+  let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
+  call term_sendkeys(buf, ":confirm q\n")
+  call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$',
+        \ term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, 'C')
+  call WaitForAssert({-> assert_notmatch('^\[Y\]es, (N)o, (C)ancel: C*$',
+        \ term_getline(buf, 20))}, 1000)
+
+  call term_sendkeys(buf, ":edit Xfoo\n")
+  call term_sendkeys(buf, ":confirm wq\n")
+  call WaitForAssert({-> assert_match('^\[Y\]es, (N)o, (C)ancel: *$',
+        \ term_getline(buf, 20))}, 1000)
+  call term_sendkeys(buf, 'C')
+  call WaitForAssert({-> assert_notmatch('^\[Y\]es, (N)o, (C)ancel: C*$',
+        \ term_getline(buf, 20))}, 1000)
+  call StopVimInTerminal(buf)
+
+  call delete('Xscript')
+  call delete('Xfoo')
 endfunc
 
 " Test for the :print command
diff --git a/src/version.c b/src/version.c
index 2d0cafc..ec1e12e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1147,
+/**/
     1146,
 /**/
     1145,
