mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: support case insensitive special keys in keymappings (#1082)
Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
parent
2eec94652a
commit
4c46862506
1 changed files with 38 additions and 38 deletions
|
|
@ -76,46 +76,46 @@ impl FromStr for Key {
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut it = s[1..s.len() - 1].split_inclusive('-').peekable();
|
let mut it = s[1..s.len() - 1].split_inclusive('-').peekable();
|
||||||
while let Some(x) = it.next() {
|
while let Some(next) = it.next() {
|
||||||
match x {
|
match next.to_ascii_lowercase().as_str() {
|
||||||
"S-" => key.shift = true,
|
"s-" => key.shift = true,
|
||||||
"C-" => key.ctrl = true,
|
"c-" => key.ctrl = true,
|
||||||
"A-" => key.alt = true,
|
"a-" => key.alt = true,
|
||||||
"D-" => key.super_ = true,
|
"d-" => key.super_ = true,
|
||||||
|
|
||||||
"Space" => key.code = KeyCode::Char(' '),
|
"space" => key.code = KeyCode::Char(' '),
|
||||||
"Backspace" => key.code = KeyCode::Backspace,
|
"backspace" => key.code = KeyCode::Backspace,
|
||||||
"Enter" => key.code = KeyCode::Enter,
|
"enter" => key.code = KeyCode::Enter,
|
||||||
"Left" => key.code = KeyCode::Left,
|
"left" => key.code = KeyCode::Left,
|
||||||
"Right" => key.code = KeyCode::Right,
|
"right" => key.code = KeyCode::Right,
|
||||||
"Up" => key.code = KeyCode::Up,
|
"up" => key.code = KeyCode::Up,
|
||||||
"Down" => key.code = KeyCode::Down,
|
"down" => key.code = KeyCode::Down,
|
||||||
"Home" => key.code = KeyCode::Home,
|
"home" => key.code = KeyCode::Home,
|
||||||
"End" => key.code = KeyCode::End,
|
"end" => key.code = KeyCode::End,
|
||||||
"PageUp" => key.code = KeyCode::PageUp,
|
"pageup" => key.code = KeyCode::PageUp,
|
||||||
"PageDown" => key.code = KeyCode::PageDown,
|
"pagedown" => key.code = KeyCode::PageDown,
|
||||||
"Tab" => key.code = KeyCode::Tab,
|
"tab" => key.code = KeyCode::Tab,
|
||||||
"BackTab" => key.code = KeyCode::BackTab,
|
"backtab" => key.code = KeyCode::BackTab,
|
||||||
"Delete" => key.code = KeyCode::Delete,
|
"delete" => key.code = KeyCode::Delete,
|
||||||
"Insert" => key.code = KeyCode::Insert,
|
"insert" => key.code = KeyCode::Insert,
|
||||||
"F1" => key.code = KeyCode::F(1),
|
"f1" => key.code = KeyCode::F(1),
|
||||||
"F2" => key.code = KeyCode::F(2),
|
"f2" => key.code = KeyCode::F(2),
|
||||||
"F3" => key.code = KeyCode::F(3),
|
"f3" => key.code = KeyCode::F(3),
|
||||||
"F4" => key.code = KeyCode::F(4),
|
"f4" => key.code = KeyCode::F(4),
|
||||||
"F5" => key.code = KeyCode::F(5),
|
"f5" => key.code = KeyCode::F(5),
|
||||||
"F6" => key.code = KeyCode::F(6),
|
"f6" => key.code = KeyCode::F(6),
|
||||||
"F7" => key.code = KeyCode::F(7),
|
"f7" => key.code = KeyCode::F(7),
|
||||||
"F8" => key.code = KeyCode::F(8),
|
"f8" => key.code = KeyCode::F(8),
|
||||||
"F9" => key.code = KeyCode::F(9),
|
"f9" => key.code = KeyCode::F(9),
|
||||||
"F10" => key.code = KeyCode::F(10),
|
"f10" => key.code = KeyCode::F(10),
|
||||||
"F11" => key.code = KeyCode::F(11),
|
"f11" => key.code = KeyCode::F(11),
|
||||||
"F12" => key.code = KeyCode::F(12),
|
"f12" => key.code = KeyCode::F(12),
|
||||||
"Esc" => key.code = KeyCode::Esc,
|
"esc" => key.code = KeyCode::Esc,
|
||||||
|
|
||||||
c if it.peek().is_none() => {
|
_ => match next {
|
||||||
key.code = KeyCode::Char(c.chars().next().unwrap());
|
s if it.peek().is_none() => key.code = KeyCode::Char(s.chars().next().unwrap()),
|
||||||
}
|
s => bail!("unknown key: {s}"),
|
||||||
k => bail!("unknown key: {k}"),
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue