smart_keymap/key/
callback.rs1#![doc = include_str!("doc_de_callback.md")]
2
3use serde::Deserialize;
4
5use crate::key;
6
7use crate::keymap::KeymapCallback;
8
9#[derive(Deserialize, Debug, Clone, Copy, PartialEq)]
11pub struct Key {
12 pub keymap_callback: KeymapCallback,
14}
15
16impl Key {
17 pub const fn new(keymap_callback: KeymapCallback) -> Self {
19 Key { keymap_callback }
20 }
21}
22
23impl key::Key for Key {
24 type Context = crate::init::Context;
25 type Event = crate::init::Event;
26 type PendingKeyState = crate::init::PendingKeyState;
27 type KeyState = crate::init::KeyState;
28
29 fn new_pressed_key(
30 &self,
31 _context: &Self::Context,
32 _key_path: key::KeyPath,
33 ) -> (
34 key::PressedKeyResult<Self::PendingKeyState, Self::KeyState>,
35 key::KeyEvents<Self::Event>,
36 ) {
37 let &Key { keymap_callback } = self;
38 let pkr = key::PressedKeyResult::NewPressedKey(key::NewPressedKey::NoOp);
39 let km_ev = crate::keymap::KeymapEvent::Callback(keymap_callback);
40 let pke = key::KeyEvents::event(key::Event::Keymap(km_ev));
41 (pkr, pke)
42 }
43
44 fn handle_event(
45 &self,
46 _pending_state: &mut Self::PendingKeyState,
47 _context: &Self::Context,
48 _key_path: key::KeyPath,
49 _event: key::Event<Self::Event>,
50 ) -> (Option<key::NewPressedKey>, key::KeyEvents<Self::Event>) {
51 panic!()
52 }
53
54 fn lookup(
55 &self,
56 _path: &[u16],
57 ) -> &dyn key::Key<
58 Context = Self::Context,
59 Event = Self::Event,
60 PendingKeyState = Self::PendingKeyState,
61 KeyState = Self::KeyState,
62 > {
63 self
64 }
65}