use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Modifier {
Alt,
Control,
Shift,
Meta,
LeftAlt,
RightAlt,
LeftControl,
RightControl,
LeftShift,
RightShift,
LeftMeta,
RightMeta,
}
impl Modifier {
pub fn as_str(&self) -> &'static str {
match self {
Modifier::Alt => "Alt",
Modifier::Control => "Control",
Modifier::Shift => "Shift",
Modifier::Meta => "Meta",
Modifier::LeftAlt => "LeftAlt",
Modifier::RightAlt => "RightAlt",
Modifier::LeftControl => "LeftControl",
Modifier::RightControl => "RightControl",
Modifier::LeftShift => "LeftShift",
Modifier::RightShift => "RightShift",
Modifier::LeftMeta => "LeftMeta",
Modifier::RightMeta => "RightMeta",
}
}
}
impl fmt::Display for Modifier {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}