muxr_core/protocol/
keyboard_input.rs1use serde::Serialize;
2
3#[derive(rkyv::Archive, Clone, Copy, Debug, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
5pub enum ClientKeyCode {
6 Backspace,
7 Char(char),
8 Down,
9 Enter,
10 Esc,
11 Left,
12 Right,
13 Tab,
14 Unknown,
15 Up,
16}
17
18#[derive(rkyv::Archive, Clone, Copy, Debug, Default, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
20pub struct ClientKeyModifiers {
21 pub alt: bool,
22 pub ctrl: bool,
23 pub shift: bool,
24}
25
26impl ClientKeyModifiers {
27 pub const ALT: Self = Self {
28 alt: true,
29 ctrl: false,
30 shift: false,
31 };
32 pub const CTRL_ALT: Self = Self {
33 alt: true,
34 ctrl: true,
35 shift: false,
36 };
37 pub const NONE: Self = Self {
38 alt: false,
39 ctrl: false,
40 shift: false,
41 };
42 pub const SHIFT: Self = Self {
43 alt: false,
44 ctrl: false,
45 shift: true,
46 };
47 pub const SHIFT_ALT: Self = Self {
48 alt: true,
49 ctrl: false,
50 shift: true,
51 };
52}
53
54#[derive(rkyv::Archive, Clone, Debug, rkyv::Deserialize, Eq, PartialEq, Serialize, rkyv::Serialize)]
56pub struct ClientKey {
57 pub code: ClientKeyCode,
58 pub modifiers: ClientKeyModifiers,
59 pub raw_bytes: Vec<u8>,
60}