mirror of
https://github.com/vim/vim.git
synced 2025-07-25 10:54:51 -04:00
patch 9.0.1414: <M-S-x> in Kitty does not use the Shift modifier
Problem: <M-S-x> in Kitty does not use the Shift modifier. Solution: Apply the Shift modifier to ASCII letters. (closes #11913)
This commit is contained in:
parent
2a003177eb
commit
ea83c19462
@ -1623,13 +1623,14 @@ updatescript(int c)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert "c" plus "modifiers" to merge the effect of modifyOtherKeys into the
|
* Convert "c" plus "modifiers" to merge the effect of modifyOtherKeys into the
|
||||||
* character.
|
* character. Also for when the Kitty key protocol is used.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
merge_modifyOtherKeys(int c_arg, int *modifiers)
|
merge_modifyOtherKeys(int c_arg, int *modifiers)
|
||||||
{
|
{
|
||||||
int c = c_arg;
|
int c = c_arg;
|
||||||
|
|
||||||
|
// CTRL only uses the lower 5 bits of the character.
|
||||||
if (*modifiers & MOD_MASK_CTRL)
|
if (*modifiers & MOD_MASK_CTRL)
|
||||||
{
|
{
|
||||||
if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_'))
|
if ((c >= '`' && c <= 0x7f) || (c >= '@' && c <= '_'))
|
||||||
@ -1658,12 +1659,23 @@ merge_modifyOtherKeys(int c_arg, int *modifiers)
|
|||||||
if (c != c_arg)
|
if (c != c_arg)
|
||||||
*modifiers &= ~MOD_MASK_CTRL;
|
*modifiers &= ~MOD_MASK_CTRL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alt/Meta sets the 8th bit of the character.
|
||||||
if ((*modifiers & (MOD_MASK_META | MOD_MASK_ALT))
|
if ((*modifiers & (MOD_MASK_META | MOD_MASK_ALT))
|
||||||
&& c >= 0 && c <= 127)
|
&& c >= 0 && c <= 127)
|
||||||
{
|
{
|
||||||
|
// Some terminals (esp. Kitty) do not include Shift in the character.
|
||||||
|
// Apply it here to get consistency across terminals. Only do ASCII
|
||||||
|
// letters, for other characters it depends on the keyboard layout.
|
||||||
|
if ((*modifiers & MOD_MASK_SHIFT) && c >= 'a' && c <= 'z')
|
||||||
|
{
|
||||||
|
c += 'a' - 'A';
|
||||||
|
*modifiers &= ~MOD_MASK_SHIFT;
|
||||||
|
}
|
||||||
c += 0x80;
|
c += 0x80;
|
||||||
*modifiers &= ~(MOD_MASK_META | MOD_MASK_ALT);
|
*modifiers &= ~(MOD_MASK_META | MOD_MASK_ALT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1414,
|
||||||
/**/
|
/**/
|
||||||
1413,
|
1413,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user