mirror of
https://github.com/lotabout/skim.git
synced 2026-09-10 07:16:23 -04:00
fix: correctly bind uppercase keys
This commit is contained in:
parent
5daf7823eb
commit
684bbd2159
118
src/binds.rs
118
src/binds.rs
|
|
@ -151,7 +151,7 @@ pub fn parse_key(key: &str) -> Result<KeyEvent> {
|
|||
}
|
||||
}
|
||||
}
|
||||
let key = parts.last().unwrap_or(&"").to_string().to_lowercase();
|
||||
let key = parts.last().unwrap_or(&"").to_string();
|
||||
|
||||
let keycode: KeyCode;
|
||||
if key.len() == 1 {
|
||||
|
|
@ -179,13 +179,15 @@ pub fn parse_key(key: &str) -> Result<KeyEvent> {
|
|||
"esc" => KeyCode::Esc,
|
||||
"home" => KeyCode::Home,
|
||||
"end" => KeyCode::End,
|
||||
"pgup" | "page-up" => KeyCode::PageUp,
|
||||
"pgdown" | "page-down" => KeyCode::PageDown,
|
||||
"pgup" => KeyCode::PageUp,
|
||||
"pgdown" => KeyCode::PageDown,
|
||||
"change" => KeyCode::F(255),
|
||||
s => return Err(eyre!("Unknown key {}", s)),
|
||||
}
|
||||
}
|
||||
|
||||
debug!("parsed key {keycode:?} and mods {mods:?}");
|
||||
|
||||
Ok(KeyEvent::new(keycode, mods))
|
||||
}
|
||||
|
||||
|
|
@ -256,4 +258,114 @@ mod tests {
|
|||
]
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
fn test_parse_key() {
|
||||
assert_eq!(
|
||||
parse_key("a").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::empty())
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("A").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::SHIFT)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("alt-a").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::ALT)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("alt-A").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::ALT | KeyModifiers::SHIFT)
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("alt-shift-a").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::ALT | KeyModifiers::SHIFT)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("ctrl-a").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::CONTROL)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("ctrl-A").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::CONTROL | KeyModifiers::SHIFT)
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("ctrl-shift-a").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char('a'), KeyModifiers::CONTROL | KeyModifiers::SHIFT)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("f10").unwrap(),
|
||||
KeyEvent::new(KeyCode::F(10), KeyModifiers::empty())
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
parse_key("space").unwrap(),
|
||||
KeyEvent::new(KeyCode::Char(' '), KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("enter").unwrap(),
|
||||
KeyEvent::new(KeyCode::Enter, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("bspace").unwrap(),
|
||||
KeyEvent::new(KeyCode::Backspace, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("bs").unwrap(),
|
||||
KeyEvent::new(KeyCode::Backspace, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("up").unwrap(),
|
||||
KeyEvent::new(KeyCode::Up, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("down").unwrap(),
|
||||
KeyEvent::new(KeyCode::Down, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("left").unwrap(),
|
||||
KeyEvent::new(KeyCode::Left, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("right").unwrap(),
|
||||
KeyEvent::new(KeyCode::Right, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("tab").unwrap(),
|
||||
KeyEvent::new(KeyCode::Tab, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("btab").unwrap(),
|
||||
KeyEvent::new(KeyCode::BackTab, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("esc").unwrap(),
|
||||
KeyEvent::new(KeyCode::Esc, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("home").unwrap(),
|
||||
KeyEvent::new(KeyCode::Home, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("end").unwrap(),
|
||||
KeyEvent::new(KeyCode::End, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("pgup").unwrap(),
|
||||
KeyEvent::new(KeyCode::PageUp, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("pgdown").unwrap(),
|
||||
KeyEvent::new(KeyCode::PageDown, KeyModifiers::empty())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_key("change").unwrap(),
|
||||
KeyEvent::new(KeyCode::F(255), KeyModifiers::empty())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ const KEYS_SS: &str = "
|
|||
* alt-down
|
||||
* alt-left
|
||||
* alt-right
|
||||
* alt-enter (alt-ctrl-m)
|
||||
* alt-enter
|
||||
* alt-space
|
||||
* alt-bspace (alt-bs)
|
||||
* alt-/
|
||||
|
|
@ -108,8 +108,8 @@ const KEYS_SS: &str = "
|
|||
* right
|
||||
* home
|
||||
* end
|
||||
* pgup (page-up)
|
||||
* pgdn (page-down)
|
||||
* pgup
|
||||
* pgdn
|
||||
* shift-up
|
||||
* shift-down
|
||||
* shift-left
|
||||
|
|
|
|||
Loading…
Reference in a new issue