pc_remote/input/
key.rs

1use crate::prelude::*;
2use enigo::Key as EnigoKey;
3
4// The keyboard key codes
5#[derive(Hash, Debug, Display, Clone, Eq, PartialEq, Serialize, Deserialize)]
6pub enum Key {
7    // Modifiers:
8    Ctrl, Shift, Alt, Super,
9
10    // Characters:
11    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    // Functions:
14    F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
15
16    // Digitals:
17    D0, D1, D2, D3, D4, D5, D6, D7, D8, D9,
18
19    // NumPad:
20    N0, N1, N2, N3, N4, N5, N6, N7, N8, N9,
21
22    // Symbols:
23    Plus, Minus, Equal, Star, Slash, Backslash,
24    
25    // Special keys:
26    Esc, Tab, CapsLock, NumLock, Space, Enter, Backspace, Delete,
27
28    // Arrows:
29    Left, Right, Up, Down,
30
31    // Media:
32    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            // Modifiers:
39            Self::Ctrl  => EnigoKey::Control,
40            Self::Shift => EnigoKey::Shift,
41            Self::Alt   => EnigoKey::Alt,
42            Self::Super => EnigoKey::Meta,
43
44            // Characters:
45            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            // Functions:
73            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            // Digitals:
87            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            // NumPad:
99            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            // Symbols:
111            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            // Special keys:
119            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            // Arrows:
129            Self::Left => EnigoKey::LeftArrow,
130            Self::Right => EnigoKey::RightArrow,
131            Self::Up => EnigoKey::UpArrow,
132            Self::Down => EnigoKey::DownArrow,
133
134            // Media:
135            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}