smart_keymap/key/
custom.rs1use core::fmt::Debug;
2
3use serde::Deserialize;
4
5use crate::key;
6
7#[derive(Deserialize, Debug, Clone, Copy, PartialEq)]
9pub struct Ref(pub u8);
10
11#[derive(Debug, Clone, Copy, PartialEq)]
13pub struct Context;
14
15#[derive(Debug, Clone, Copy, PartialEq)]
17pub struct Event;
18
19#[derive(Debug, Clone, Copy, PartialEq)]
21pub struct PendingKeyState;
22
23#[derive(Debug, Clone, Copy, PartialEq)]
25pub struct KeyState;
26
27#[derive(Debug, Clone, Copy, PartialEq)]
29pub struct System;
30
31impl System {
32 pub const fn new() -> Self {
34 Self
35 }
36}
37
38impl Default for System {
39 fn default() -> Self {
40 Self::new()
41 }
42}
43
44impl<R> key::System<R> for System {
45 type Ref = Ref;
46 type Context = Context;
47 type Event = Event;
48 type PendingKeyState = PendingKeyState;
49 type KeyState = KeyState;
50
51 fn new_pressed_key(
52 &self,
53 _keymap_index: u16,
54 _context: &Self::Context,
55 _key_ref: Ref,
56 ) -> (
57 key::PressedKeyResult<R, Self::PendingKeyState, Self::KeyState>,
58 key::KeyEvents<Self::Event>,
59 ) {
60 let pkr = key::PressedKeyResult::Resolved(KeyState);
61 let pke = key::KeyEvents::no_events();
62 (pkr, pke)
63 }
64
65 fn update_pending_state(
66 &self,
67 _pending_state: &mut Self::PendingKeyState,
68 _keymap_index: u16,
69 _context: &Self::Context,
70 _key_ref: Ref,
71 _event: key::Event<Self::Event>,
72 ) -> (Option<key::NewPressedKey<R>>, key::KeyEvents<Self::Event>) {
73 panic!()
74 }
75
76 fn update_state(
77 &self,
78 _key_state: &mut Self::KeyState,
79 _ref: &Self::Ref,
80 _context: &Self::Context,
81 _keymap_index: u16,
82 _event: key::Event<Self::Event>,
83 ) -> key::KeyEvents<Self::Event> {
84 panic!()
85 }
86
87 fn key_output(
88 &self,
89 Ref(custom_code): &Self::Ref,
90 _key_state: &Self::KeyState,
91 ) -> Option<key::KeyOutput> {
92 Some(key::KeyOutput::from_custom_code(*custom_code))
93 }
94}