msw_hotkey/hotkey/
modifier.rs1use std::str::FromStr;
2
3use super::parse_hotkey_error::ParseHotkeyError;
4
5#[derive(Debug, PartialEq)]
6pub enum Modifier {
7 Alt = 1,
8 Ctrl = 2,
9 Shift = 4,
10 Win = 8,
11}
12
13impl From<Modifier> for u8 {
14 fn from(m: Modifier) -> Self {
15 m as u8
16 }
17}
18
19impl FromStr for Modifier {
20 type Err = ParseHotkeyError;
21
22 fn from_str(s: &str) -> Result<Self, Self::Err> {
23 let lower_case_s = s.to_ascii_lowercase();
24 if lower_case_s.is_empty() {
25 return Err(ParseHotkeyError::MissingModifier);
26 }
27 match lower_case_s.as_str() {
28 "ctrl" => Ok(Modifier::Ctrl),
29 "alt" => Ok(Modifier::Alt),
30 "shift" => Ok(Modifier::Shift),
31 "win" => Ok(Modifier::Win),
32 _ => Err(ParseHotkeyError::UnexpectedModifier),
33 }
34 }
35}