forked from aniani/vim
patch 8.2.1811: mapping Ctrl-key does not work for '{', '}' and '|'
Problem: Mapping Ctrl-key does not work for '{', '}' and '|'. Solution: Remove the shift modifier. (closes #6457)
This commit is contained in:
parent
d7e5e9430a
commit
9a033d7b18
@ -839,8 +839,15 @@ execute a shell command, e.g.: `!ls` Or put the lines in your |vimrc|.
|
|||||||
|
|
||||||
When modifyOtherKeys is enabled you can map <C-[> and <C-S-{>: >
|
When modifyOtherKeys is enabled you can map <C-[> and <C-S-{>: >
|
||||||
imap <C-[> [[[
|
imap <C-[> [[[
|
||||||
imap <C-S-{> {{{
|
imap <C-{> {{{
|
||||||
Without modifyOtherKeys <C-[> and <C-S-{> are indistinguishable from Esc.
|
Without modifyOtherKeys <C-[> and <C-{> are indistinguishable from Esc.
|
||||||
|
Note that <C-{> is used and not <C-S-[> or <C-S-{>. This works on most
|
||||||
|
keyboards. Similarly, <C-}> is used instead of <C-S-]> or <C-S-}> and
|
||||||
|
<C-|> instead of <C-S-\> or <C-S-|>. Note that '|' has a special meaning in a
|
||||||
|
mapping, see |map-bar|.
|
||||||
|
|
||||||
|
WARNING: if you map <C-[> you may very well break any key codes that start
|
||||||
|
with Esc. Make sure it comes AFTER other mappings.
|
||||||
|
|
||||||
A known side effect is that in Insert mode the raw escape sequence is inserted
|
A known side effect is that in Insert mode the raw escape sequence is inserted
|
||||||
after the CTRL-V key. This can be used to check whether modifyOtherKeys is
|
after the CTRL-V key. This can be used to check whether modifyOtherKeys is
|
||||||
|
@ -2974,7 +2974,8 @@ may_adjust_key_for_ctrl(int modifiers, int key)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Some keys already have Shift included, pass them as normal keys.
|
* Some keys already have Shift included, pass them as normal keys.
|
||||||
* Not when Ctrl is also used, because <C-H> and <C-S-H> are different.
|
* When Ctrl is also used <C-H> and <C-S-H> are different, but <C-S-{> should
|
||||||
|
* be <C-{>. Same for <C-S-}> and <C-S-|>.
|
||||||
* Also for <A-S-a> and <M-S-a>.
|
* Also for <A-S-a> and <M-S-a>.
|
||||||
* This includes all printable ASCII characters except numbers and a-z.
|
* This includes all printable ASCII characters except numbers and a-z.
|
||||||
*/
|
*/
|
||||||
@ -2989,6 +2990,11 @@ may_remove_shift_modifier(int modifiers, int key)
|
|||||||
|| (key >= '[' && key <= '`')
|
|| (key >= '[' && key <= '`')
|
||||||
|| (key >= '{' && key <= '~')))
|
|| (key >= '{' && key <= '~')))
|
||||||
return modifiers & ~MOD_MASK_SHIFT;
|
return modifiers & ~MOD_MASK_SHIFT;
|
||||||
|
|
||||||
|
if (modifiers == (MOD_MASK_SHIFT | MOD_MASK_CTRL)
|
||||||
|
&& (key == '{' || key == '}' || key == '|'))
|
||||||
|
return modifiers & ~MOD_MASK_SHIFT;
|
||||||
|
|
||||||
return modifiers;
|
return modifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2126,6 +2126,24 @@ endfunc
|
|||||||
func Test_mapping_works_with_shift_ctrl()
|
func Test_mapping_works_with_shift_ctrl()
|
||||||
call RunTest_mapping_works_with_mods(function('GetEscCodeCSI27'), 'C-S', 6)
|
call RunTest_mapping_works_with_mods(function('GetEscCodeCSI27'), 'C-S', 6)
|
||||||
call RunTest_mapping_works_with_mods(function('GetEscCodeCSIu'), 'C-S', 6)
|
call RunTest_mapping_works_with_mods(function('GetEscCodeCSIu'), 'C-S', 6)
|
||||||
|
|
||||||
|
new
|
||||||
|
set timeoutlen=10
|
||||||
|
|
||||||
|
" Ctrl-Shift-[ actually produces CTRL-Shift-{ which is mapped as <C-{>
|
||||||
|
call RunTest_mapping_mods('<C-{>', '{', function('GetEscCodeCSI27'), 6)
|
||||||
|
call RunTest_mapping_mods('<C-{>', '{', function('GetEscCodeCSIu'), 6)
|
||||||
|
|
||||||
|
" Ctrl-Shift-] actually produces CTRL-Shift-} which is mapped as <C-}>
|
||||||
|
call RunTest_mapping_mods('<C-{>', '{', function('GetEscCodeCSI27'), 6)
|
||||||
|
call RunTest_mapping_mods('<C-{>', '{', function('GetEscCodeCSIu'), 6)
|
||||||
|
|
||||||
|
" Ctrl-Shift-\ actually produces CTRL-Shift-| which is mapped as <C-|>
|
||||||
|
call RunTest_mapping_mods('<C-\|>', '|', function('GetEscCodeCSI27'), 6)
|
||||||
|
call RunTest_mapping_mods('<C-\|>', '|', function('GetEscCodeCSIu'), 6)
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
set timeoutlen&
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
" Below we also test the "u" code with Alt, This works, but libvterm would not
|
" Below we also test the "u" code with Alt, This works, but libvterm would not
|
||||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1811,
|
||||||
/**/
|
/**/
|
||||||
1810,
|
1810,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user