diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-05-28 20:15:56 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-05-28 20:15:56 +1000 |
| commit | fb9dbfed2a903fbf38f37db904c960d69973fb8b (patch) | |
| tree | fa620c792a994c5116b4b4b963b0ef17ff0b206b /src | |
| parent | e4a23a64faf56b5822fee13d976e038174408238 (diff) | |
Canonicalize <s-ascii> into uppercase in csi key parsing code
Fixes #4159
Diffstat (limited to 'src')
| -rw-r--r-- | src/ncurses_ui.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ncurses_ui.cc b/src/ncurses_ui.cc index 18be7bd2..31c5269a 100644 --- a/src/ncurses_ui.cc +++ b/src/ncurses_ui.cc @@ -725,7 +725,13 @@ Optional<Key> NCursesUI::get_next_key() auto masked_key = [&](Codepoint key) { int mask = std::max(params[1] - 1, 0); - return Key{parse_mask(mask), key}; + Key::Modifiers modifiers = parse_mask(mask); + if (is_basic_alpha(key) and (modifiers & Key::Modifiers::Shift)) + { + modifiers &= ~Key::Modifiers::Shift; + key = to_upper(key); + } + return Key{modifiers, key}; }; switch (c) |
