if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key))
{
key = TOUPPER_ASC(key);
- // With <C-S-a> and <A-S-a> we keep the shift modifier.
- // With <S-a> and <S-A> we don't keep the shift modifier.
- if (simplify || modifiers == MOD_MASK_SHIFT)
+ // With <C-S-a> we keep the shift modifier.
+ // With <S-a>, <A-S-a> and <S-A> we don't keep the shift modifier.
+ if (simplify || modifiers == MOD_MASK_SHIFT
+ || modifiers == (MOD_MASK_SHIFT | MOD_MASK_ALT)
+ || modifiers == (MOD_MASK_SHIFT | MOD_MASK_META))
modifiers &= ~MOD_MASK_SHIFT;
}
// 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.
- if (modifiers == MOD_MASK_SHIFT
+ // Also for <A-S-a> and <M-S-a>.
+ if ((modifiers == MOD_MASK_SHIFT
+ || modifiers == (MOD_MASK_SHIFT | MOD_MASK_ALT)
+ || modifiers == (MOD_MASK_SHIFT | MOD_MASK_META))
&& ((key >= '@' && key <= 'Z')
|| key == '^' || key == '_'
|| (key >= '{' && key <= '~')))
- modifiers = 0;
+ modifiers &= ~MOD_MASK_SHIFT;
// When used with Ctrl we always make a letter upper case,
// so that mapping <C-H> and <C-h> are the same. Typing
" check size with wrapping lines
call term_sendkeys(buf, "j")
call VerifyScreenDump(buf, 'Test_popupwin_scroll_12', {})
- call term_sendkeys(buf, "x")
" clean up
+ call term_sendkeys(buf, "x")
call StopVimInTerminal(buf)
call delete('XtestPopupScroll')
endfunc
call feedkeys("\u301b", 'xt')
call assert_equal([0xe3, 0x80, 0x9b], g:bytes)
+ if has('unix')
+ " with modifyOtherKeys <M-S-a> does not include a modifier sequence
+ call feedkeys("\<Esc>[27;4;65~", 'Lx!')
+ call assert_equal([0xc3, 0x81], g:bytes)
+ endif
+
call popup_clear()
delfunc MyPopupFilter
unlet g:bytes
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1015,
/**/
1014,
/**/