patch 8.2.4107: script context not restored after using <ScriptCmd>

Problem:    Script context not restored after using <ScriptCmd>.
Solution:   Also restore context when not in a script. (closes #9536)
            Add the 'c' flag to feedkeys() to be able to test this.
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 2e9c3e8..2d878d2 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -4,6 +4,7 @@
 source check.vim
 source screendump.vim
 source term_util.vim
+source vim9.vim
 
 func Test_abbreviation()
   " abbreviation with 0x80 should work
@@ -1397,6 +1398,19 @@
   ounmap i-
 endfunc
 
+func Test_map_script_cmd_restore()
+  let lines =<< trim END
+      vim9script
+      nnoremap <F3> <ScriptCmd>eval 1 + 2<CR>
+  END
+  call CheckScriptSuccess(lines)
+  call feedkeys("\<F3>:let g:result = 3+4\<CR>", 'xtc')
+  call assert_equal(7, g:result)
+
+  nunmap <F3>
+  unlet g:result
+endfunc
+
 " Test for using <script> with a map to remap characters in rhs
 func Test_script_local_remap()
   new