mod aliases;
mod shortcut;
pub use aliases::{normalize_key_name, normalize_modifier_name};
pub use shortcut::{
parse_input, parse_shortcut_flexible, parse_shortcut_sequence, parse_shortcut_with_aliases,
Shortcut,
};
pub use crate::mapping::standard::{parse_key_ignore_case, parse_modifier_ignore_case};
pub fn parse_modifier_with_aliases(s: &str) -> Result<crate::Modifier, crate::KeyParseError> {
if s.is_empty() {
return Err(crate::KeyParseError::UnknownModifier(
"empty string".to_string(),
));
}
let input_lower = s.to_lowercase();
if let Some(&standard_name) = aliases::MODIFIER_ALIASES.get(input_lower.as_str()) {
return crate::mapping::standard::STANDARD_MODIFIER_MAPPINGS
.iter()
.find(|(name, _, _, _, _)| name.eq_ignore_ascii_case(standard_name))
.map(|(_, modifier, _, _, _)| *modifier)
.ok_or_else(|| crate::KeyParseError::UnknownModifier(s.to_string()));
}
parse_modifier_ignore_case(s)
}