edtui_papier/input/
key.rs

1use 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}