patch 8.2.1809: mapping some keys with Ctrl does not work properly
Problem: Mapping some keys with Ctrl does not work properly.
Solution: For terminal, GTK and Motif handle "@", "^" and "_" codes.
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index 91ccda8..7d7e2f0 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -2103,6 +2103,24 @@
func Test_mapping_works_with_ctrl()
call RunTest_mapping_works_with_mods(function('GetEscCodeCSI27'), 'C', 5)
call RunTest_mapping_works_with_mods(function('GetEscCodeCSIu'), 'C', 5)
+
+ new
+ set timeoutlen=10
+
+ " CTRL-@ actually produces the code for CTRL-2, which is converted
+ call RunTest_mapping_mods('<C-@>', '2', function('GetEscCodeCSI27'), 5)
+ call RunTest_mapping_mods('<C-@>', '2', function('GetEscCodeCSIu'), 5)
+
+ " CTRL-^ actually produces the code for CTRL-6, which is converted
+ call RunTest_mapping_mods('<C-^>', '6', function('GetEscCodeCSI27'), 5)
+ call RunTest_mapping_mods('<C-^>', '6', function('GetEscCodeCSIu'), 5)
+
+ " CTRL-_ actually produces the code for CTRL--, which is converted
+ call RunTest_mapping_mods('<C-_>', '-', function('GetEscCodeCSI27'), 5)
+ call RunTest_mapping_mods('<C-_>', '-', function('GetEscCodeCSIu'), 5)
+
+ bwipe!
+ set timeoutlen&
endfunc
func Test_mapping_works_with_shift_ctrl()