keyboard_codes/types/
modifier.rs1use std::fmt;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6pub enum Modifier {
7 Alt,
9 Control,
11 Shift,
13 Meta,
15 LeftAlt,
17 RightAlt,
19 LeftControl,
21 RightControl,
23 LeftShift,
25 RightShift,
27 LeftMeta,
29 RightMeta,
31}
32
33impl Modifier {
34 pub fn as_str(&self) -> &'static str {
36 match self {
37 Modifier::Alt => "Alt",
38 Modifier::Control => "Control",
39 Modifier::Shift => "Shift",
40 Modifier::Meta => "Meta",
41 Modifier::LeftAlt => "LeftAlt",
42 Modifier::RightAlt => "RightAlt",
43 Modifier::LeftControl => "LeftControl",
44 Modifier::RightControl => "RightControl",
45 Modifier::LeftShift => "LeftShift",
46 Modifier::RightShift => "RightShift",
47 Modifier::LeftMeta => "LeftMeta",
48 Modifier::RightMeta => "RightMeta",
49 }
50 }
51}
52
53impl fmt::Display for Modifier {
54 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 write!(f, "{}", self.as_str())
56 }
57}