diff --git a/src/option.c b/src/option.c
index 16d05d8..7d79b3c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -12439,6 +12439,10 @@
 can_bs(
     int		what)	    /* BS_INDENT, BS_EOL or BS_START */
 {
+#ifdef FEAT_JOB_CHANNEL
+    if (what == BS_START && bt_prompt(curbuf))
+	return FALSE;
+#endif
     switch (*p_bs)
     {
 	case '2':	return TRUE;
diff --git a/src/terminal.c b/src/terminal.c
index 6967df7..275a5a7 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -5094,8 +5094,19 @@
 
     while (*msg != NUL)
     {
-	send_keys_to_term(term, PTR2CHAR(msg), FALSE);
-	msg += MB_CPTR2LEN(msg);
+	int c;
+
+	if (*msg == K_SPECIAL && msg[1] != NUL && msg[2] != NUL)
+	{
+	    c = TO_SPECIAL(msg[1], msg[2]);
+	    msg += 3;
+	}
+	else
+	{
+	    c = PTR2CHAR(msg);
+	    msg += MB_CPTR2LEN(msg);
+	}
+	send_keys_to_term(term, c, FALSE);
     }
 }
 
diff --git a/src/testdir/test_prompt_buffer.vim b/src/testdir/test_prompt_buffer.vim
index f7363d9..a6269de 100644
--- a/src/testdir/test_prompt_buffer.vim
+++ b/src/testdir/test_prompt_buffer.vim
@@ -7,16 +7,20 @@
 source shared.vim
 source screendump.vim
 
-func Test_prompt_basic()
+func CanTestPromptBuffer()
   " We need to use a terminal window to be able to feed keys without leaving
   " Insert mode.
   if !has('terminal')
-    return
+    return 0
   endif
   if has('win32')
-    " TODO: make this work on MS-Windows
-    return
+    " TODO: make the tests work on MS-Windows
+    return 0
   endif
+  return 1
+endfunc
+
+func WriteScript(name)
   call writefile([
 	\ 'func TextEntered(text)',
 	\ '  if a:text == "exit"',
@@ -44,8 +48,17 @@
 	\ 'set buftype=prompt',
 	\ 'call prompt_setcallback(bufnr(""), function("TextEntered"))',
 	\ 'startinsert',
-	\ ], 'Xpromptscript')
-  let buf = RunVimInTerminal('-S Xpromptscript', {})
+	\ ], a:name)
+endfunc
+
+func Test_prompt_basic()
+  if !CanTestPromptBuffer()
+    return
+  endif
+  let scriptName = 'XpromptscriptBasic'
+  call WriteScript(scriptName)
+
+  let buf = RunVimInTerminal('-S ' . scriptName, {})
   call WaitForAssert({-> assert_equal('%', term_getline(buf, 1))})
 
   call term_sendkeys(buf, "hello\<CR>")
@@ -57,5 +70,34 @@
   call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))})
 
   call StopVimInTerminal(buf)
-  call delete('Xpromptscript')
+  call delete(scriptName)
+endfunc
+
+func Test_prompt_editing()
+  if !CanTestPromptBuffer()
+    return
+  endif
+  let scriptName = 'XpromptscriptEditing'
+  call WriteScript(scriptName)
+
+  let buf = RunVimInTerminal('-S ' . scriptName, {})
+  call WaitForAssert({-> assert_equal('%', term_getline(buf, 1))})
+
+  let bs = "\<BS>"
+  call term_sendkeys(buf, "hello" . bs . bs)
+  call WaitForAssert({-> assert_equal('% hel', term_getline(buf, 1))})
+
+  let left = "\<Left>"
+  call term_sendkeys(buf, left . left . left . bs . '-')
+  call WaitForAssert({-> assert_equal('% -hel', term_getline(buf, 1))})
+
+  let end = "\<End>"
+  call term_sendkeys(buf, end . "x")
+  call WaitForAssert({-> assert_equal('% -helx', term_getline(buf, 1))})
+
+  call term_sendkeys(buf, "\<C-U>exit\<CR>")
+  call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))})
+
+  call StopVimInTerminal(buf)
+  call delete(scriptName)
 endfunc
diff --git a/src/version.c b/src/version.c
index 846ac70..a0aaf86 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    32,
+/**/
     31,
 /**/
     30,
