1use crate::prelude::*;
2use enigo::Key as EnigoKey;
3
4#[derive(Hash, Debug, Display, Clone, Eq, PartialEq, Serialize, Deserialize)]
6pub enum Key {
7 Ctrl, Shift, Alt, Super,
9
10 A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
12
13 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
15
16 D0, D1, D2, D3, D4, D5, D6, D7, D8, D9,
18
19 N0, N1, N2, N3, N4, N5, N6, N7, N8, N9,
21
22 Plus, Minus, Equal, Star, Slash, Backslash,
24
25 Esc, Tab, CapsLock, NumLock, Space, Enter, Backspace, Delete,
27
28 Left, Right, Up, Down,
30
31 PlayPause, Prev, Next, Stop, VolumeUp, VolumeDown, Mute,
33}
34
35impl ::std::convert::Into<EnigoKey> for Key {
36 fn into(self) -> EnigoKey {
37 match self {
38 Self::Ctrl => EnigoKey::Control,
40 Self::Shift => EnigoKey::Shift,
41 Self::Alt => EnigoKey::Alt,
42 Self::Super => EnigoKey::Meta,
43
44 Self::A => EnigoKey::A,
46 Self::B => EnigoKey::B,
47 Self::C => EnigoKey::C,
48 Self::D => EnigoKey::D,
49 Self::E => EnigoKey::E,
50 Self::F => EnigoKey::F,
51 Self::G => EnigoKey::G,
52 Self::H => EnigoKey::H,
53 Self::I => EnigoKey::I,
54 Self::J => EnigoKey::J,
55 Self::K => EnigoKey::K,
56 Self::L => EnigoKey::L,
57 Self::M => EnigoKey::M,
58 Self::N => EnigoKey::N,
59 Self::O => EnigoKey::O,
60 Self::P => EnigoKey::P,
61 Self::Q => EnigoKey::Q,
62 Self::R => EnigoKey::R,
63 Self::S => EnigoKey::S,
64 Self::T => EnigoKey::T,
65 Self::U => EnigoKey::U,
66 Self::V => EnigoKey::V,
67 Self::W => EnigoKey::W,
68 Self::X => EnigoKey::X,
69 Self::Y => EnigoKey::Y,
70 Self::Z => EnigoKey::Z,
71
72 Self::F1 => EnigoKey::F1,
74 Self::F2 => EnigoKey::F2,
75 Self::F3 => EnigoKey::F3,
76 Self::F4 => EnigoKey::F4,
77 Self::F5 => EnigoKey::F5,
78 Self::F6 => EnigoKey::F6,
79 Self::F7 => EnigoKey::F7,
80 Self::F8 => EnigoKey::F8,
81 Self::F9 => EnigoKey::F9,
82 Self::F10 => EnigoKey::F10,
83 Self::F11 => EnigoKey::F11,
84 Self::F12 => EnigoKey::F12,
85
86 Self::D0 => EnigoKey::Num0,
88 Self::D1 => EnigoKey::Num1,
89 Self::D2 => EnigoKey::Num2,
90 Self::D3 => EnigoKey::Num3,
91 Self::D4 => EnigoKey::Num4,
92 Self::D5 => EnigoKey::Num5,
93 Self::D6 => EnigoKey::Num6,
94 Self::D7 => EnigoKey::Num7,
95 Self::D8 => EnigoKey::Num8,
96 Self::D9 => EnigoKey::Num9,
97
98 Self::N0 => EnigoKey::Numpad0,
100 Self::N1 => EnigoKey::Numpad1,
101 Self::N2 => EnigoKey::Numpad2,
102 Self::N3 => EnigoKey::Numpad3,
103 Self::N4 => EnigoKey::Numpad4,
104 Self::N5 => EnigoKey::Numpad5,
105 Self::N6 => EnigoKey::Numpad6,
106 Self::N7 => EnigoKey::Numpad7,
107 Self::N8 => EnigoKey::Numpad8,
108 Self::N9 => EnigoKey::Numpad9,
109
110 Self::Plus => EnigoKey::Unicode('+'),
112 Self::Minus => EnigoKey::Unicode('-'),
113 Self::Equal => EnigoKey::Unicode('='),
114 Self::Star => EnigoKey::Unicode('*'),
115 Self::Slash => EnigoKey::Unicode('/'),
116 Self::Backslash => EnigoKey::Unicode('\\'),
117
118 Self::Esc => EnigoKey::Escape,
120 Self::Tab => EnigoKey::Tab,
121 Self::CapsLock => EnigoKey::CapsLock,
122 Self::NumLock => EnigoKey::Numlock,
123 Self::Space => EnigoKey::Space,
124 Self::Enter => EnigoKey::Return,
125 Self::Backspace => EnigoKey::Backspace,
126 Self::Delete => EnigoKey::Delete,
127
128 Self::Left => EnigoKey::LeftArrow,
130 Self::Right => EnigoKey::RightArrow,
131 Self::Up => EnigoKey::UpArrow,
132 Self::Down => EnigoKey::DownArrow,
133
134 Self::PlayPause => EnigoKey::MediaPlayPause,
136 Self::Prev => EnigoKey::MediaPrevTrack,
137 Self::Next => EnigoKey::MediaNextTrack,
138 Self::Stop => EnigoKey::MediaStop,
139 Self::VolumeUp => EnigoKey::VolumeUp,
140 Self::VolumeDown => EnigoKey::VolumeDown,
141 Self::Mute => EnigoKey::VolumeMute,
142 }
143 }
144}