keymap: Allow upper-case keys in keybinds (#27813)

Reverts the error behavior introduced in #27558. Upper-case keys in
keybindings no longer generate errors, instead they are transformed into
`shift-{KEY}`
e.g. `ctrl-N` becomes `ctrl-shift-n`

The behavior introduced in #27558 where "special" keys such as function
keys, `control`, `shift`, etc. Are parsed case-insensitively is
preserved.

Release Notes:
- Improved how upper-case characters are handled in keybinds. "special"
keys such as the function keys, `control`, `shift`, etc. are now parsed
case-insensitively, so for example `F8`, `CTRL`, `SHIFT` are now
acceptable alternatives to `f8`, `ctrl`, and `shift` when declaring
keybindings. Additionally, upper-case (ascii) characters will now be
converted explicitly to `shift` + the lowercase version of the
character, to match the Vim behavior.
NOTE: Release notes above should replace the release notes from #27558
This commit is contained in:
Ben Kunkle 2025-03-31 18:31:01 -04:00 committed by GitHub
parent 8a212be0b1
commit a1bef28da3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 11 additions and 43 deletions

View file

@ -398,7 +398,7 @@ mod test {
false
),
to_esc_str(
&Keystroke::parse_case_insensitive(&format!("ctrl-{}", upper)).unwrap(),
&Keystroke::parse(&format!("ctrl-{}", upper)).unwrap(),
&mode,
false
),
@ -415,7 +415,7 @@ mod test {
for character in ascii_printable {
assert_eq!(
to_esc_str(
&Keystroke::parse_case_insensitive(&format!("alt-{}", character)).unwrap(),
&Keystroke::parse(&format!("alt-{}", character)).unwrap(),
&TermMode::NONE,
true
)