edtui_papier/input/
key.rs1use crossterm::event::{KeyCode, KeyEvent};
2
3#[derive(Debug, Clone, Eq, PartialEq, Hash)]
4pub enum Key {
5 Char(char),
6 Down,
7 Up,
8 Right,
9 Left,
10 Enter,
11 Esc,
12 Backspace,
13 None,
14}
15
16impl From<KeyEvent> for Key {
17 fn from(key: KeyEvent) -> Self {
18 match key.code {
19 KeyCode::Char(c) => Key::Char(c),
20 KeyCode::Enter => Key::Enter,
21 KeyCode::Down => Key::Down,
22 KeyCode::Up => Key::Up,
23 KeyCode::Right => Key::Right,
24 KeyCode::Left => Key::Left,
25 KeyCode::Esc => Key::Esc,
26 KeyCode::Backspace => Key::Backspace,
27 _ => Key::None,
28 }
29 }
30}
31
32impl From<Key> for KeyEvent {
33 fn from(val: Key) -> Self {
34 match val {
35 Key::Char(c) => KeyEvent::from(KeyCode::Char(c)),
36 Key::Enter => KeyEvent::from(KeyCode::Enter),
37 Key::Down => KeyEvent::from(KeyCode::Down),
38 Key::Up => KeyEvent::from(KeyCode::Up),
39 Key::Right => KeyEvent::from(KeyCode::Right),
40 Key::Left => KeyEvent::from(KeyCode::Left),
41 Key::Esc => KeyEvent::from(KeyCode::Esc),
42 Key::Backspace => KeyEvent::from(KeyCode::Backspace),
43 Key::None => KeyEvent::from(KeyCode::Null),
44 }
45 }
46}