watchexec_events/
keyboard.rs1#[derive(Debug, Clone, PartialEq, Eq)]
2#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3#[cfg_attr(feature = "serde", serde(rename_all = "kebab-case"))]
4#[non_exhaustive]
5pub enum Keyboard {
7 Eof,
9
10 Key {
12 key: KeyCode,
14
15 #[cfg_attr(
17 feature = "serde",
18 serde(default, skip_serializing_if = "Modifiers::is_empty")
19 )]
20 modifiers: Modifiers,
21 },
22}
23
24#[derive(Debug, Clone, PartialEq, Eq)]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27#[cfg_attr(feature = "serde", serde(rename_all = "kebab-case"))]
28#[non_exhaustive]
29pub enum KeyCode {
30 Char(char),
32 Enter,
34 Escape,
36}
37
38#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
40#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
41pub struct Modifiers {
42 #[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "is_false"))]
44 pub ctrl: bool,
45 #[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "is_false"))]
47 pub alt: bool,
48 #[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "is_false"))]
50 pub shift: bool,
51}
52
53#[cfg(feature = "serde")]
54fn is_false(b: &bool) -> bool {
55 !b
56}
57
58impl Modifiers {
59 #[must_use]
61 pub fn is_empty(&self) -> bool {
62 !self.ctrl && !self.alt && !self.shift
63 }
64}